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

ee.sk.digidoc.XmlElemInfo Maven / Gradle / Ivy

package ee.sk.digidoc;

import java.util.Vector;

/**
 * Holds info of an xml element actually encountered in a signed document
 */
public class XmlElemInfo {
	private String m_tag;
	private String m_id;
	private XmlElemInfo m_parent;
	private Vector m_children;
	
	public XmlElemInfo(String tag, String id, XmlElemInfo parent)
	{
		m_tag = tag;
		m_id = id;
		m_parent = parent;
	}
	
	// accessors
	public String getTag() { return m_tag; }
	public String getId() { return m_id; }
	public XmlElemInfo getParent() { return m_parent; }
	
	public String getPath(boolean bWithId)
	{
		StringBuffer sb = new StringBuffer();
		XmlElemInfo e = this;
		do {
			sb.insert(0, e.getTag());
			sb.insert(0, "/");
			e = e.getParent();
		} while(e != null);
		if(bWithId && m_id != null) {
		  sb.append("@id=");
		  sb.append(m_id);
		}
		return sb.toString();
	}
	
	public void addChild(XmlElemInfo e)
	{
		if(m_children == null)
			m_children = new Vector();
		m_children.add(e);
	}
	
	public Vector getPathTags()
	{
		Vector vec = new Vector();
		XmlElemInfo e = this;
		do {
			vec.insertElementAt(e.getTag(), 0);
			e = e.getParent();
		} while(e != null);
		return vec;
	}
	
	public void findElementsWithTag(Vector vec, String tag)
	{
		if(m_tag.equals(tag))
			vec.add(this);
		for(int i = 0; (m_children != null) && (i < m_children.size()); i++) {
			XmlElemInfo e = (XmlElemInfo)m_children.get(i);
			e.findElementsWithTag(vec, tag);
		}
	}
	
	public XmlElemInfo getRootElem()
	{
		if(m_parent != null)
			return m_parent.getRootElem();
		else
			return this;
	}
	
	public String getRootTag()
	{
		XmlElemInfo eRoot = getRootElem();
		if(eRoot != null)
			return eRoot.getTag();
		return null;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy