servlet module FileEdit, allows one to edit files on the filesystem.
[mir.git] / source / mircoders / servlet / ServletModuleFileEdit.java
1 package mircoders.servlet;
2
3 import java.io.*;
4 import java.net.*;
5 import javax.servlet.http.*;
6 import javax.servlet.*;
7 import freemarker.template.*;
8 import mir.servlet.*;
9 import mir.misc.*;
10 import mir.misc.FileExtFilter;
11
12 /*
13  *  ServletModuleFileEdit -
14  *  Allows one to do a basic edit of a file in a directory specified
15  *  in the config file.
16  *
17  * @author $Author: mh $
18  * @version $Revision: 1.1 $ $Date: 2002/08/09 17:39:50 $
19  *
20  */
21
22 public class ServletModuleFileEdit extends ServletModule
23 {
24
25         // Singelton / Kontruktor
26
27         private static ServletModuleFileEdit instance =
28                                                 new ServletModuleFileEdit();
29         public static ServletModule getInstance() { return instance; }
30
31   private String _dirName;
32   private String _extName;
33
34         private ServletModuleFileEdit() {
35
36                 theLog = Logfile.getInstance(
37         MirConfig.getPropWithHome("ServletModule.FileEdit.Logfile"));
38                 _dirName = MirConfig.getProp("ServletModule.FileEdit.FileDirectory");
39                 _extName = MirConfig.getProp("ServletModule.FileEdit.ExtFilter");
40
41                 templateListString =
42       MirConfig.getProp("ServletModule.FileEdit.ListTemplate");
43                 templateObjektString =
44       MirConfig.getProp("ServletModule.FileEdit.ObjektTemplate");
45                 templateConfirmString =
46       MirConfig.getProp("ServletModule.FileEdit.ConfirmTemplate");
47         }
48
49         public void list(HttpServletRequest req, HttpServletResponse res)
50                 throws ServletModuleException
51         {
52                 // fetch and deliver
53                 try {
54                         SimpleHash mergeData = new SimpleHash();
55                         String offset = req.getParameter("offset");
56                         if (offset==null || offset.equals("")) offset="0";
57                         mergeData.put("offset",offset);
58       File dir = new File(_dirName);
59       System.out.println("DIRNAME: "+_dirName);
60       FileExtFilter extFilter = new FileExtFilter(_extName);
61       String[] dirEntries = dir.list(extFilter);
62       SimpleList theList = new SimpleList();
63       for ( int i = 0; i < dirEntries.length; ++i ) {
64         System.out.println(" FILE: "+dirEntries[i]);
65         theList.add(dirEntries[i]);
66       }
67       mergeData.put("filelist",theList);
68
69                         // raus damit
70                         HTMLTemplateProcessor.process(res, templateListString, mergeData, res.getWriter(), getLocale(req));
71                 }
72                 catch (IOException e) {throw new ServletModuleException(e.toString());}
73                 catch (Exception e) {throw new ServletModuleException(e.toString());}
74         }
75
76   public void edit(HttpServletRequest req, HttpServletResponse res)
77     throws ServletModuleException
78   {
79     String filename = req.getParameter("filename");
80     if (filename == null) throw new ServletModuleException("No filename specified");
81     try {
82
83       File f = new File(_dirName, filename);
84       FileReader in = new FileReader(f);
85       StringWriter out = new StringWriter();
86
87       int c;
88       while ((c = in.read()) != -1)
89         out.write(c);
90       in.close();
91       out.close();
92       SimpleHash withValues = new SimpleHash();
93       withValues.put("text", out.toString());
94       withValues.put("filename", filename);
95
96         
97       deliver(req, res, withValues, null, templateObjektString);
98     } catch (Exception e) {
99       throw new ServletModuleException(e.toString());
100     }
101   }
102
103   public void update(HttpServletRequest req, HttpServletResponse res)
104     throws ServletModuleException
105   {
106     String filename = req.getParameter("filename");
107     if (filename == null) throw new ServletModuleException("No filename specified");
108     try {
109
110       File f = new File(_dirName, filename);
111       StringReader in = new StringReader(req.getParameter("text"));
112       FileWriter out = new FileWriter(f);
113
114       int c;
115       while ((c = in.read()) != -1)
116         out.write(c);
117       in.close();
118       out.close();
119
120       edit(req, res);
121     } catch (Exception e) {
122       throw new ServletModuleException(e.toString());
123     }
124   }
125
126
127 }