import java.io.*;
import java.util.*;
+import org.apache.oro.text.regex.MalformedPatternException;
+
/*
* ServletModuleFileEdit -
* Allows one to do a basic edit of a file in a directory specified
* in the config file.
*
* @author $Author: zapata $
- * @version $Revision: 1.13.2.14 $ $Date: 2006/12/25 20:10:23 $
+ * @version $Revision: 1.13.2.15 $ $Date: 2007/12/15 00:24:44 $
*
*/
public class ServletModuleFileEdit extends AdminServletModule {
+ // todo: subdirectories use too many /'s
private Map directories;
private List directoryNames;
else {
String name = (String) parts.get(0);
String directory = (String) parts.get(1);
- String filter = (String) parts.get(2);
+ FilenameFilter filter;
+ try {
+ filter = new FileRoutines.RegExpFileFilter((String) parts.get(2));
+ }
+ catch (MalformedPatternException e) {
+ throw new ServletModuleFailure("Invalid regular expression for file edit: " + parts.get(2));
+ }
String recursive = (String) parts.get(3);
directories.put(name, new FileEditDirectory(name, directory, filter,
public FileEditDirectory getDirectory(HttpServletRequest aRequest) throws ServletModuleExc {
FileEditDirectory result = (FileEditDirectory) directories.get(aRequest.getParameter("entry"));
- if (result == null)
+
+ if (result == null) {
throw new ServletModuleExc("Unknown entry: " + aRequest.getParameter("entry"));
+ }
return result;
}
public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
- listSubDirectory(getDirectory(aRequest), "/", aRequest, aResponse);
+ listSubDirectory(getDirectory(aRequest), "", aRequest, aResponse);
}
public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc {
String filename = requestParser.getParameter("filename");
String subDirectory = requestParser.getParameterWithDefault("subdirectory", "");
- if (filename == null)
+ if (filename == null) {
throw new ServletModuleExc("No filename specified");
+ }
editFile(getDirectory(aRequest), filename, subDirectory, aRequest, aResponse);
}
String directoryName = requestParser.getParameter("directory");
String subDirectoryName = requestParser.getParameter("subdirectory");
- if (directoryName==null | subDirectoryName==null)
+ if (directoryName==null || subDirectoryName==null)
throw new ServletModuleExc("No directory/subDirectory specified");
listSubDirectory(getDirectory(aRequest), subDirectoryName+File.separator+directoryName, aRequest, aResponse);
public void listSubDirectory(FileEditDirectory aDirectory, String aSubDirectory, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc
{
try {
- Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
+ Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse,
+ new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)});
File dir = new File(aDirectory.getRootDirectory(), aSubDirectory);
if (!isDirectoryValid(aDirectory, dir) || !dir.isDirectory()) {
private class FileEditDirectory {
private String name;
- private FileRoutines.RegExpFileFilter filter;
+ private FilenameFilter filter;
private File rootDirectory;
private boolean recursive;
- public FileEditDirectory(String aName, String aRootDirectory, String aFilter, boolean aRecursive) {
+ public FileEditDirectory(String aName, String aRootDirectory, FilenameFilter aFilter, boolean aRecursive) {
name = aName;
rootDirectory = new File(aRootDirectory);
- filter = new FileRoutines.RegExpFileFilter(aFilter);
+ filter = aFilter;
recursive = aRecursive;
}
return name;
}
- public FileRoutines.RegExpFileFilter getFilter() {
+ public FilenameFilter getFilter() {
return filter;
}