KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > modules > admin > filemanager > TimeCopyModule


1 /*
2  * Created on Jul 24, 2006
3  */

4 package com.openedit.modules.admin.filemanager;
5
6 import java.io.StringWriter JavaDoc;
7 import java.text.SimpleDateFormat JavaDoc;
8 import java.util.ArrayList JavaDoc;
9 import java.util.Collections JavaDoc;
10 import java.util.Date JavaDoc;
11 import java.util.Iterator JavaDoc;
12 import java.util.List JavaDoc;
13
14 import org.dom4j.Element;
15
16 import com.openedit.OpenEditException;
17 import com.openedit.WebPageRequest;
18 import com.openedit.modules.BaseModule;
19 import com.openedit.page.Page;
20 import com.openedit.users.User;
21 import com.openedit.util.XmlUtil;
22
23 public class TimeCopyModule extends BaseModule
24 {
25     protected SimpleDateFormat JavaDoc fieldGmtStandard;
26     public SimpleDateFormat JavaDoc getGmtStandard()
27     {
28         if ( fieldGmtStandard == null)
29         {
30             fieldGmtStandard = new SimpleDateFormat JavaDoc("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
31         }
32         return fieldGmtStandard;
33     }
34     
35     public Page getCopyPage() throws OpenEditException
36     {
37         return getPageManager().getPage("/openedit/scheduler/copy.xml");
38     }
39     
40     public Element getPageRoot() throws OpenEditException
41     {
42         Page xml = getCopyPage();
43         Element root = new XmlUtil().getXml(xml.getReader(), xml.getCharacterEncoding());
44         return root;
45     }
46
47     public void check(WebPageRequest inReq) throws Exception JavaDoc
48     {
49         //load up the XML file
50
//look for any dates that have passed
51
//copy the file using the params specified
52
Element root = getPageRoot();
53         
54         Date JavaDoc now = new Date JavaDoc();
55         
56         SimpleDateFormat JavaDoc dateFormat = getGmtStandard();
57         String JavaDoc format = null;
58         if (inReq.getCurrentAction() != null)
59         {
60              format = inReq.getCurrentAction().getChildValue("format");
61         }
62         if (format != null)
63         {
64             dateFormat = new SimpleDateFormat JavaDoc(format);
65         }
66         
67         List JavaDoc toRemove = new ArrayList JavaDoc();
68         for (Iterator JavaDoc iter = root.elementIterator("copy"); iter.hasNext();)
69         {
70             Element copy = (Element) iter.next();
71             String JavaDoc date = copy.attributeValue("when");
72             Date JavaDoc when = dateFormat.parse(date);
73             if( now.after(when) || now.equals(when))
74             {
75                 String JavaDoc from = copy.attributeValue("from");
76                 String JavaDoc to = copy.attributeValue("to");
77                 String JavaDoc username = copy.attributeValue("username");
78                 String JavaDoc comment = copy.attributeValue("message");
79                 
80                 Page pfrom = getPageManager().getPage(from);
81                 Page pto = getPageManager().getPage(to);
82                 
83                 //TODO: Add username
84
getPageManager().copyPage(pfrom, pto);
85                 toRemove.add(copy);
86             }
87         }
88         for (Iterator JavaDoc iter = toRemove.iterator(); iter.hasNext();)
89         {
90             Element element = (Element) iter.next();
91             root.remove(element);
92         }
93         if( toRemove.size() > 0)
94         {
95             saveToFile(root, inReq.getUser());
96         }
97     }
98     
99     private void saveToFile(Element inRoot, User inUser) throws OpenEditException
100     {
101         StringWriter JavaDoc out = new StringWriter JavaDoc();
102         new XmlUtil().saveXml(inRoot, out, getCopyPage().getCharacterEncoding());
103         getPageManager().saveContent(getCopyPage(), inUser, out.toString(), "scheduler run");
104     }
105     
106     private SimpleDateFormat JavaDoc getFormat(WebPageRequest inReq)
107     {
108         SimpleDateFormat JavaDoc format = getGmtStandard();
109         String JavaDoc formatString = inReq.getRequestParameter("format");
110         if (formatString == null || formatString.length() <= 0)
111         {
112             formatString = inReq.getCurrentAction().getChildValue("format");
113         }
114         if (formatString != null)
115         {
116             format = new SimpleDateFormat JavaDoc(formatString);
117         }
118         return format;
119     }
120     
121     public void addCopy(WebPageRequest inReq) throws Exception JavaDoc
122     {
123         String JavaDoc date = inReq.getRequestParameter("when");
124         String JavaDoc from = inReq.getRequestParameter("from");
125         String JavaDoc to = inReq.getRequestParameter("to");
126         String JavaDoc description = inReq.getRequestParameter("description");
127         
128         SimpleDateFormat JavaDoc format = getFormat(inReq);
129         
130         Element root = getPageRoot();
131         Element copy = root.addElement("copy");
132         copy.addAttribute("when", getGmtStandard().format(format.parse(date)));
133         copy.addAttribute("from", from);
134         copy.addAttribute("to", to);
135         copy.addAttribute("description", description);
136         copy.addAttribute("username", inReq.getUser().getUserName());
137         
138         saveToFile(root, inReq.getUser());
139         inReq.redirect("/openedit/filemanager/timecopy/viewentries.html");
140     }
141     public void remove(WebPageRequest inReq) throws Exception JavaDoc
142     {
143         String JavaDoc index = inReq.getRequestParameter("count");
144         if( index != null)
145         {
146             Element root = getPageRoot();
147             Element removed = (Element)root.elements().get(Integer.parseInt(index) - 1);
148             root.remove(removed);
149             saveToFile(root, inReq.getUser());
150             inReq.redirect("/openedit/filemanager/timecopy/viewentries.html");
151         }
152     }
153     
154     public void loadEntries(WebPageRequest inReq) throws Exception JavaDoc
155     {
156         final SimpleDateFormat JavaDoc format = getFormat(inReq);
157         List JavaDoc entries = new ArrayList JavaDoc();
158         Element root = getPageRoot();
159         for (Iterator JavaDoc iter = root.elementIterator(); iter.hasNext();)
160         {
161             Element element = (Element) iter.next();
162             TimeCopy copy = new TimeCopy();
163             copy.setFormat(format);
164             copy.setDate(getGmtStandard().parse(element.attributeValue("when")));
165             copy.setDescription(element.attributeValue("description"));
166             copy.setTo(getPageManager().getPage(element.attributeValue("to")));
167             copy.setFrom(getPageManager().getPage(element.attributeValue("from")));
168             copy.setUser(getUserManager().getUser(element.attributeValue("username")));
169             
170             entries.add(copy);
171         }
172         Collections.sort(entries);
173         inReq.putPageValue("entries", entries);
174     }
175 }
176
Popular Tags