/**
* $Id: mxGraphMlPort.java,v 1.1 2012/11/15 13:26:45 gaudenz Exp $
* Copyright (c) 2010 David Benson, Gaudenz Alder
*/
package com.mxgraph.io.graphml;
import java.util.HashMap;
import java.util.List;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Represents a Port element in the GML Structure.
*/
public class mxGraphMlPort
{
private String name;
private HashMap<String, mxGraphMlData> portDataMap = new HashMap<String, mxGraphMlData>();
/**
* Construct a Port with name.
* @param name Port Name
*/
public mxGraphMlPort(String name)
{
this.name = name;
}
/**
* Construct a Port from a xml port Element.
* @param portElement Xml port Element.
*/
public mxGraphMlPort(Element portElement)
{
this.name = portElement.getAttribute(mxGraphMlConstants.PORT_NAME);
//Add data elements
List<Element> dataList = mxGraphMlUtils.childsTags(portElement,
mxGraphMlConstants.DATA);
for (Element dataElem : dataList)
{
mxGraphMlData data = new mxGraphMlData(dataElem);
String key = data.getDataKey();
portDataMap.put(key, data);
}
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public HashMap<String, mxGraphMlData> getPortDataMap()
{
return portDataMap;
}
public void setPortDataMap(HashMap<String, mxGraphMlData> nodeDataMap)
{
this.portDataMap = nodeDataMap;
}
/**
* 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.PORT);
node.setAttribute(mxGraphMlConstants.PORT_NAME, name);
for (mxGraphMlData data : portDataMap.values())
{
Element dataElement = data.generateNodeElement(document);
node.appendChild(dataElement);
}
return node;
}
}