KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > slide > projector > descriptor > MapValueFactory


1 package org.apache.slide.projector.descriptor;
2
3 import java.util.HashMap JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.Map JavaDoc;
6
7 import org.apache.slide.projector.i18n.ParameterMessage;
8 import org.apache.slide.projector.value.MapValue;
9 import org.apache.slide.projector.value.Value;
10 import org.jdom.Element;
11
12 import de.zeigermann.xml.XMLStringWriter;
13 import de.zeigermann.xml.XMLWriter;
14
15 public class MapValueFactory implements ValueFactory {
16     public Class JavaDoc getValueClass() {
17         return MapValue.class;
18     }
19
20     public String JavaDoc getElementName() {
21         return "map";
22     }
23
24     public Value load(Element element) {
25         Map JavaDoc map = new HashMap JavaDoc();
26         for ( Iterator JavaDoc i = element.getChildren().iterator(); i.hasNext(); ) {
27             Element childElement = (Element)i.next();
28             String JavaDoc key = childElement.getAttributeValue("key");
29             Element entryElement = (Element)childElement.getChildren().iterator().next();
30             map.put(key, ValueFactoryManager.getInstance().loadValue(entryElement));
31         }
32         return new MapValue(map);
33     }
34
35     public void save(Value value, XMLStringWriter writer) {
36         Map JavaDoc map = ((MapValue)value).getMap();
37         writer.writeStartTag(XMLWriter.createStartTag(getElementName()));
38         for ( Iterator JavaDoc i = map.entrySet().iterator(); i.hasNext(); ) {
39             Map.Entry JavaDoc entry = (Map.Entry JavaDoc)i.next();
40             if ( entry.getValue() instanceof Value ) {
41                 writer.writeStartTag(XMLWriter.createStartTag("entry", "key", (String JavaDoc)entry.getKey()));
42                 ValueFactoryManager.getInstance().saveValue((Value)entry.getValue(), writer);
43                 writer.writeEndTag(XMLWriter.createEndTag("entry"));
44             }
45         }
46         writer.writeEndTag(XMLWriter.createEndTag(getElementName()));
47     }
48
49     public ValueDescriptor loadDescriptor(Element element) {
50         MapValueDescriptor valueDescriptor = new MapValueDescriptor();
51         for ( Iterator JavaDoc i = element.getChildren().iterator(); i.hasNext(); ) {
52             Element entry = (Element)i.next();
53             String JavaDoc key = entry.getAttributeValue("key");
54             String JavaDoc description = entry.getAttributeValue("description");
55             Element allowedEntryValueElement = (Element)element.getChildren().iterator().next();
56             ValueDescriptor allowedEntryValue = ValueFactoryManager.getInstance().loadValueDescriptor(allowedEntryValueElement);
57             valueDescriptor.addEntryDescriptor(new ParameterDescriptor(key, new ParameterMessage(description), allowedEntryValue));
58         }
59         return valueDescriptor;
60     }
61 }
Popular Tags