KickJava   Java API By Example, From Geeks To Geeks.

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


1 package org.apache.slide.projector.descriptor;
2
3 import java.io.IOException JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6 import java.util.logging.Level JavaDoc;
7 import java.util.logging.Logger JavaDoc;
8
9 import org.apache.slide.projector.value.ElementValue;
10 import org.apache.slide.projector.value.Value;
11 import org.jdom.Element;
12 import org.jdom.output.Format;
13 import org.jdom.output.XMLOutputter;
14
15 import de.zeigermann.xml.XMLStringWriter;
16 import de.zeigermann.xml.XMLWriter;
17
18 public class XMLValueFactory implements ValueFactory {
19     private final static XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
20     private final static Logger JavaDoc logger = Logger.getLogger(XMLValueFactory.class.getName());
21     
22     public Class JavaDoc getValueClass() {
23         return ElementValue.class;
24     }
25     
26     public String JavaDoc getElementName() {
27         return "xml";
28     }
29     
30     public ValueDescriptor loadDescriptor(Element element) {
31         AnyValueDescriptor valueDescriptor = new AnyValueDescriptor();
32         List JavaDoc allowedValueElements = element.getChildren("allowed-content-type");
33         for ( Iterator JavaDoc i = allowedValueElements.iterator(); i.hasNext(); ) {
34             Element allowedValueElement = (Element)i.next();
35             String JavaDoc allowedValue = allowedValueElement.getTextTrim();
36             valueDescriptor.addAllowedContentType(allowedValue);
37         }
38         return valueDescriptor;
39     }
40
41     public Value load(Element element) {
42         Iterator JavaDoc iterator = element.getChildren().iterator();
43         if ( iterator.hasNext() ) {
44             return new ElementValue((Element)iterator.next());
45         }
46         return new ElementValue(element);
47     }
48     
49     public void save(Value value, XMLStringWriter writer) {
50         ElementValue elementValue = (ElementValue)value;
51         try {
52             xmlOutputter.output(elementValue.getRootElement(), writer);
53         } catch (IOException JavaDoc e) {
54             logger.log(Level.SEVERE, "Could not persist ElementValue", e);
55         }
56         writer.writeEndTag(XMLWriter.createEndTag(getElementName()));
57     }
58 }
Popular Tags