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.Action;
import org.jbpm.gd.jpdl.model.CreateTimer;
import org.jbpm.gd.jpdl.model.Script;
public class CreateTimerDomAdapter extends XmlAdapter {
private static HashMap NODE_TYPES = null;
protected Map getNodeTypes() {
if (NODE_TYPES == null) {
NODE_TYPES = new HashMap();
NODE_TYPES.put("action", "action-element");
NODE_TYPES.put("script", "action-element");
}
return NODE_TYPES;
}
public void initialize(SemanticElement jpdlElement) {
super.initialize(jpdlElement);
CreateTimer createTimer = (CreateTimer)jpdlElement;
createTimer.setDueDate(getAttribute("duedate"));
createTimer.setName(getAttribute("name"));
createTimer.setRepeat(getAttribute("repeat"));
createTimer.setTransition(getAttribute("transition"));
createTimer.addPropertyChangeListener(this);
}
protected void initialize() {
super.initialize();
CreateTimer createTimer = (CreateTimer)getSemanticElement();
if (createTimer != null) {
setAttribute("duedate", createTimer.getDueDate());
setAttribute("name", createTimer.getName());
setAttribute("repeat", createTimer.getRepeat());
setAttribute("transition", createTimer.getTransition());
addElement(createTimer.getAction());
addElement(createTimer.getScript());
}
}
protected void doPropertyChange(PropertyChangeEvent evt) {
if ("action".equals(evt.getPropertyName())) {
setElement("action", (SemanticElement)evt.getOldValue(), (SemanticElement)evt.getNewValue());
} else if ("script".equals(evt.getPropertyName())) {
setElement("script", (SemanticElement)evt.getOldValue(), (SemanticElement)evt.getNewValue());
} else if ("duedate".equals(evt.getPropertyName())) {
setAttribute("duedate", (String)evt.getNewValue());
} else if ("name".equals(evt.getPropertyName())) {
setAttribute("name", (String)evt.getNewValue());
} else if ("repeat".equals(evt.getPropertyName())) {
setAttribute("repeat", (String)evt.getNewValue());
} else if ("transition".equals(evt.getPropertyName())) {
setAttribute("transition", (String)evt.getNewValue());
}
}
protected void doModelUpdate(String name, String newValue) {
CreateTimer createTimer = (CreateTimer)getSemanticElement();
if ("name".equals(name)) {
createTimer.setName(newValue);
} else if ("duedate".equals(name)) {
createTimer.setDueDate(newValue);
} else if ("repeat".equals(name)) {
createTimer.setRepeat(newValue);
} else if ("transition".equals(name)) {
createTimer.setTransition(newValue);
}
}
protected void doModelAdd(XmlAdapter child) {
String type = child.getElementType();
SemanticElement jpdlElement = createSemanticElementFor(child);
child.initialize(jpdlElement);
CreateTimer createTimer = (CreateTimer)getSemanticElement();
if ("action".equals(type)) {
createTimer.setAction((Action)jpdlElement);
} else if ("script".equals(type)) {
createTimer.setScript((Script)jpdlElement);
}
}
protected void doModelRemove(XmlAdapter child) {
String type = child.getElementType();
CreateTimer createTimer = (CreateTimer)getSemanticElement();
if ("action".equals(type)) {
createTimer.setAction(null);
} else if ("script".equals(type)) {
createTimer.setScript(null);
}
}
}