01: package org.openedit.store.links;
02:
03: import java.util.Iterator;
04:
05: import org.dom4j.Element;
06: import org.openedit.links.Link;
07: import org.openedit.links.XmlLinkLoader;
08: import org.openedit.store.Category;
09: import org.openedit.store.Store;
10:
11: import com.openedit.OpenEditException;
12:
13: public class XmlCatalogLinkLoader extends XmlLinkLoader {
14: protected Store fieldStore;
15:
16: public Store getStore() {
17: return fieldStore;
18: }
19:
20: public void setStore(Store inStore) {
21: fieldStore = inStore;
22: }
23:
24: //Overrride this parent method
25: protected void checkLink(Element inElement, Link inLink)
26: throws OpenEditException {
27: Category parent = getStore().getCatalog(inLink.getId());
28: if (parent != null) {
29: //inLink.setPath(parent.getLink());
30: for (Iterator iter = parent.getChildren().iterator(); iter
31: .hasNext();) {
32: Category child = (Category) iter.next();
33: Link childLink = makeCatalogLink(child);
34: inLink.addChild(childLink);
35: }
36: }
37: }
38:
39: private Link makeCatalogLink(Category inCatalog) {
40: Link link = new Link();
41: link.setId(inCatalog.getId());
42: link.setText(inCatalog.getName());
43: link.setPath(inCatalog.getLink());
44:
45: for (Iterator iter = inCatalog.getChildren().iterator(); iter
46: .hasNext();) {
47: Category childCat = (Category) iter.next();
48: Link childLink = makeCatalogLink(childCat);
49: link.addChild(childLink);
50: }
51: return link;
52: }
53:
54: }
|