package signavio.xml.converter;
import java.awt.geom.Point2D;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import sushi.xml.importer.XMLParser;
public class SignavioSequenceFlow extends AbstractSignavioXMLElement{
private String target;
private AbstractSignavioXMLElement predecessor, sucessor;
public SignavioSequenceFlow(String resourceId) {
super(resourceId);
target = "";
}
@Override
protected String createStencilId() {
return "SequenceFlow";
}
@Override
protected Map<String, String> createPropertiesMap() {
properties = new HashMap<String, String>();
properties.put("name", "");
properties.put("documentation", "");
properties.put("auditing", "");
properties.put("monitoring", "");
properties.put("conditiontype", "None");
properties.put("conditiontype", "None");
properties.put("conditionexpression", "");
properties.put("isimmediate", "");
properties.put("showdiamondmarker", "");
properties.put("bordercolor", "#000000");
return properties;
}
@Override
public void getBoundsFromXMLNode(Node elementNode) {
List<Node> relevantChilds = XMLParser.getAllChildWithNameFromNode("omgdi:waypoint", elementNode);
double x, y;
lower_right_x = 0;
lower_right_y = 0;
upper_left_x = 1485;
upper_left_y = 1050;
for(Node waypointNode : relevantChilds){
x = Double.parseDouble(waypointNode.getAttributes().getNamedItem("x").getNodeValue());
y = Double.parseDouble(waypointNode.getAttributes().getNamedItem("y").getNodeValue());
addDocker(x, y);
if(x > lower_right_x) lower_right_x = x;
if(x < upper_left_x) upper_left_x = x;
if(y > lower_right_y) lower_right_y = y;
if(y > upper_left_y) upper_left_y = y;
}
addBounds(upper_left_x, upper_left_y, lower_right_x, lower_right_y);
}
@Override
public void addOutgoing(String outgoingId){
super.addOutgoing(outgoingId);
this.target = outgoingId;
}
@Override
protected String generateAdditionalString(){
return ",\"target\":{\"resourceId\":\"" + target + "\"}";
}
public AbstractSignavioXMLElement getPredecessor() {
return predecessor;
}
public void setPredecessor(AbstractSignavioXMLElement predecessor) {
this.predecessor = predecessor;
}
public AbstractSignavioXMLElement getSucessor() {
return sucessor;
}
public void setSucessor(AbstractSignavioXMLElement sucessor) {
this.sucessor = sucessor;
}
@Override
protected String generateDockersString() {
if(predecessor != null){
dockers.set(0, predecessor.generateRelativeDockerFromPoint(dockers.get(0)));
}
if(sucessor != null){
int lastIndex = dockers.size() -1;
dockers.set(lastIndex, sucessor.generateRelativeDockerFromPoint(dockers.get(lastIndex)));
}
return super.generateDockersString();
}
}