KickJava   Java API By Example, From Geeks To Geeks.

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


1 package org.apache.slide.projector.descriptor;
2
3 import java.util.Iterator JavaDoc;
4 import java.util.List JavaDoc;
5
6 import org.apache.slide.projector.Store;
7 import org.apache.slide.projector.URI;
8 import org.apache.slide.projector.util.StoreHelper;
9 import org.apache.slide.projector.value.AnyValue;
10 import org.apache.slide.projector.value.URIValue;
11 import org.apache.slide.projector.value.Value;
12 import org.jdom.Element;
13
14 import de.zeigermann.xml.XMLStringWriter;
15 import de.zeigermann.xml.XMLWriter;
16
17 public class AnyValueFactory implements ValueFactory {
18     private final static String JavaDoc PROCESSOR = "processor";
19     private final static String JavaDoc RESULT = "result";
20     private final static String JavaDoc STORE = "store";
21     private final static String JavaDoc KEY = "key";
22     private final static String JavaDoc DOMAIN = "domain";
23     
24     public Class JavaDoc getValueClass() {
25         return AnyValue.class;
26     }
27     
28     public String JavaDoc getElementName() {
29         return "value";
30     }
31
32     public Value load(Element element) {
33         String JavaDoc processor = element.getAttributeValue("processor");
34         String JavaDoc result = element.getAttributeValue("result");
35         String JavaDoc store = element.getAttributeValue("store");
36         int storeId = StoreHelper.getStoreByName(store);
37         String JavaDoc key = element.getAttributeValue("key");
38         String JavaDoc domain = element.getAttributeValue("domain");
39         URI processorUri = ( processor == null ? null : new URIValue(processor) );
40         Iterator JavaDoc children = element.getChildren().iterator();
41         Value input = null;
42         if ( children.hasNext() ) {
43             Element childElement = (Element)children.next();
44             input = ValueFactoryManager.getInstance().loadValue(childElement);
45         }
46         return new AnyValue(processor, input, result, storeId, key, domain);
47     }
48         
49     public void save(Value value, XMLStringWriter writer) {
50         AnyValue anyValue = (AnyValue)value;
51         if ( anyValue.getProcessorUri() == null ) {
52             writer.writeEmptyElement(XMLWriter.createEmptyTag(getElementName(), new String JavaDoc[] { STORE, KEY, DOMAIN }, new String JavaDoc[] { Store.stores[anyValue.getStoreId()], anyValue.getKey(), anyValue.getDomain() }));
53         } else {
54             if ( anyValue.getInput() == null ) {
55                 writer.writeStartTag(XMLWriter.createStartTag(getElementName(), new String JavaDoc[] { PROCESSOR, RESULT, STORE, KEY, DOMAIN }, new String JavaDoc[] { anyValue.getProcessorUri().toString(), anyValue.getResult(), Store.stores[anyValue.getStoreId()], anyValue.getKey(), anyValue.getDomain() }));
56             } else {
57                 writer.writeStartTag(XMLWriter.createStartTag(getElementName(), new String JavaDoc[] { PROCESSOR, RESULT }, new String JavaDoc[] { anyValue.getProcessorUri().toString(), anyValue.getResult() }));
58                 ValueFactoryManager.getInstance().saveValue(anyValue.getInput(), writer);
59                 writer.writeEndTag(XMLWriter.createEndTag(getElementName()));
60             }
61         }
62     }
63
64     public ValueDescriptor loadDescriptor(Element element) {
65         AnyValueDescriptor valueDescriptor = new AnyValueDescriptor();
66         List JavaDoc allowedValueElements = element.getChildren("allowed-content-type");
67         for ( Iterator JavaDoc i = allowedValueElements.iterator(); i.hasNext(); ) {
68             Element allowedValueElement = (Element)i.next();
69             String JavaDoc allowedValue = allowedValueElement.getTextTrim();
70             valueDescriptor.addAllowedContentType(allowedValue);
71         }
72         return valueDescriptor;
73     }
74 }
Popular Tags