Package org.apache.slide.projector.descriptor

Source Code of org.apache.slide.projector.descriptor.MapValueFactory

package org.apache.slide.projector.descriptor;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.slide.projector.i18n.ParameterMessage;
import org.apache.slide.projector.value.MapValue;
import org.apache.slide.projector.value.Value;
import org.jdom.Element;

import de.zeigermann.xml.XMLStringWriter;
import de.zeigermann.xml.XMLWriter;

public class MapValueFactory implements ValueFactory {
  public Class getValueClass() {
    return MapValue.class;
  }

  public String getElementName() {
      return "map";
    }

  public Value load(Element element) {
    Map map = new HashMap();
    for ( Iterator i = element.getChildren().iterator(); i.hasNext(); ) {
      Element childElement = (Element)i.next();
      String key = childElement.getAttributeValue("key");
      Element entryElement = (Element)childElement.getChildren().iterator().next();
      map.put(key, ValueFactoryManager.getInstance().loadValue(entryElement));     
    }
    return new MapValue(map);
  }

    public void save(Value value, XMLStringWriter writer) {
      Map map = ((MapValue)value).getMap();
        writer.writeStartTag(XMLWriter.createStartTag(getElementName()));
        for ( Iterator i = map.entrySet().iterator(); i.hasNext(); ) {
            Map.Entry entry = (Map.Entry)i.next();
            if ( entry.getValue() instanceof Value ) {
              writer.writeStartTag(XMLWriter.createStartTag("entry", "key", (String)entry.getKey()));
              ValueFactoryManager.getInstance().saveValue((Value)entry.getValue(), writer);
              writer.writeEndTag(XMLWriter.createEndTag("entry"));
            }
        }
        writer.writeEndTag(XMLWriter.createEndTag(getElementName()));
    }

    public ValueDescriptor loadDescriptor(Element element) {
    MapValueDescriptor valueDescriptor = new MapValueDescriptor();
    for ( Iterator i = element.getChildren().iterator(); i.hasNext(); ) {
      Element entry = (Element)i.next();
      String key = entry.getAttributeValue("key");
      String description = entry.getAttributeValue("description");
        Element allowedEntryValueElement = (Element)element.getChildren().iterator().next();
         ValueDescriptor allowedEntryValue = ValueFactoryManager.getInstance().loadValueDescriptor(allowedEntryValueElement);
         valueDescriptor.addEntryDescriptor(new ParameterDescriptor(key, new ParameterMessage(description), allowedEntryValue));
    }
    return valueDescriptor;
    }
}
TOP

Related Classes of org.apache.slide.projector.descriptor.MapValueFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.