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

com.mxgraph.io.graphml.mxGraphMlNode Maven / Gradle / Ivy

Go to download

JGraphX Swing Component - Java Graph Visualization Library This is a binary & source redistribution of the original, unmodified JGraphX library originating from: "https://github.com/jgraph/jgraphx/archive/v3.4.1.3.zip". The purpose of this redistribution is to make the library available to other Maven projects.

There is a newer version: 3.4.1.3
Show newest version
/**
 * $Id: mxGraphMlNode.java,v 1.1 2011/09/19 15:10:46 gaudenz Exp $
 * Copyright (c) 2010 David Benson, Gaudenz Alder
 */
package com.mxgraph.io.graphml;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * Represents a Data element in the GML Structure.
 */
public class mxGraphMlNode
{
	private String nodeId;

	private mxGraphMlData nodeData;

	private List nodeGraphList = new ArrayList();

	private HashMap nodeDataMap = new HashMap();

	private HashMap nodePortMap = new HashMap();

	/**
	 * Construct a node with Id and one data element
	 * @param nodeId Node`s ID
	 * @param nodeData Gml Data.
	 */
	public mxGraphMlNode(String nodeId, mxGraphMlData nodeData)
	{
		this.nodeId = nodeId;
		this.nodeData = nodeData;
	}

	/**
	 * Construct a Node from a xml Node Element.
	 * @param nodeElement Xml Node Element.
	 */
	public mxGraphMlNode(Element nodeElement)
	{
		this.nodeId = nodeElement.getAttribute(mxGraphMlConstants.ID);

		//Add data elements
		List dataList = mxGraphMlUtils.childsTags(nodeElement,
				mxGraphMlConstants.DATA);

		for (Element dataElem : dataList)
		{
			mxGraphMlData data = new mxGraphMlData(dataElem);
			String key = data.getDataKey();
			nodeDataMap.put(key, data);
		}

		//Add graph elements
		List graphList = mxGraphMlUtils.childsTags(nodeElement,
				mxGraphMlConstants.GRAPH);

		for (Element graphElem : graphList)
		{
			mxGraphMlGraph graph = new mxGraphMlGraph(graphElem);
			nodeGraphList.add(graph);
		}

		//Add port elements
		List portList = mxGraphMlUtils.childsTags(nodeElement,
				mxGraphMlConstants.PORT);

		for (Element portElem : portList)
		{
			mxGraphMlPort port = new mxGraphMlPort(portElem);
			String name = port.getName();
			nodePortMap.put(name, port);
		}
	}

	public String getNodeId()
	{
		return nodeId;
	}

	public void setNodeId(String nodeId)
	{
		this.nodeId = nodeId;
	}

	public HashMap getNodeDataMap()
	{
		return nodeDataMap;
	}

	public void setNodeDataMap(HashMap nodeDataMap)
	{
		this.nodeDataMap = nodeDataMap;
	}

	public List getNodeGraph()
	{
		return nodeGraphList;
	}

	public void setNodeGraph(List nodeGraph)
	{
		this.nodeGraphList = nodeGraph;
	}

	public HashMap getNodePort()
	{
		return nodePortMap;
	}

	public void setNodePort(HashMap nodePort)
	{
		this.nodePortMap = nodePort;
	}

	/**
	 * Generates a Key Element from this class.
	 * @param document Document where the key Element will be inserted.
	 * @return Returns the generated Elements.
	 */
	public Element generateElement(Document document)
	{
		Element node = document.createElement(mxGraphMlConstants.NODE);

		node.setAttribute(mxGraphMlConstants.ID, nodeId);

		Element dataElement = nodeData.generateNodeElement(document);
		node.appendChild(dataElement);

		for (mxGraphMlPort port : nodePortMap.values())
		{
			Element portElement = port.generateElement(document);
			node.appendChild(portElement);
		}

		for (mxGraphMlGraph graph : nodeGraphList)
		{
			Element graphElement = graph.generateElement(document);
			node.appendChild(graphElement);
		}

		return node;
	}

	public mxGraphMlData getNodeData()
	{
		return nodeData;
	}

	public void setNodeData(mxGraphMlData nodeData)
	{
		this.nodeData = nodeData;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy