package org.jbpm.gd.jpdl.xml; import java.beans.PropertyChangeEvent; import java.util.HashMap; import java.util.Map; import org.jbpm.gd.common.model.SemanticElement; import org.jbpm.gd.common.xml.XmlAdapter; import org.jbpm.gd.jpdl.model.Assignment; import org.jbpm.gd.jpdl.model.Swimlane; public class SwimlaneDomAdapter extends XmlAdapter { private static HashMap NODE_TYPES = null; protected Map getNodeTypes() { if (NODE_TYPES == null) { NODE_TYPES = new HashMap(); NODE_TYPES.put("assignment", "assignment"); } return NODE_TYPES; } protected void initialize() { super.initialize(); Swimlane swimlane = (Swimlane)getSemanticElement(); if (swimlane != null) { setAttribute("name", swimlane.getName()); addElement(swimlane.getAssignment()); } } public void initialize(SemanticElement jpdlElement) { super.initialize(jpdlElement); Swimlane swimlane = (Swimlane)jpdlElement; swimlane.setName(getAttribute("name")); swimlane.addPropertyChangeListener(this); } protected void doPropertyChange(PropertyChangeEvent evt) { if ("name".equals(evt.getPropertyName())) { setAttribute("name", (String)evt.getNewValue()); } else if ("assignment".equals(evt.getPropertyName())) { setElement("assignment", (SemanticElement)evt.getOldValue(), (SemanticElement)evt.getNewValue()); } } protected void doModelUpdate(String name, String newValue) { Swimlane swimlane = (Swimlane)getSemanticElement(); if ("name".equals(name)) { swimlane.setName(newValue); } } protected void doModelAdd(XmlAdapter child) { String type = child.getElementType(); SemanticElement jpdlElement = createSemanticElementFor(child); child.initialize(jpdlElement); Swimlane swimlane = (Swimlane)getSemanticElement(); if ("assignment".equals(type)) { swimlane.setAssignment((Assignment)jpdlElement); } } protected void doModelRemove(XmlAdapter child) { String type = child.getElementType(); Swimlane swimlane = (Swimlane)getSemanticElement(); if ("assignment".equals(type)) { swimlane.setAssignment(null); } } }