/** * Copyright 2005 Open Cloud Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.mobicents.eclipslee.util.slee.xml.components; import org.mobicents.eclipslee.util.slee.xml.DTDHandler; import org.mobicents.eclipslee.util.slee.xml.DTDXML; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * @author cath */ public class ProfileSpecXML extends DTDXML { /** * Can only be created by classes in the same package. * * @param document the parent Document * @param root the profile-spec element relating to this profile specification */ protected ProfileSpecXML(Document document, Element root, DTDHandler dtd) { super(document, root, dtd); } public String getName() { return getChildText(getRoot(), "profile-spec-name"); } public void setName(String name) { setChildText(getRoot(), "profile-spec-name", name); } public String getVendor() { return getChildText(getRoot(), "profile-spec-vendor"); } public void setVendor(String vendor) { setChildText(getRoot(), "profile-spec-vendor", vendor); } public String getVersion() { return getChildText(getRoot(), "profile-spec-version"); } public void setVersion(String version) { setChildText(getRoot(), "profile-spec-version", version); } public String getDescription() { return getChildText(getRoot(), "description"); } public void setDescription(String description) { setChildText(getRoot(), "description", description); } public void setCMPInterfaceName(String name) { Element classes = getChild(getRoot(), "profile-classes"); if (classes == null) classes = addElement(getRoot(), "profile-classes"); setChildText(classes, "profile-cmp-interface-name", name); } public String getCMPInterfaceName() { Element classes = getChild(getRoot(), "profile-classes"); if (classes == null) return null; return getChildText(classes, "profile-cmp-interface-name"); } /** * * @param name the name of the management interface, null to remove */ public void setManagementInterfaceName(String name) { Element classes = getChild(getRoot(), "profile-classes"); if (classes == null) classes = addElement(getRoot(), "profile-classes"); if (name == null) { Element child = this.getChild(classes, "profile-management-interface-name"); if (child != null) classes.removeChild(child); return; } setChildText(classes, "profile-management-interface-name", name); } public String getManagementInterfaceName() { Element classes = getChild(getRoot(), "profile-classes"); if (classes == null) return null; return getChildText(classes, "profile-management-interface-name"); } /** * * @param name the name of the management abstract class, null to remove */ public void setManagementAbstractClassName(String name) { Element classes = getChild(getRoot(), "profile-classes"); if (classes == null) classes = addElement(getRoot(), "profile-classes"); if (name == null) { Element child = this.getChild(classes, "profile-management-abstract-class-name"); if (child != null) classes.removeChild(child); return; } setChildText(classes, "profile-management-abstract-class-name", name); } public String getManagementAbstractClassName() { Element classes = getChild(getRoot(), "profile-classes"); if (classes == null) return null; return getChildText(classes, "profile-management-abstract-class-name"); } public Element[] getIndexedAttributes() { return getNodes(getRoot(), "profile-spec/profile-index"); } public Element getIndexedAttribute(String cmpName) { Element attrs[] = getIndexedAttributes(); for (int i = 0; i < attrs.length; i++) { Element attr = attrs[i]; if (cmpName.equals(getTextData(attr))) return attr; } return null; } public Element addIndexedAttribute(String name, boolean unique) throws DuplicateComponentException { if (getIndexedAttribute(name) != null) throw new DuplicateComponentException("CMP field is already indexed."); Element attr = addElement(getRoot(), "profile-index"); this.setTextData(attr, name); attr.setAttribute("unique", (unique ? "True" : "False")); return attr; } public void removeIndexedAttribute(String name) throws ComponentNotFoundException { Element attr = getIndexedAttribute(name); if (attr == null) throw new ComponentNotFoundException("Attribute not found."); attr.getParentNode().appendChild(attr); } public String toString() { return "Profile: " + getName() + "," + getVersion() + "," + getVendor(); } }