KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > portal > impl > converter > NodeConfigConverter


1 package org.exoplatform.services.portal.impl.converter;
2
3 import java.util.List JavaDoc;
4 import org.exoplatform.services.portal.model.PageNode;
5 import org.exoplatform.services.portal.model.PageReference;
6 import com.thoughtworks.xstream.converters.Converter;
7 import com.thoughtworks.xstream.converters.MarshallingContext;
8 import com.thoughtworks.xstream.converters.UnmarshallingContext;
9 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
10 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
11
12 /**
13  * @author Tuan Nguyen
14  */

15 public class NodeConfigConverter implements Converter {
16     
17     public boolean canConvert(Class JavaDoc type) {
18         return type.equals(PageNode.class) ;
19     }
20     
21     public void marshal(Object JavaDoc source, HierarchicalStreamWriter w, MarshallingContext context) {
22         PageNode node = (PageNode) source ;
23         writeProperties(w, node) ;
24         List JavaDoc children = node.getChildren() ;
25         if(children != null && children.size() > 0) {
26             for(int i = 0; i < children.size(); i++) {
27                 w.startNode("node") ;
28                 context.convertAnother(children.get(i)) ;
29                 w.endNode() ;
30             }
31         }
32     }
33
34     public Object JavaDoc unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
35         PageNode node = new PageNode();
36         List JavaDoc children = node.getChildren() ;
37         while (reader.hasMoreChildren()) {
38             reader.moveDown();
39             if(readProperty(reader, node)) {
40             } else {
41                 Object JavaDoc o = context.convertAnother(node, PageNode.class) ;
42                 children.add(o) ;
43             }
44             reader.moveUp();
45         }
46         return node ;
47     }
48     
49     public void writeProperties(HierarchicalStreamWriter w, PageNode node) {
50         if(node.getUri() != null) {
51             w.startNode("uri"); w.setValue(node.getUri()) ;w.endNode();
52         }
53         if(node.getName() != null) {
54             w.startNode("name"); w.setValue(node.getName()) ;w.endNode();
55         }
56         if(node.getLabel() != null) {
57             w.startNode("label"); w.setValue(node.getLabel()) ;w.endNode();
58         }
59     if(node.getViewPermission() != null) {
60       w.startNode("viewPermission"); w.setValue(node.getViewPermission()) ;w.endNode();
61     }
62     if(node.getEditPermission() != null) {
63       w.startNode("editPermission"); w.setValue(node.getEditPermission()) ;w.endNode();
64     }
65         if(node.getIcon() != null) {
66             w.startNode("icon"); w.setValue(node.getIcon()) ;w.endNode();
67         }
68         List JavaDoc list = node.getPageReference() ;
69         for(int i = 0; i < list.size(); i++) {
70           PageReference pref = (PageReference) list.get(i) ;
71           w.startNode("pageReference");
72           if(!pref.isVisible()) w.addAttribute("visible", "false") ;
73           w.addAttribute("type", pref.getType()) ;
74           w. setValue(pref.getPageReference()) ;
75           w.endNode();
76         }
77         if(node.getDescription() != null) {
78             w.startNode("description"); w.setValue(node.getDescription()) ;w.endNode();
79         }
80     }
81     
82     public boolean readProperty(HierarchicalStreamReader reader, PageNode node) {
83         String JavaDoc nodeName = reader.getNodeName() ;
84         if("uri".equals(nodeName)) {
85             node.setUri(reader.getValue()) ;
86             return true ;
87         } else if("name".equals(nodeName)) {
88             node.setName(reader.getValue()) ;
89             return true ;
90         } else if("label".equals(nodeName)) {
91             node.setLabel(reader.getValue()) ;
92             return true ;
93         } else if("icon".equals(nodeName)) {
94             node.setIcon(reader.getValue()) ; return true ;
95     } else if("viewPermission".equals(nodeName)) {
96       node.setViewPermission(reader.getValue()) ; return true ;
97     } else if("editPermission".equals(nodeName)) {
98       node.setEditPermission(reader.getValue()) ; return true ;
99         } else if("pageReference".equals(reader.getNodeName())) {
100           PageReference pref = new PageReference() ;
101           if("false".equals(reader.getAttribute("visible"))) pref.setVisible(false) ;
102           String JavaDoc type = reader.getAttribute("type") ;
103           if(type != null) pref.setType(type) ;
104           pref.setPageReference(reader.getValue()) ;
105             node.getPageReference().add(pref) ;
106             return true ;
107         } else if("description".equals(nodeName)) {
108             node.setDescription(reader.getValue()) ;
109             return true ;
110         }
111         return false ;
112     }
113 }
Popular Tags