X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleFileEdit.java;h=101886812f2d6877648a8c53c4a123eb7f14f198;hb=4368e83f65cd067f2ac70668e35cd1ab4432c4d6;hp=93033474251c31651318a4153bdaa66e50c16ab3;hpb=e44404fac09c8da04b5ef7874160cb91f8fc98a9;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleFileEdit.java b/source/mircoders/servlet/ServletModuleFileEdit.java index 93033474..10188681 100755 --- a/source/mircoders/servlet/ServletModuleFileEdit.java +++ b/source/mircoders/servlet/ServletModuleFileEdit.java @@ -30,90 +30,42 @@ 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.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -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 mircoders.global.MirGlobal; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.util.*; /* * ServletModuleFileEdit - * Allows one to do a basic edit of a file in a directory specified * in the config file. * - * @author $Author: rhindes $ - * @version $Revision: 1.13.2.9 $ $Date: 2005/02/10 16:22:27 $ + * @author $Author: zapata $ + * @version $Revision: 1.13.2.12 $ $Date: 2006/06/01 17:57:21 $ * */ -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++) { @@ -122,7 +74,7 @@ public class ServletModuleFileEdit extends ServletModule 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); @@ -131,14 +83,14 @@ public class ServletModuleFileEdit extends ServletModule 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() { @@ -212,7 +164,7 @@ public class ServletModuleFileEdit extends ServletModule 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()); @@ -222,9 +174,9 @@ public class ServletModuleFileEdit extends ServletModule } logAdminUsage(aRequest, f.getAbsolutePath(), "object modified"); -/* + MirGlobal.getChangeEngine().getTracker().addChange(f.getCanonicalPath()); -*/ + editFile(directory, filename, subDirectory, aRequest, aResponse); } } @@ -239,19 +191,19 @@ public class ServletModuleFileEdit extends ServletModule 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); } @@ -270,12 +222,11 @@ public class ServletModuleFileEdit extends ServletModule } } - 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 { @@ -295,8 +246,9 @@ public class ServletModuleFileEdit extends ServletModule // TODO read array char[] c = new char[4096]; int read; - while ( (read=in.read(c)) != -1) + while ((read=in.read(c)) != -1) { out.write(c, 0, read); + } in.close(); out.close(); @@ -314,16 +266,16 @@ public class ServletModuleFileEdit extends ServletModule } } - 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()); } @@ -331,4 +283,35 @@ public class ServletModuleFileEdit extends ServletModule 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; + } + } + }