1 4 package com.openedit.archive.history; 5 6 import java.io.StringWriter ; 7 import java.util.Iterator ; 8 9 import org.dom4j.DocumentHelper; 10 import org.dom4j.Element; 11 import org.openedit.repository.filesystem.StringItem; 12 13 import com.openedit.OpenEditException; 14 import com.openedit.archive.Archive; 15 import com.openedit.page.Page; 16 import com.openedit.page.manage.PageManager; 17 import com.openedit.store.Product; 18 import com.openedit.util.XmlUtil; 19 20 public class HistoryArchive 21 { 22 protected PageManager fieldPageManager; 23 24 public PageManager getPageManager() 25 { 26 return fieldPageManager; 27 } 28 29 public void setPageManager(PageManager inPageManager) 30 { 31 fieldPageManager = inPageManager; 32 } 33 34 public UsageHistory getUsageHistory(Archive inArchive, String inProduid) throws OpenEditException 35 { 36 UsageHistory history = new UsageHistory(); 38 39 Product product = inArchive.getStore().getProductArchive().getProduct(inProduid); 40 if( product == null) 41 { 42 throw new OpenEditException("No such product " + inProduid); 43 } 44 history.setProduct(product); 45 46 Page data = getPageManager().getPage(inArchive.getCatalogHome()+ "/history/data/" + inProduid + ".xml"); 47 if( data.exists() ) 48 { 49 Element root = new XmlUtil().getXml(data.getReader(), data.getCharacterEncoding()); 50 for (Iterator iter = root.elementIterator("record"); iter.hasNext();) 51 { 52 Element child = (Element) iter.next(); 53 HistoryRecord record = new HistoryRecord(); 54 record.setId(child.attributeValue("id")); 55 for (Iterator iterator = child.elementIterator("data"); iterator.hasNext();) 56 { 57 Element datacell = (Element)iterator.next(); 58 String key = datacell.attributeValue("id"); 59 HistoryRecord item = new HistoryRecord(); 60 record.putData(key, datacell.getTextTrim()); 61 } 62 history.addRecord(record); 63 } 64 } 65 return history; 66 } 67 public void save(Archive inArchive, UsageHistory inCols) throws OpenEditException 68 { 69 Page userCol = getPageManager().getPage(inArchive.getCatalogHome() + "/history/data/" + inCols.getProduct().getId() + ".xml"); 70 71 Element root = DocumentHelper.createDocument().addElement("history"); 72 root.addElement("product").addAttribute("productid", inCols.getProduct().getId()); 73 74 for (Iterator iter = inCols.getRecordData(); iter.hasNext();) 75 { 76 HistoryRecord record = (HistoryRecord) iter.next(); 77 Element child = root.addElement("record"); 78 child.addAttribute("id", record.getId()); 79 for (Iterator iterator = record.getIdIterator(); iterator.hasNext();) 80 { 81 String id = (String ) iterator.next(); 82 String value = record.get(id); 83 Element data = child.addElement("data"); 84 data.addAttribute("id", id); 85 if( value != null) 86 { 87 data.setText(value); 88 } 89 } 90 } 91 StringWriter out = new StringWriter (); 92 new XmlUtil().saveXml(root, out, userCol.getCharacterEncoding()); 93 StringItem string = new StringItem(userCol.getPath(),out.toString(),userCol.getCharacterEncoding()); 94 string.setMakeVersion(false); 95 userCol.setContentItem(string); 96 getPageManager().putPage(userCol); 97 } 98 99 } 100 | Popular Tags |