All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.yaoqiang.graph.io.graphml.GraphMLGenericEdge Maven / Gradle / Ivy

There is a newer version: 2.2.18
Show newest version
package org.yaoqiang.graph.io.graphml;

import java.awt.Point;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.w3c.dom.Element;

/**
 * GraphMLGenericEdge
 * 
 * @author Shi Yaoqiang([email protected])
 */
public class GraphMLGenericEdge {
	
	private String configuration = "";

	private String edgeLabel = "";

	private List points = new ArrayList();

	private Map properties = new HashMap();

	private String bpmnType;

	private String edgeSource;

	private String edgeTarget;

	public GraphMLGenericEdge(Element genericEdgeElement) {
		this.configuration = genericEdgeElement.getAttribute(GraphMLConstants.CONFIGURATION);

		Element labelElement = GraphMLUtils.childsTag(genericEdgeElement, GraphMLConstants.YWORKS + GraphMLConstants.NODE_LABEL);
		if (labelElement != null) {
			this.edgeLabel = labelElement.getTextContent();
		}

		Element pathElement = GraphMLUtils.childsTag(genericEdgeElement, GraphMLConstants.YWORKS + GraphMLConstants.PATH);
		if (pathElement != null) {
			List pointElements = GraphMLUtils.childsTags(pathElement, GraphMLConstants.YWORKS + GraphMLConstants.POINT);
			for (Element el : pointElements) {
				Double x = Double.valueOf(el.getAttribute(GraphMLConstants.X));
				Double y = Double.valueOf(el.getAttribute(GraphMLConstants.Y));
				Point point = new Point();
				point.setLocation(x, y);
				points.add(point);
			}
		}
		
		Element stylePropertiesElement = GraphMLUtils.childsTag(genericEdgeElement, GraphMLConstants.YWORKS + GraphMLConstants.STYLE_PROPERTIES);
		if (stylePropertiesElement != null) {
			List propertyElements = GraphMLUtils.childsTags(stylePropertiesElement, GraphMLConstants.YWORKS + GraphMLConstants.PROPERTY);
			for (Element el : propertyElements) {
				properties.put(el.getAttribute(GraphMLConstants.NAME), el.getAttribute(GraphMLConstants.VALUE));
			}
			this.bpmnType = properties.get(GraphMLConstants.BPMN_TYPE);
		}

	}

	public boolean isSequenceFlow() {
		if (getBpmnType().equals("CONNECTION_TYPE_SEQUENCE_FLOW")) {
			return true;
		}
		return false;
	}
	
	public boolean isConditionalSequenceFlow() {
		if (getBpmnType().equals("CONNECTION_TYPE_CONDITIONAL_FLOW")) {
			return true;
		}
		return false;
	}
	
	
	public boolean isDefaultSequenceFlow() {
		if (getBpmnType().equals("CONNECTION_TYPE_DEFAULT_FLOW")) {
			return true;
		}
		return false;
	}
	
	public boolean isAssociation() {
		if (getBpmnType().equals("CONNECTION_TYPE_ASSOCIATION")) {
			return true;
		}
		return false;
	}
	
	public boolean isDataAssociation() {
		if (getBpmnType().equals("CONNECTION_TYPE_DIRECTED_ASSOCIATION")) {
			return true;
		}
		return false;
	}
	
	public boolean isMessageFlow() {
		if (getBpmnType().equals("CONNECTION_TYPE_MESSAGE_FLOW")) {
			return true;
		}
		return false;
	}

	public boolean isConversationLink() {
		if (getBpmnType().equals("CONNECTION_TYPE_CONVERSATION_LINK")) {
			return true;
		}
		return false;
	}

	public String getConfiguration() {
		return configuration;
	}
	
	public String getEdgeLabel() {
		return edgeLabel == null ? "" : edgeLabel;
	}

	public List getPoints() {
		return points;
	}

	public String getBpmnType() {
		return bpmnType;
	}

	public String getEdgeSource() {
		return edgeSource;
	}

	public String getEdgeTarget() {
		return edgeTarget;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy