1 package org.apache.slide.projector.descriptor; 2 3 import java.io.IOException ; 4 import java.util.Iterator ; 5 import java.util.List ; 6 import java.util.logging.Level ; 7 import java.util.logging.Logger ; 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 logger = Logger.getLogger(XMLValueFactory.class.getName()); 21 22 public Class getValueClass() { 23 return ElementValue.class; 24 } 25 26 public String getElementName() { 27 return "xml"; 28 } 29 30 public ValueDescriptor loadDescriptor(Element element) { 31 AnyValueDescriptor valueDescriptor = new AnyValueDescriptor(); 32 List allowedValueElements = element.getChildren("allowed-content-type"); 33 for ( Iterator i = allowedValueElements.iterator(); i.hasNext(); ) { 34 Element allowedValueElement = (Element)i.next(); 35 String allowedValue = allowedValueElement.getTextTrim(); 36 valueDescriptor.addAllowedContentType(allowedValue); 37 } 38 return valueDescriptor; 39 } 40 41 public Value load(Element element) { 42 Iterator 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 e) { 54 logger.log(Level.SEVERE, "Could not persist ElementValue", e); 55 } 56 writer.writeEndTag(XMLWriter.createEndTag(getElementName())); 57 } 58 } | Popular Tags |