/**
* Copyright 2005 Alcatel, OSP.
*
* 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.alcatel.jsce.servicecreation.du.data.xml;
import java.util.ArrayList;
import java.util.List;
import org.alcatel.jsce.util.log.SCELogger;
import org.mobicents.eclipslee.util.slee.xml.DTDHandler;
import org.mobicents.eclipslee.util.slee.xml.DTDXML;
import org.mobicents.eclipslee.util.slee.xml.components.ComponentNotFoundException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* Description:
* <p>
* Represents the <i>Service</i> xml tag in the osp-deployable-unti.xml file.
* <p>
*
* @author Skhiri dit Gabouje Sabri
*
*/
public class ServiceXML extends DTDXML {
/**
* @param document the XML document
* @param root the root of the SBB
* @param dtd the corresponding DTD
*/
public ServiceXML(Document document, Element root, DTDHandler dtd) {
super(document, root, dtd);
}
public void setServiceFile(String fileLocation) {
setChildText(getRoot(),"service-xml-file", fileLocation);
}
public String getServiceFile() {
return getChildText(getRoot(), "service-xml-file");
}
public ObjectXML[] getObjectXML() {
Element objects[] = getNodes("service/database/objects/object");
List objectsData = new ArrayList();
for (int i = 0; i < objects.length; i++) {
Element object_i = objects[i];
objectsData.add(new ObjectXML(document, object_i, dtd));
}
return (ObjectXML[]) objectsData.toArray(new ObjectXML[objectsData.size()]);
}
public ObjectXML addObjectXML() {
Element objects[] = getNodes("service/database/objects");
if (objects.length > 0) {
//There is only one such a node
Element objectNode = addElement(objects[0], "object");
return new ObjectXML(document, objectNode, dtd);
} else {
/*We must create the objects node, but first verrify if the database node has laready been created*/
Element database[] = getNodes("service/database");
if (database.length > 0) {
//There is only one such a node
Element objectsNode = addElement(database[0], "objects");
Element object = addElement(objectsNode, "object");
return new ObjectXML(document, object, dtd);
} else {
/*We must create the objects node*/
Element databaseNode = addElement(getRoot(), "database");
Element objecstNode = addElement(databaseNode, "objects");
Element object = addElement(objecstNode, "object");
return new ObjectXML(document, object, dtd);
}
}
}
public DefaultUserXML getDefautUser(){
Element nodes[] = getNodes("service/default-user");
if(nodes.length>0){
//There is only one such a node
return new DefaultUserXML(document, nodes[0], dtd);
}else{
String msg = "The node default-user was not found as child of "+ getRoot();
SCELogger.logError(msg, new IllegalStateException(msg));
return null;
}
}
public DefaultUserXML setDefaultUser(String name, String type){
Element nodes[] = getNodes("service/default-user");
if(nodes.length>0){
//There is only one such a node
DefaultUserXML defaultUserXML = new DefaultUserXML(document, nodes[0], dtd);
defaultUserXML.setUserName(name);
defaultUserXML.setUserType(type);
return defaultUserXML;
}else{
Element node = addElement(getRoot(), "default-user");
DefaultUserXML defaultUserXML = new DefaultUserXML(document, node, dtd);
defaultUserXML.setUserName(name);
defaultUserXML.setUserType(type);
return defaultUserXML;
}
}
public ObjectXML getObjectXML(String name, String version, String vendor) {
Element objects[] = getNodes("service/database/objects/object");
for (int i = 0; i < objects.length; i++) {
Element object_i = objects[i];
ObjectXML objectXML = new ObjectXML(document, object_i, dtd);
try {
if(objectXML.getObjectcIdXML().getName().equals(name) && objectXML.getObjectcIdXML().getVersion().equals(version) && objectXML.getObjectcIdXML().getVendor().equals(vendor) ){
return objectXML;
}
} catch (ComponentNotFoundException e) {
SCELogger.logError(e);
}
}
return null;
}
}