/**
Licensed Materials - Property of IBM
IBM Cognos Products: DOCS
(C) Copyright IBM Corp. 2005, 2018
US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
*/
/**
*
* Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
* Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
*
*/
import java.rmi.RemoteException;
import java.util.StringTokenizer;
import javax.xml.namespace.QName;
import org.apache.axis.client.Stub;
import org.apache.axis.message.SOAPHeaderElement;
import com.cognos.developer.schemas.bibus._3.BiBusHeader;
import com.cognos.developer.schemas.bibus._3.CAM;
import com.cognos.developer.schemas.bibus._3.ContentManagerService_PortType;
import com.cognos.developer.schemas.bibus._3.ContentManagerService_ServiceLocator;
import com.cognos.developer.schemas.bibus._3.EventManagementService_PortType;
import com.cognos.developer.schemas.bibus._3.EventManagementService_ServiceLocator;
import com.cognos.developer.schemas.bibus._3.HdrSession;
import com.cognos.developer.schemas.bibus._3.PropEnum;
import com.cognos.developer.schemas.bibus._3.QueryOptions;
import com.cognos.developer.schemas.bibus._3.SearchPathMultipleObject;
import com.cognos.developer.schemas.bibus._3.Sort;
import com.cognos.developer.schemas.bibus._3.XmlEncodedXML;
/**
*
*/
public class Trigger
{
private String endpoint;
private ContentManagerService_PortType cmService;
private ContentManagerService_ServiceLocator cmServiceLocator;
private EventManagementService_PortType eventService;
private EventManagementService_ServiceLocator eventServiceLocator;
private XmlEncodedXML credentialXEX;
public Trigger(String serverURLString)
{
this.endpoint = serverURLString;
if (endpoint == null || endpoint.equals(""))
return;
try
{
//initialize the service locators
eventServiceLocator = new EventManagementService_ServiceLocator();
cmServiceLocator = new ContentManagerService_ServiceLocator();
//get the service objects from the locators
eventService = eventServiceLocator.geteventManagementService(new java.net.URL(endpoint));
cmService = cmServiceLocator.getcontentManagerService(new java.net.URL(endpoint));
//Set the axis timeout to 0 (infinite)
//There may be many, many actions due to this trigger
((Stub)eventService).setTimeout(0);
credentialXEX = new XmlEncodedXML();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public boolean loginAnonymous()
{
if (! loginAnonymousEnabled() )
{
return false;
}
CAM cam = new CAM();
cam.setAction("logon");
HdrSession header = new HdrSession();
BiBusHeader bibus = new BiBusHeader();
bibus.setCAM(cam);
bibus.setHdrSession(header);
((Stub)cmService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
return true;
}
public boolean login(String namespace, String uid, String passwd)
{
try
{
StringBuffer credentialXML = new StringBuffer();
credentialXML.append("");
credentialXML.append("" + namespace + "");
credentialXML.append("" + passwd + "");
credentialXML.append("" + uid + "");
credentialXML.append("");
credentialXEX.set_value(credentialXML.toString());
cmService.logon(credentialXEX, null);
}
catch (RemoteException e)
{
e.printStackTrace();
return false;
}
try {
SOAPHeaderElement temp = ((Stub)cmService).getResponseHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader");
BiBusHeader bibus = (BiBusHeader)temp.getValueAsType(new QName("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader"));
if (bibus != null)
{
((Stub)eventService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
return true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public void logoff()
{
try
{
try{
SOAPHeaderElement temp = ((Stub)eventService).getResponseHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader");
BiBusHeader bibus = (BiBusHeader)temp.getValueAsType(new QName("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader"));
if (bibus != null)
{
((Stub)cmService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
}
}catch (Exception e){
e.printStackTrace();
}
cmService.logoff();
}
catch (RemoteException e)
{
e.printStackTrace();
}
}
public boolean loginAnonymousEnabled()
{
SearchPathMultipleObject cmSearch = new SearchPathMultipleObject("~");
try
{
cmService.query(
cmSearch,
new PropEnum[] {},
new Sort[] {},
new QueryOptions());
}
catch (java.rmi.RemoteException remoteEx)
{
return false;
}
try {
SOAPHeaderElement temp = ((Stub)cmService).getResponseHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader");
BiBusHeader bibus = (BiBusHeader)temp.getValueAsType(new QName("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader"));
if (bibus != null)
{
((Stub)eventService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
return true;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public int fireTrigger(String triggerName)
{
try
{
// sn_dg_sdk_method_eventManagementService_trigger_start_1
return eventService.trigger(triggerName);
// sn_dg_sdk_method_eventManagementService_trigger_end_1
}
catch(Exception e)
{
e.printStackTrace();
return 0;
}
}
public static void usage()
{
System.out.println("");
System.out.println("");
System.out.println("Command Line Parameters:");
System.out.println("");
System.out.println(" [ ] triggerList [ ]");
System.out.println("");
System.out.println(" Required arguments:");
System.out.println("");
System.out.println(" URL - Server URL");
System.out.println(" eg. \"http://localhost:9300/p2pd/servlet/dispatch\"");
System.out.println(" triggerList - comma separated list of trigger names");
System.out.println(" eg. \"triggerName1,triggerName2,triggerName3\"");
System.out.println("");
System.out.println(" NOTE: If using the optional delimiter override parameter defined below, use the delimiter specified in that parameter to separate the trigger names");
System.out.println(" eg. \"triggerName1|triggerName2|triggerName3\"");
System.out.println("");
System.out.println(" Optional arguments: for use with secured namespace (Anonymous disabled)");
System.out.println("");
System.out.println(" userName - username, valid within the namespace, to run the utility");
System.out.println(" password - password for the given user");
System.out.println(" nameSpace - namespace for the desired user");
System.out.println("");
System.out.println(" Optional argument:");
System.out.println("");
System.out.println(" delimiter - Use a different triggerList delimiter character to override the comma delimiter if trigger names contain commas");
System.out.println(" eg. \"|\"");
System.out.println("");
}
public static void main(String args[])
{
if ((args.length != 2) && // URL triggerList
(args.length != 3) && // URL triggerList delimiter
(args.length != 5) && // URL userName password nameSpace triggerList
(args.length != 6)) // URL userName password nameSpace triggerList delimiter
{
usage();
System.exit(-1);
}
String nameSpace = "";
String passwd = "";
String userName = "";
String triggers = "";
String url;
url = args[0];
String delimiter = ",";
boolean cmIsReady = false;
Trigger myTrigger = new Trigger(url);
if (args.length == 5 || args.length == 6) {
userName = args[1];
passwd = args[2];
nameSpace = args[3];
triggers = args[4];
if (args.length == 6) {
delimiter = args[5];
}
cmIsReady = myTrigger.login(nameSpace,userName,passwd);
}
else
{
triggers = args[1];
if (args.length == 3) {
delimiter = args[2];
}
cmIsReady = myTrigger.loginAnonymous();
}
StringTokenizer triggerTokens = new StringTokenizer(triggers, delimiter);
if (cmIsReady)
{
int totalTriggersFired = 0;
int triggerFired = 0;
while(triggerTokens.hasMoreTokens())
{
String triggerName = triggerTokens.nextToken();
triggerFired = myTrigger.fireTrigger(triggerName);
if ( triggerFired > 0 )
{
System.out.println("Trigger: " + triggerName + " fired successfully");
totalTriggersFired += 1;
}
else
{
System.out.println("");
System.out.println("Failed to fire trigger " + triggerName + ".");
System.out.println("");
System.out.println("Note that if a schedule was not triggered, it may be ");
System.out.println("because the current user does not have sufficient permissions ");
System.out.println("to access the schedule. For more information, see the ");
System.out.println("Administration and Security Guide.");
System.out.println("");
}
}
myTrigger.logoff();
System.exit(totalTriggersFired);
}
else
{
System.out.println("Error: Login Failure - please try again.");
usage();
System.exit(-2);
}
}
}