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.MailAction;
import org.jbpm.gd.jpdl.model.Subject;
import org.jbpm.gd.jpdl.model.Text;
public class MailDomAdapter extends XmlAdapter {
private static final String[] CHILD_ELEMENTS = {"subject", "text"};
private static HashMap NODE_TYPES = null;
protected String[] getChildElements() {
return CHILD_ELEMENTS;
}
protected Map getNodeTypes() {
if (NODE_TYPES == null) {
NODE_TYPES = new HashMap();
NODE_TYPES.put("subject", "subject");
NODE_TYPES.put("text", "text");
}
return NODE_TYPES;
}
protected String getDefaultValue(String attributeName) {
if ("async".equals(attributeName)) {
return "false";
} else {
return super.getDefaultValue(attributeName);
}
}
protected void initialize() {
super.initialize();
MailAction mail = (MailAction)getSemanticElement();
if (mail != null) {
setAttribute("async", mail.getAsync());
setAttribute("template", mail.getTemplate());
setAttribute("actors", mail.getActors());
setAttribute("to", mail.getTo());
setAttribute("name", mail.getName());
addElement(mail.getSubject());
addElement(mail.getText());
}
}
public void initialize(SemanticElement jpdlElement) {
super.initialize(jpdlElement);
MailAction mail = (MailAction)jpdlElement;
mail.setAsync(getAttribute("async"));
mail.setTemplate(getAttribute("template"));
mail.setActors(getAttribute("actors"));
mail.setTo(getAttribute("to"));
mail.setName(getAttribute("name"));
mail.addPropertyChangeListener(this);
}
protected void doPropertyChange(PropertyChangeEvent evt) {
if ("subject".equals(evt.getPropertyName())) {
setElement("subject", (SemanticElement)evt.getOldValue(), (SemanticElement)evt.getNewValue());
} else if ("text".equals(evt.getPropertyName())) {
setElement("text", (SemanticElement)evt.getOldValue(), (SemanticElement)evt.getNewValue());
} else if ("async".equals(evt.getPropertyName())) {
setAttribute("async", (String)evt.getNewValue());
} else if ("template".equals(evt.getPropertyName())) {
setAttribute("template", (String)evt.getNewValue());
} else if ("actors".equals(evt.getPropertyName())) {
setAttribute("actors", (String)evt.getNewValue());
} else if ("to".equals(evt.getPropertyName())) {
setAttribute("to", (String)evt.getNewValue());
} else if ("name".equals(evt.getPropertyName())) {
setAttribute("name", (String)evt.getNewValue());
}
}
protected void doModelUpdate(String name, String newValue) {
MailAction mail = (MailAction)getSemanticElement();
if ("async".equals(name)) {
mail.setAsync(newValue);
} else if ("template".equals(name)) {
mail.setTemplate(newValue);
} else if ("actors".equals(name)) {
mail.setActors(newValue);
} else if ("to".equals(name)) {
mail.setTo(newValue);
} else if ("name".equals(name)) {
mail.setName(newValue);
}
}
protected void doModelAdd(XmlAdapter child) {
String type = child.getElementType();
SemanticElement jpdlElement = createSemanticElementFor(child);
child.initialize(jpdlElement);
MailAction mail = (MailAction)getSemanticElement();
if ("subject".equals(type)) {
mail.setSubject((Subject)jpdlElement);
} else if ("text".equals(type)) {
mail.setText((Text)jpdlElement);
}
}
protected void doModelRemove(XmlAdapter child) {
String type = child.getElementType();
MailAction mail = (MailAction)getSemanticElement();
if ("subject".equals(type)) {
mail.setSubject(null);
} else if ("text".equals(type)) {
mail.setText(null);
} else if ("script".equals(type)) {
mail.setText(null);
}
}
}