package mircoders.servlet;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.FilenameFilter;
-import java.io.StringWriter;
-import java.util.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import mir.log.LoggerWrapper;
-import mir.servlet.ServletModule;
+import mir.servlet.AdminServletModule;
import mir.servlet.ServletModuleExc;
import mir.servlet.ServletModuleFailure;
-import mir.util.FileFunctions;
+import mir.util.FileRoutines;
import mir.util.HTTPRequestParser;
import mir.util.StringRoutines;
import mir.util.URLBuilder;
+import mir.changetracker.ChangeType;
+import mircoders.global.MirGlobal;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.util.*;
/*
* ServletModuleFileEdit -
* in the config file.
*
* @author $Author: zapata $
- * @version $Revision: 1.13.2.8 $ $Date: 2005/01/09 20:37:13 $
+ * @version $Revision: 1.13.2.13 $ $Date: 2006/11/11 15:48:50 $
*
*/
-public class ServletModuleFileEdit extends ServletModule
-{
- private static ServletModuleFileEdit instance = new ServletModuleFileEdit();
- public static ServletModule getInstance() { return instance; }
-
+public class ServletModuleFileEdit extends AdminServletModule {
private Map directories;
private List directoryNames;
private FilenameFilter dirFilter;
- private class FileEditDirectory {
- private String name;
- private FileFunctions.RegExpFileFilter filter;
- private File rootDirectory;
- private boolean recursive;
-
- public FileEditDirectory(String aName, String aRootDirectory, String aFilter, boolean aRecursive) {
- name = aName;
- rootDirectory = new File(aRootDirectory);
- filter = new FileFunctions.RegExpFileFilter(aFilter);
- recursive = aRecursive;
- }
-
- public String getName() {
- return name;
- }
-
- public FileFunctions.RegExpFileFilter getFilter() {
- return filter;
- }
-
- public File getRootDirectory() {
- return rootDirectory;
- }
-
- public boolean getRecursive() {
- return recursive;
- }
- }
-
- private ServletModuleFileEdit() {
- super();
-
- logger = new LoggerWrapper("ServletModule.FileEdit");
-
+ public ServletModuleFileEdit() {
directories = new HashMap();
directoryNames = new ArrayList();
- String settings[] = configuration.getStringArray("ServletModule.FileEdit.Configuration");
+ String settings[] =
+ getConfiguration().getStringArray("ServletModule.FileEdit.Configuration");
if (settings!=null) {
for (int i = 0; i < settings.length; i++) {
if (setting.length() > 0) {
List parts = StringRoutines.splitStringWithEscape(setting, ':', '\\');
if (parts.size() != 4) {
- logger.error("config error: " + settings[i] + ", 4 parts expected");
+ getLogger().error("config error: " + settings[i] + ", 4 parts expected");
}
else {
String name = (String) parts.get(0);
String recursive = (String) parts.get(3);
directories.put(name, new FileEditDirectory(name, directory, filter,
- recursive.equals("1") || recursive.toLowerCase().equals("y")));
+ "1".equals(recursive) || "y".equals(recursive.toLowerCase())));
directoryNames.add(name);
}
}
}
}
- dirFilter = new FileFunctions.DirectoryFilter();
+ dirFilter = new FileRoutines.DirectoryFilter();
}
public List getEntries() {
try {
File f = new File(new File(directory.getRootDirectory(), subDirectory), filename);
- if (validateDirectory(directory, f)) {
+ if (isDirectoryValid(directory, f)) {
FileWriter out = new FileWriter(f);
try {
out.write(text.toCharArray());
}
logAdminUsage(aRequest, f.getAbsolutePath(), "object modified");
-/*
- MirGlobal.getChangeEngine().getTracker().addChange(f.getCanonicalPath());
-*/
+
+ MirGlobal.getChangeEngine().getTracker().addChange(f.getCanonicalPath(), ChangeType.MODIFICATION);
+
editFile(directory, filename, subDirectory, aRequest, aResponse);
}
}
Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
File dir = new File(aDirectory.getRootDirectory(), aSubDirectory);
- if (!validateDirectory(aDirectory, dir) || !dir.isDirectory()) {
+ if (!isDirectoryValid(aDirectory, dir) || !dir.isDirectory()) {
dir = aDirectory.getRootDirectory();
aSubDirectory = "";
}
- responseData.put("filelist", FileFunctions.getDirectoryContentsAsList(dir, aDirectory.getFilter()));
+ responseData.put("filelist", FileRoutines.getDirectoryContentsAsList(dir, aDirectory.getFilter()));
if (aDirectory.getRecursive()) {
List dirs = new ArrayList();
if (!dir.getCanonicalPath().equals(aDirectory.getRootDirectory().getCanonicalPath()))
responseData.put("updir", new File(aSubDirectory).getParent());
- dirs.addAll(FileFunctions.getDirectoryContentsAsList(dir, dirFilter));
+ dirs.addAll(FileRoutines.getDirectoryContentsAsList(dir, dirFilter));
responseData.put("dirlist", dirs);
}
}
}
- public void editFile(FileEditDirectory aDirectory, String aFileName, String aSubDirectory, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc
- {
+ public void editFile(FileEditDirectory aDirectory, String aFileName, String aSubDirectory, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
try {
File f = new File(new File(aDirectory.getRootDirectory(), aSubDirectory), aFileName);
- if (!validateDirectory(aDirectory, f) || f.isDirectory() || !validateFile(aDirectory, f)) {
+ if (!isDirectoryValid(aDirectory, f) || f.isDirectory() || !isFileValid(aDirectory, f)) {
listSubDirectory(aDirectory, "", aRequest, aResponse);
}
else {
// TODO read array
char[] c = new char[4096];
- int read;;
- while ( (read=in.read(c)) != -1)
+ int read;
+ while ((read=in.read(c)) != -1) {
out.write(c, 0, read);
+ }
in.close();
out.close();
}
}
- protected boolean validateDirectory(FileEditDirectory aDirectory, File aFile) {
+ private boolean isDirectoryValid(FileEditDirectory aDirectory, File aFile) {
try {
- return (aFile.getCanonicalPath().startsWith(aDirectory.getRootDirectory().getCanonicalPath()));
+ return aFile.getCanonicalPath().startsWith(aDirectory.getRootDirectory().getCanonicalPath());
}
catch (Throwable t) {
return false;
}
}
- protected boolean validateFile(FileEditDirectory aDirectory, File aFile) {
+ private boolean isFileValid(FileEditDirectory aDirectory, File aFile) {
try {
return aDirectory.getFilter().accept(aFile.getParentFile(), aFile.getName());
}
return false;
}
}
+
+ private class FileEditDirectory {
+ private String name;
+ private FileRoutines.RegExpFileFilter filter;
+ private File rootDirectory;
+ private boolean recursive;
+
+ public FileEditDirectory(String aName, String aRootDirectory, String aFilter, boolean aRecursive) {
+ name = aName;
+ rootDirectory = new File(aRootDirectory);
+ filter = new FileRoutines.RegExpFileFilter(aFilter);
+ recursive = aRecursive;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public FileRoutines.RegExpFileFilter getFilter() {
+ return filter;
+ }
+
+ public File getRootDirectory() {
+ return rootDirectory;
+ }
+
+ public boolean getRecursive() {
+ return recursive;
+ }
+ }
+
}