/******************************************************************************* * Copyright (c) 2011 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.cdi.seam.config.core.xml; import java.util.ArrayList; import java.util.List; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.w3c.dom.Node; /** * * @author Viacheslav Kabanovich * */ public class SAXElement extends SAXNode { protected String uri; protected String localName; protected String name; protected Location nameLocation; protected Map<String, SAXAttribute> attributes = new HashMap<String, SAXAttribute>(); protected SAXText text; protected SAXElement parent = null; protected List<SAXElement> children = new ArrayList<SAXElement>(); public SAXElement() {} public SAXElement(Node node) { setName(node.getNodeName()); setLocalName(node.getLocalName()); setURI(node.getNamespaceURI()); } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setNameLocation(Location location) { nameLocation = location; } public Location getNameLocation() { return nameLocation; } public void setURI(String uri) { this.uri = uri; } public String getURI() { return uri; } public void setLocalName(String name) { localName = name; } public String getLocalName() { return localName; } public String getPrefix() { return (name != null && name.indexOf(":") >= 0) ? name.substring(0, name.indexOf(":")) : null; } public void setTextNode(SAXText text) { this.text = text; } public SAXText getTextNode() { return text; } public void addAttribute(SAXAttribute a) { a.setParent(this); attributes.put(a.getName(), a); } public boolean hasAttribute(String name) { return attributes.containsKey(name); } public SAXAttribute getAttribute(String name) { return attributes.get(name); } public Set<String> getAttributeNames() { return attributes.keySet(); } public void addChildElement(SAXElement child) { child.setParent(this); children.add(child); } public List<SAXElement> getChildElements() { return children; } public void setParent(SAXElement parent) { this.parent = parent; } public SAXElement getParent() { return parent; } }