KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > archive > collection > CollectionArchive


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

4 package com.openedit.archive.collection;
5
6 import java.io.StringWriter JavaDoc;
7 import java.util.Iterator JavaDoc;
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 JavaDoc 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 JavaDoc 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 JavaDoc out = new StringWriter JavaDoc();
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 JavaDoc 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 JavaDoc iterator = child.elementIterator("collectionitem"); iterator.hasNext();)
82                 {
83                     Element asset = (Element)iterator.next();
84                     String JavaDoc 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