Trigger.java 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. /**
  2. Licensed Materials - Property of IBM
  3. IBM Cognos Products: DOCS
  4. (C) Copyright IBM Corp. 2005, 2018
  5. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
  6. IBM Corp.
  7. */
  8. /**
  9. *
  10. * Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  11. * Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  12. *
  13. */
  14. import java.rmi.RemoteException;
  15. import java.util.StringTokenizer;
  16. import javax.xml.namespace.QName;
  17. import org.apache.axis.client.Stub;
  18. import org.apache.axis.message.SOAPHeaderElement;
  19. import com.cognos.developer.schemas.bibus._3.BiBusHeader;
  20. import com.cognos.developer.schemas.bibus._3.CAM;
  21. import com.cognos.developer.schemas.bibus._3.ContentManagerService_PortType;
  22. import com.cognos.developer.schemas.bibus._3.ContentManagerService_ServiceLocator;
  23. import com.cognos.developer.schemas.bibus._3.EventManagementService_PortType;
  24. import com.cognos.developer.schemas.bibus._3.EventManagementService_ServiceLocator;
  25. import com.cognos.developer.schemas.bibus._3.HdrSession;
  26. import com.cognos.developer.schemas.bibus._3.PropEnum;
  27. import com.cognos.developer.schemas.bibus._3.QueryOptions;
  28. import com.cognos.developer.schemas.bibus._3.SearchPathMultipleObject;
  29. import com.cognos.developer.schemas.bibus._3.Sort;
  30. import com.cognos.developer.schemas.bibus._3.XmlEncodedXML;
  31. /**
  32. *
  33. */
  34. public class Trigger
  35. {
  36. private String endpoint;
  37. private ContentManagerService_PortType cmService;
  38. private ContentManagerService_ServiceLocator cmServiceLocator;
  39. private EventManagementService_PortType eventService;
  40. private EventManagementService_ServiceLocator eventServiceLocator;
  41. private XmlEncodedXML credentialXEX;
  42. public Trigger(String serverURLString)
  43. {
  44. this.endpoint = serverURLString;
  45. if (endpoint == null || endpoint.equals(""))
  46. return;
  47. try
  48. {
  49. //initialize the service locators
  50. eventServiceLocator = new EventManagementService_ServiceLocator();
  51. cmServiceLocator = new ContentManagerService_ServiceLocator();
  52. //get the service objects from the locators
  53. eventService = eventServiceLocator.geteventManagementService(new java.net.URL(endpoint));
  54. cmService = cmServiceLocator.getcontentManagerService(new java.net.URL(endpoint));
  55. //Set the axis timeout to 0 (infinite)
  56. //There may be many, many actions due to this trigger
  57. ((Stub)eventService).setTimeout(0);
  58. credentialXEX = new XmlEncodedXML();
  59. }
  60. catch(Exception e)
  61. {
  62. e.printStackTrace();
  63. }
  64. }
  65. public boolean loginAnonymous()
  66. {
  67. if (! loginAnonymousEnabled() )
  68. {
  69. return false;
  70. }
  71. CAM cam = new CAM();
  72. cam.setAction("logon");
  73. HdrSession header = new HdrSession();
  74. BiBusHeader bibus = new BiBusHeader();
  75. bibus.setCAM(cam);
  76. bibus.setHdrSession(header);
  77. ((Stub)cmService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
  78. return true;
  79. }
  80. public boolean login(String namespace, String uid, String passwd)
  81. {
  82. try
  83. {
  84. StringBuffer credentialXML = new StringBuffer();
  85. credentialXML.append("<credential>");
  86. credentialXML.append("<namespace>" + namespace + "</namespace>");
  87. credentialXML.append("<password>" + passwd + "</password>");
  88. credentialXML.append("<username>" + uid + "</username>");
  89. credentialXML.append("</credential>");
  90. credentialXEX.set_value(credentialXML.toString());
  91. cmService.logon(credentialXEX, null);
  92. }
  93. catch (RemoteException e)
  94. {
  95. e.printStackTrace();
  96. return false;
  97. }
  98. try {
  99. SOAPHeaderElement temp = ((Stub)cmService).getResponseHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader");
  100. BiBusHeader bibus = (BiBusHeader)temp.getValueAsType(new QName("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader"));
  101. if (bibus != null)
  102. {
  103. ((Stub)eventService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
  104. return true;
  105. }
  106. } catch (Exception e) {
  107. // TODO Auto-generated catch block
  108. e.printStackTrace();
  109. }
  110. return false;
  111. }
  112. public void logoff()
  113. {
  114. try
  115. {
  116. try{
  117. SOAPHeaderElement temp = ((Stub)eventService).getResponseHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader");
  118. BiBusHeader bibus = (BiBusHeader)temp.getValueAsType(new QName("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader"));
  119. if (bibus != null)
  120. {
  121. ((Stub)cmService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
  122. }
  123. }catch (Exception e){
  124. e.printStackTrace();
  125. }
  126. cmService.logoff();
  127. }
  128. catch (RemoteException e)
  129. {
  130. e.printStackTrace();
  131. }
  132. }
  133. public boolean loginAnonymousEnabled()
  134. {
  135. SearchPathMultipleObject cmSearch = new SearchPathMultipleObject("~");
  136. try
  137. {
  138. cmService.query(
  139. cmSearch,
  140. new PropEnum[] {},
  141. new Sort[] {},
  142. new QueryOptions());
  143. }
  144. catch (java.rmi.RemoteException remoteEx)
  145. {
  146. return false;
  147. }
  148. try {
  149. SOAPHeaderElement temp = ((Stub)cmService).getResponseHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader");
  150. BiBusHeader bibus = (BiBusHeader)temp.getValueAsType(new QName("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader"));
  151. if (bibus != null)
  152. {
  153. ((Stub)eventService).setHeader("http://developer.cognos.com/schemas/bibus/3/", "biBusHeader", bibus);
  154. return true;
  155. }
  156. } catch (Exception e) {
  157. // TODO Auto-generated catch block
  158. e.printStackTrace();
  159. }
  160. return false;
  161. }
  162. public int fireTrigger(String triggerName)
  163. {
  164. try
  165. {
  166. // sn_dg_sdk_method_eventManagementService_trigger_start_1
  167. return eventService.trigger(triggerName);
  168. // sn_dg_sdk_method_eventManagementService_trigger_end_1
  169. }
  170. catch(Exception e)
  171. {
  172. e.printStackTrace();
  173. return 0;
  174. }
  175. }
  176. public static void usage()
  177. {
  178. System.out.println("");
  179. System.out.println("");
  180. System.out.println("Command Line Parameters:");
  181. System.out.println("");
  182. System.out.println("<URL> [ <userName> <password> <nameSpace> ] triggerList [ <delimiter> ]");
  183. System.out.println("");
  184. System.out.println(" Required arguments:");
  185. System.out.println("");
  186. System.out.println(" URL - Server URL");
  187. System.out.println(" eg. \"http://localhost:9300/p2pd/servlet/dispatch\"");
  188. System.out.println(" triggerList - comma separated list of trigger names");
  189. System.out.println(" eg. \"triggerName1,triggerName2,triggerName3\"");
  190. System.out.println("");
  191. 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");
  192. System.out.println(" eg. \"triggerName1|triggerName2|triggerName3\"");
  193. System.out.println("");
  194. System.out.println(" Optional arguments: for use with secured namespace (Anonymous disabled)");
  195. System.out.println("");
  196. System.out.println(" userName - username, valid within the namespace, to run the utility");
  197. System.out.println(" password - password for the given user");
  198. System.out.println(" nameSpace - namespace for the desired user");
  199. System.out.println("");
  200. System.out.println(" Optional argument:");
  201. System.out.println("");
  202. System.out.println(" delimiter - Use a different triggerList delimiter character to override the comma delimiter if trigger names contain commas");
  203. System.out.println(" eg. \"|\"");
  204. System.out.println("");
  205. }
  206. public static void main(String args[])
  207. {
  208. if ((args.length != 2) && // URL triggerList
  209. (args.length != 3) && // URL triggerList delimiter
  210. (args.length != 5) && // URL userName password nameSpace triggerList
  211. (args.length != 6)) // URL userName password nameSpace triggerList delimiter
  212. {
  213. usage();
  214. System.exit(-1);
  215. }
  216. String nameSpace = "";
  217. String passwd = "";
  218. String userName = "";
  219. String triggers = "";
  220. String url;
  221. url = args[0];
  222. String delimiter = ",";
  223. boolean cmIsReady = false;
  224. Trigger myTrigger = new Trigger(url);
  225. if (args.length == 5 || args.length == 6) {
  226. userName = args[1];
  227. passwd = args[2];
  228. nameSpace = args[3];
  229. triggers = args[4];
  230. if (args.length == 6) {
  231. delimiter = args[5];
  232. }
  233. cmIsReady = myTrigger.login(nameSpace,userName,passwd);
  234. }
  235. else
  236. {
  237. triggers = args[1];
  238. if (args.length == 3) {
  239. delimiter = args[2];
  240. }
  241. cmIsReady = myTrigger.loginAnonymous();
  242. }
  243. StringTokenizer triggerTokens = new StringTokenizer(triggers, delimiter);
  244. if (cmIsReady)
  245. {
  246. int totalTriggersFired = 0;
  247. int triggerFired = 0;
  248. while(triggerTokens.hasMoreTokens())
  249. {
  250. String triggerName = triggerTokens.nextToken();
  251. triggerFired = myTrigger.fireTrigger(triggerName);
  252. if ( triggerFired > 0 )
  253. {
  254. System.out.println("Trigger: " + triggerName + " fired successfully");
  255. totalTriggersFired += 1;
  256. }
  257. else
  258. {
  259. System.out.println("");
  260. System.out.println("Failed to fire trigger " + triggerName + ".");
  261. System.out.println("");
  262. System.out.println("Note that if a schedule was not triggered, it may be ");
  263. System.out.println("because the current user does not have sufficient permissions ");
  264. System.out.println("to access the schedule. For more information, see the ");
  265. System.out.println("Administration and Security Guide.");
  266. System.out.println("");
  267. }
  268. }
  269. myTrigger.logoff();
  270. System.exit(totalTriggersFired);
  271. }
  272. else
  273. {
  274. System.out.println("Error: Login Failure - please try again.");
  275. usage();
  276. System.exit(-2);
  277. }
  278. }
  279. }