/**
* Copyright 2023 Open Text
* The only warranties for products and services of Open Text and its
* affiliates and licensors (“Open Text”) are as may be set forth in the
* express warranty statements accompanying such products and services.
* Nothing herein should be construed as constituting an additional warranty.
* Open Text shall not be liable for technical or editorial errors or
* omissions contained herein.
* The information contained herein is subject to change without notice.
*/
import com.hp.ucmdb.generated.*;
import com.hp.ucmdb.generated.UcmdbFault;
import com.hp.ucmdb.generated.UcmdbServiceStub.*;
import java.net.MalformedURLException;
import java.rmi.RemoteException;
abstract public class QueryDemo extends Demo {
public static void main(String[] args) throws RemoteException, UcmdbFault, MalformedURLException {
UcmdbServiceStub serviceStub = getStub();
getCIsByIdDemo(serviceStub);
getCIsByTypeDemo(serviceStub);
getFilterCIsByTypeWithConditions(serviceStub);
executeTopologyQueryByNameDemo(serviceStub);
executeTopologyQueryByNameWithParametersDemo(serviceStub);
getCINeighboursDemo(serviceStub);//-
}
public static void getCINeighboursDemo(UcmdbServiceStub serviceStub) {
System.out.println("start execute Topology Query neighbour CI");
GetCINeighbours request = new GetCINeighbours();
//set cmdbcontext
request.setCmdbContext(context);
// set CI id
ID id = new ID();
id.setString("42fb561ac0cba5d6be6502f81ee414eb");
request.setID(id);
//set neighbour type
request.setNeighbourType("callhome_event");
GetCINeighboursE requestE = new GetCINeighboursE();
requestE.setGetCINeighbours(request);
try {
GetCINeighboursResponseE responseE =
serviceStub.getCINeighbours(requestE);
GetCINeighboursResponse response = responseE.getGetCINeighboursResponse();
Topology topology = response.getTopology();
System.out.println("end execute Topology Query neighbour CI");
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
}
public static void executeTopologyQueryByNameWithParametersDemo(UcmdbServiceStub serviceStub) {
System.out.println("start execute topology query by name with parameters demo");
ExecuteTopologyQueryByNameWithParameters request = new ExecuteTopologyQueryByNameWithParameters();
//set cmdbcontext
request.setCmdbContext(context);
//set query name
//there should be an existing parametrized query
request.setQueryName("Query_3");
//set parameters
ParameterizedNode parametrizedNode =
new ParameterizedNode();
parametrizedNode.setNodeLabel("ConfigurationItem");
CIProperties parameters = new CIProperties();
StrProps strProps = new StrProps();
StrProp strProp = new StrProp();
//query has one parameter called name
strProp.setName("name");
//the value of the parameter should begin with 'c' following anything else
strProp.setValue("c%");
strProps.addStrProp(strProp);
parameters.setStrProps(strProps);
parametrizedNode.setParameters(parameters);
request.addParameterizedNodes(parametrizedNode);
ExecuteTopologyQueryByNameWithParametersE requestE = new ExecuteTopologyQueryByNameWithParametersE();
requestE.setExecuteTopologyQueryByNameWithParameters(request);
try {
ExecuteTopologyQueryByNameWithParametersResponseE
responseE =
serviceStub.executeTopologyQueryByNameWithParameters
(requestE);
ExecuteTopologyQueryByNameWithParametersResponse response = responseE.getExecuteTopologyQueryByNameWithParametersResponse();
TopologyMap map =
getTopologyMapResult
(response.getTopologyMap(), response.getChunkInfo(), serviceStub);
CINode[] nodes = map.getCINodes().getCINode();
for (int i = 0; i < nodes.length; i++) {
CI ci[] = nodes[i].getCIs().getCI();
for (int j = 0; j < ci.length; j++) {
System.out.println("CI type is " + ci[j].getType() + " ,id is " + ci[j].getID());
}
}
System.out.println("end execute topology query by name with parameters demo");
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
}
public static void executeTopologyQueryByNameDemo(UcmdbServiceStub serviceStub) {
ExecuteTopologyQueryByNameE requestE = new ExecuteTopologyQueryByNameE();
ExecuteTopologyQueryByName request = new ExecuteTopologyQueryByName();
//set cmdbcontext
request.setCmdbContext(context);
//set query name
request.setQueryName("Query_1");
requestE.setExecuteTopologyQueryByName(request);
try {
ExecuteTopologyQueryByNameResponseE responseE =
serviceStub.executeTopologyQueryByName(requestE);
ExecuteTopologyQueryByNameResponse response = responseE.getExecuteTopologyQueryByNameResponse();
TopologyMap map =
getTopologyMapResult
(response.getTopologyMap(), response.getChunkInfo(), serviceStub);
CINode[] nodes = map.getCINodes().getCINode();
for (int i = 0; i < nodes.length; i++) {
CI ci[] = nodes[i].getCIs().getCI();
for (int j = 0; j < ci.length; j++) {
System.out.println("CI type is " + ci[j].getType() + " ,id is " + ci[j].getID());
}
}
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
}
private static void getFilterCIsByTypeWithConditions(UcmdbServiceStub serviceStub) {
System.out.println("start getFilterCIsByTypeWithConditions");
UcmdbServiceStub.GetFilteredCIsByTypeE requestE = new UcmdbServiceStub.GetFilteredCIsByTypeE();
UcmdbServiceStub.GetFilteredCIsByType request = new UcmdbServiceStub.GetFilteredCIsByType();
request.setCmdbContext(context);
request.setType("node"); //anyType gives null pointer exception
CustomProperties customProperties = new CustomProperties();
PropertiesList propertiesList = new PropertiesList();
propertiesList.addPropertyName("name");
propertiesList.addPropertyName("display_label");//properties format is formed with lowercase and underscore
customProperties.setPropertiesList(propertiesList);
request.setProperties(customProperties);
//conditions objects provides a filtering option
Conditions conditions = new Conditions();
StrConditions strConditions = new StrConditions();
StrCondition strCond = new StrCondition();
StrProp strProp = new StrProp();
strProp.setName("name");
strProp.setValue("c%");
strCond.setCondition(strProp);
strCond.setStrOperator(StrOperator_type1.LikeIgnoreCase);
strConditions.addStrCondition(strCond);
BooleanConditions booleanConds = new BooleanConditions();
BooleanCondition booleanCond = new BooleanCondition();
BooleanProp prop = new BooleanProp();
prop.setName("root_enableageing");
prop.setValue(false);
booleanCond.setBooleanOperator(BooleanOperator_type1.Equal);
booleanCond.setCondition(prop);
booleanConds.addBooleanCondition(booleanCond);
conditions.setBooleanConditions(booleanConds);
conditions.setStrConditions(strConditions);
//conditions and contained created above objects must not be null even if there's no logical condition, put empty object
request.setConditions(conditions);
request.setConditionsLogicalOperator(UcmdbServiceStub.ConditionsLogicalOperator_type1.AND);
requestE.setGetFilteredCIsByType(request);
try {
GetFilteredCIsByTypeResponseE responseE = serviceStub.getFilteredCIsByType(requestE);
GetFilteredCIsByTypeResponse response = responseE.getGetFilteredCIsByTypeResponse();
CIs cis = response.getCIs();
CI ci[] = cis.getCI();
for (int i = 0; i < ci.length; i++) {
System.out.println("CI type is " + ci[i].getType() + " ,id is " + ci[i].getID());
}
} catch (RemoteException e) {
//handle exception
System.out.println("RemoteException");
System.out.println(e.toString());
} catch (UcmdbFault e) {
//handle exception
System.out.println("UcmdbFault");
System.out.println(e.toString());
}
System.out.println("getFilterCIsByTypeWithConditions end");
}
public static void getCIsByIdDemo(UcmdbServiceStub serviceStub) {
System.out.println("getCIsByIdDemo begin");
UcmdbServiceStub.GetCIsByIdE getCIsByIde = new UcmdbServiceStub.GetCIsByIdE();
UcmdbServiceStub.GetCIsById getCIsById = new UcmdbServiceStub.GetCIsById();
getCIsById.setCmdbContext(context);
ID ciId[];
ciId = new ID[1];
ciId[0] = new ID();
ciId[0].setString("48474b1562021e6c8410c80665c04e36");// CI id, not global Id
IDs param = new IDs();
param.setID(ciId);
getCIsById.setIDs(param);
getCIsByIde.setGetCIsById(getCIsById);
try {
GetCIsByIdResponseE responseE = serviceStub.getCIsById(getCIsByIde);
GetCIsByIdResponse response = responseE.getGetCIsByIdResponse();
CIs cis = response.getCIs();
CI ci[] = cis.getCI();
for (int i = 0; i < ci.length; i++) {
System.out.println("CI type is " + ci[i].getType() + " ,id is " + ci[i].getID());
}
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
System.out.println("getCIsByIdDemo end");
}
public static void getCIsByTypeDemo(UcmdbServiceStub serviceStub) {
System.out.println("getCIsByTypeDemo begin");
UcmdbServiceStub.GetCIsByTypeE getCIsByTypee = new UcmdbServiceStub.GetCIsByTypeE();
UcmdbServiceStub.GetCIsByType getCIsByType = new UcmdbServiceStub.GetCIsByType();
getCIsByType.setCmdbContext(context);
getCIsByType.setType("node");
getCIsByTypee.setGetCIsByType(getCIsByType);
try {
GetCIsByTypeResponseE responseE = serviceStub.getCIsByType(getCIsByTypee);
GetCIsByTypeResponse response = responseE.getGetCIsByTypeResponse();
CIs cis = response.getCIs();
CI ci[] = cis.getCI();
for (int i = 0; i < ci.length; i++) {
System.out.println("CI type is " + ci[i].getType() + " ,id is " + ci[i].getID());
}
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
System.out.println("getCIsByTypeDemo end");
}
private static TopologyMap getTopologyMapResult(TopologyMap topologyMap, ChunkInfo chunkInfo, UcmdbServiceStub serviceStub) {
if (chunkInfo.getNumberOfChunks() == 0) {
return topologyMap;
} else {
topologyMap = new TopologyMap();
for (int i = 1; i <= chunkInfo.getNumberOfChunks(); i++) {
ChunkRequest chunkRequest = new ChunkRequest();
chunkRequest.setChunkInfo(chunkInfo);
chunkRequest.setChunkNumber(i);
PullTopologyMapChunks req =
new PullTopologyMapChunks();
req.setChunkRequest(chunkRequest);
req.setCmdbContext(context);
PullTopologyMapChunksE reqE =
new PullTopologyMapChunksE();
reqE.setPullTopologyMapChunks(req);
PullTopologyMapChunksResponseE resE;
try {
resE = serviceStub.pullTopologyMapChunks(reqE);
PullTopologyMapChunksResponse res = resE.getPullTopologyMapChunksResponse();
topologyMap = res.getTopologyMap();
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
}
}
return topologyMap;
}
private static TopologyMap getTopologyMapResultFromCIs(CIs cis, ChunkInfo chunkInfo, UcmdbServiceStub serviceStub) {
TopologyMap topologyMap = new TopologyMap();
if (chunkInfo.getNumberOfChunks() == 0) {
CINode ciNode = new CINode();
ciNode.setLabel("");
ciNode.setCIs(cis);
CINodes ciNodes = new CINodes();
ciNodes.addCINode(ciNode);
topologyMap.setCINodes(ciNodes);
} else {
for (int i = 1; i <= chunkInfo.getNumberOfChunks(); i++) {
ChunkRequest chunkRequest =
new ChunkRequest();
chunkRequest.setChunkInfo(chunkInfo);
chunkRequest.setChunkNumber(i);
PullTopologyMapChunks req =
new PullTopologyMapChunks();
req.setChunkRequest(chunkRequest);
req.setCmdbContext(context);
PullTopologyMapChunksE reqE = new PullTopologyMapChunksE();
reqE.setPullTopologyMapChunks(req);
PullTopologyMapChunksResponse res;
PullTopologyMapChunksResponseE resE = null;
try {
resE = serviceStub.pullTopologyMapChunks(reqE);
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
assert resE != null;
res = resE.getPullTopologyMapChunksResponse();
topologyMap = res.getTopologyMap();
}
//release chunks
ReleaseChunks req = new ReleaseChunks();
req.setChunksKey(chunkInfo.getChunksKey());
req.setCmdbContext(context);
ReleaseChunksE reqE = new ReleaseChunksE();
reqE.setReleaseChunks(req);
try {
serviceStub.releaseChunks(reqE);
} catch (RemoteException e) {
//handle exception
} catch (UcmdbFault e) {
//handle exception
}
}
return topologyMap;
}
}