1 4 package com.openedit.modules.admin.filemanager; 5 6 import java.io.StringWriter ; 7 import java.text.SimpleDateFormat ; 8 import java.util.ArrayList ; 9 import java.util.Collections ; 10 import java.util.Date ; 11 import java.util.Iterator ; 12 import java.util.List ; 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 fieldGmtStandard; 26 public SimpleDateFormat getGmtStandard() 27 { 28 if ( fieldGmtStandard == null) 29 { 30 fieldGmtStandard = new SimpleDateFormat ("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 48 { 49 Element root = getPageRoot(); 53 54 Date now = new Date (); 55 56 SimpleDateFormat dateFormat = getGmtStandard(); 57 String format = null; 58 if (inReq.getCurrentAction() != null) 59 { 60 format = inReq.getCurrentAction().getChildValue("format"); 61 } 62 if (format != null) 63 { 64 dateFormat = new SimpleDateFormat (format); 65 } 66 67 List toRemove = new ArrayList (); 68 for (Iterator iter = root.elementIterator("copy"); iter.hasNext();) 69 { 70 Element copy = (Element) iter.next(); 71 String date = copy.attributeValue("when"); 72 Date when = dateFormat.parse(date); 73 if( now.after(when) || now.equals(when)) 74 { 75 String from = copy.attributeValue("from"); 76 String to = copy.attributeValue("to"); 77 String username = copy.attributeValue("username"); 78 String comment = copy.attributeValue("message"); 79 80 Page pfrom = getPageManager().getPage(from); 81 Page pto = getPageManager().getPage(to); 82 83 getPageManager().copyPage(pfrom, pto); 85 toRemove.add(copy); 86 } 87 } 88 for (Iterator 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 out = new StringWriter (); 102 new XmlUtil().saveXml(inRoot, out, getCopyPage().getCharacterEncoding()); 103 getPageManager().saveContent(getCopyPage(), inUser, out.toString(), "scheduler run"); 104 } 105 106 private SimpleDateFormat getFormat(WebPageRequest inReq) 107 { 108 SimpleDateFormat format = getGmtStandard(); 109 String 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 (formatString); 117 } 118 return format; 119 } 120 121 public void addCopy(WebPageRequest inReq) throws Exception 122 { 123 String date = inReq.getRequestParameter("when"); 124 String from = inReq.getRequestParameter("from"); 125 String to = inReq.getRequestParameter("to"); 126 String description = inReq.getRequestParameter("description"); 127 128 SimpleDateFormat 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 142 { 143 String 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 155 { 156 final SimpleDateFormat format = getFormat(inReq); 157 List entries = new ArrayList (); 158 Element root = getPageRoot(); 159 for (Iterator 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 |