/**
* $Id: mxGmlPort.java,v 1.1 2010-09-08 14:52:50 david Exp $
* Copyright (c) 2010 David Benson, Gaudenz Alder
*/
package com.mxgraph.io.gml;
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 mxGmlPort
{
private String name;
private HashMap<String, mxGmlData> portDataMap = new HashMap<String, mxGmlData>();
/**
* Construct a Port with name.
* @param name Port Name
*/
public mxGmlPort(String name)
{
this.name = name;
}
/**
* Construct a Port from a xml port Element.
* @param portElement Xml port Element.
*/
public mxGmlPort(Element portElement)
{
this.name = portElement.getAttribute(mxGmlConstants.PORT_NAME);
//Add data elements
List<Element> dataList = mxGmlUtils.childsTags(portElement,
mxGmlConstants.DATA);
for (Element dataElem : dataList)
{
mxGmlData data = new mxGmlData(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, mxGmlData> getPortDataMap()
{
return portDataMap;
}
public void setPortDataMap(HashMap<String, mxGmlData> 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(mxGmlConstants.PORT);
node.setAttribute(mxGmlConstants.PORT_NAME, name);
for (mxGmlData data : portDataMap.values())
{
Element dataElement = data.generateNodeElement(document);
node.appendChild(dataElement);
}
return node;
}
}