1 4 package com.openedit.archive.collection; 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.users.User; 19 import com.openedit.util.XmlUtil; 20 21 public class CollectionArchive 22 { 23 protected PageManager fieldPageManager; 24 25 public void save(Archive inArchive, UserCollections inCols) throws OpenEditException 26 { 27 if( !inCols.getUser().hasPermission("savecollection") ) 28 { 29 return; 30 } 31 Page userCol = getPageManager().getPage(inArchive.getCatalogHome() + "/collections/data/user-" + inCols.getUser().getUserName() + ".xml"); 32 Element root = DocumentHelper.createElement("collections"); 33 if( inCols.getSelectedCollection() != null) 34 { 35 root.addAttribute("selectedcollection", inCols.getSelectedCollection().getId() ); 36 } 37 for (Iterator iter = inCols.getCollections().iterator(); iter.hasNext();) 38 { 39 Collection col = (Collection) iter.next(); 40 Element child = root.addElement("collection"); 41 child.addAttribute("id", col.getId()); 42 child.addAttribute("name", col.getName()); 43 for (Iterator iterator = col.getCollectionItems().iterator(); iterator.hasNext();) 44 { 45 CollectionItem item = (CollectionItem) iterator.next(); 46 if( item.getProduct() != null) 47 { 48 Element asset = child.addElement("collectionitem"); 49 asset.addAttribute("productid", item.getProduct().getId() ); 50 } 51 } 52 } 53 StringWriter out = new StringWriter (); 54 new XmlUtil().saveXml(root, out, userCol.getCharacterEncoding()); 55 StringItem string = new StringItem(userCol.getPath(),out.toString(),userCol.getCharacterEncoding()); 56 string.setMakeVersion(false); 57 userCol.setContentItem(string); 58 getPageManager().putPage(userCol); 59 } 60 61 public UserCollections loadUserCollections(User inUser, Archive inArchive) throws OpenEditException 62 { 63 UserCollections cols = new UserCollections(); 64 cols.setUser(inUser); 65 66 Page userCol = getPageManager().getPage(inArchive.getCatalogHome() +"/collections/data/user-" + inUser.getUserName() + ".xml"); 67 if( userCol.exists() ) 68 { 69 Element root = new XmlUtil().getXml(userCol.getReader(), userCol.getCharacterEncoding()); 70 for (Iterator iter = root.elementIterator("collection"); iter.hasNext();) 71 { 72 Element child = (Element) iter.next(); 73 Collection col = new Collection(); 74 col.setId(child.attributeValue("id")); 75 col.setName(child.attributeValue("name")); 76 77 if( col.getId().equals(root.attributeValue("selectedcollection" ) ) ) 78 { 79 cols.setSelectedCollection(col); 80 } 81 for (Iterator iterator = child.elementIterator("collectionitem"); iterator.hasNext();) 82 { 83 Element asset = (Element)iterator.next(); 84 String productId = asset.attributeValue("productid"); 85 Product product = inArchive.getStore().getProductArchive().getProduct(productId); 86 CollectionItem item = new CollectionItem(); 87 item.setProduct(product); 88 col.addItem(item); 89 } 90 cols.addCollection(col); 91 } 92 } 93 return cols; 94 } 95 96 public PageManager getPageManager() 97 { 98 return fieldPageManager; 99 } 100 101 public void setPageManager(PageManager inPageManager) 102 { 103 fieldPageManager = inPageManager; 104 } 105 106 107 108 } 109 | Popular Tags |