/** Licensed Materials - Property of IBM IBM Cognos Products: DOCS (C) Copyright IBM Corp. 2005 US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Web.Services.Protocols; using SamplesCommon; using cognosdotnet_10_2; namespace SamplesCommon { /// /// Summary description for SamplesConnect. /// public class SamplesConnect : System.Windows.Forms.Form { private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox serverUrlTB; private System.Windows.Forms.Button buttonOK; private System.Windows.Forms.Button buttonCancel; private System.Windows.Forms.Label connectLBL; /// /// Required designer variable. /// private System.ComponentModel.Container components = null; // sn_dg_prm_smpl_connect_start_0 private agentService cBIAS = null; // sn_dg_prm_smpl_connect_end_0 private batchReportService1 cBIBRS = null; private contentManagerService1 cBICMS = null; private dataIntegrationService1 cBIDIS = null; private deliveryService1 cBIDS = null; private eventManagementService1 cBIEMS = null; private jobService1 cBIJS = null; private monitorService1 cBIMS = null; private reportService1 cBIRS = null; private systemService1 cBISS = null; private string cBIUrl = ""; private string errorText = null; private bool connectedToServer = false; private static string savedUserName = ""; private static string savedUserPassword = ""; private static string savedNamespace = ""; private static string savedAccountSearchPath = ""; public SamplesConnect() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SamplesConnect)); this.label1 = new System.Windows.Forms.Label(); this.serverUrlTB = new System.Windows.Forms.TextBox(); this.buttonOK = new System.Windows.Forms.Button(); this.buttonCancel = new System.Windows.Forms.Button(); this.connectLBL = new System.Windows.Forms.Label(); this.SuspendLayout(); // // label1 // this.label1.Location = new System.Drawing.Point(10, 23); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(69, 16); this.label1.TabIndex = 0; this.label1.Text = "Server URL"; this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // serverUrlTB // this.serverUrlTB.Location = new System.Drawing.Point(87, 23); this.serverUrlTB.Name = "serverUrlTB"; this.serverUrlTB.Size = new System.Drawing.Size(312, 20); this.serverUrlTB.TabIndex = 1; this.serverUrlTB.Text = "http://localhost:9300/p2pd/servlet/dispatch"; this.serverUrlTB.KeyDown += new System.Windows.Forms.KeyEventHandler(this.serverUrlTB_OnKeyPress); // // buttonOK // this.buttonOK.Location = new System.Drawing.Point(239, 55); this.buttonOK.Name = "buttonOK"; this.buttonOK.Size = new System.Drawing.Size(75, 23); this.buttonOK.TabIndex = 2; this.buttonOK.Text = "OK"; this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click); this.buttonOK.KeyDown += new System.Windows.Forms.KeyEventHandler(this.buttonOK_OnKeyPress); // // buttonCancel // this.buttonCancel.Location = new System.Drawing.Point(327, 55); this.buttonCancel.Name = "buttonCancel"; this.buttonCancel.Size = new System.Drawing.Size(75, 23); this.buttonCancel.TabIndex = 3; this.buttonCancel.Text = "Cancel"; this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); this.buttonCancel.KeyDown += new System.Windows.Forms.KeyEventHandler(this.buttonCancel_OnKeyPress); // // connectLBL // this.connectLBL.Location = new System.Drawing.Point(24, 55); this.connectLBL.Name = "connectLBL"; this.connectLBL.Size = new System.Drawing.Size(152, 23); this.connectLBL.TabIndex = 4; // // SamplesConnect // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(414, 86); this.Controls.Add(this.connectLBL); this.Controls.Add(this.buttonCancel); this.Controls.Add(this.buttonOK); this.Controls.Add(this.serverUrlTB); this.Controls.Add(this.label1); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "SamplesConnect"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Connect to server"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private void buttonOK_Click(object sender, System.EventArgs e) { connectLBL.Visible = true; connectLBL.Text = "Connecting..."; cBICMS = new contentManagerService1(); if (cBICMS != null) { //Test for Anonymous Authentication Boolean bTestAnonymous = false; try { cBIUrl = serverUrlTB.Text; cBICMS.Url = cBIUrl; searchPathMultipleObject homeDirSearchPath = new searchPathMultipleObject(); homeDirSearchPath.Value = "~"; baseClass[] bc = CBICMS.query ( homeDirSearchPath, new propEnum[]{} , new sort[]{}, new queryOptions () ); if (bc != null) { bTestAnonymous = true; } } catch(Exception ex) { if (ex == null) { } //if security is enabled, we will end up here } if (bTestAnonymous == true) { connectedToServer = true; connectLBL.Visible = true; connectLBL.Text = "Connected."; savedAccountSearchPath = "CAMID(\"::Anonymous\")"; } else { // Attempt to log on. SamplesLogon logon = new SamplesLogon( this ); logon.setUserName(savedUserName); logon.setUserPassword(savedUserPassword); logon.setNamespace(savedNamespace); logon.ShowDialog( ); if( !logon.loggedOn ) { errorText = ( "Connection to server: Unable to log on." ); connectedToServer = false; connectLBL.Visible = false; return; } else { connectedToServer = true; savedUserName = logon.getUserName(); savedUserPassword = logon.getUserPassword(); savedNamespace = logon.getNamespace(); connectLBL.Visible = true; connectLBL.Text = "Connected."; savedAccountSearchPath = getLogonAccount(this).searchPath.value;; } } } this.Close(); } private void buttonCancel_Click(object sender, System.EventArgs e) { connectedToServer = false; this.Close(); } public bool IsConnectedToCBI() { return connectedToServer; } public string GetAccountPath() { return savedAccountSearchPath; } public string GetErrorText() { return errorText; } public string getUserName() { return savedUserName; } public string getUserPassword() { return savedUserPassword; } public string getNamespace() { return savedNamespace; } private void serverUrlTB_OnKeyPress(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { buttonOK_Click(sender, e); } else if (e.KeyCode == Keys.Escape) { this.Close(); } } private void buttonOK_OnKeyPress(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { this.Close(); } } private void buttonCancel_OnKeyPress(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Escape) { this.Close(); } } public bool makeCLConnection(ref string cBIUrl, ref string userName, ref string userPassword, ref string userNamespace, ref bool isAnonymous) { Console.WriteLine("Connecting..."); cBICMS = new contentManagerService1(); if (cBICMS == null) { Console.WriteLine("Unable to get a contentManagerService1 instance."); return false; } //Test for Anonymous Authentication try { // sn_dg_prm_smpl_connect_start_1 cBIUrl = "http://localhost:9300/p2pd/servlet/dispatch"; cBICMS.Url = cBIUrl; // sn_dg_prm_smpl_connect_end_1 searchPathMultipleObject homeDirSearchPath = new searchPathMultipleObject(); homeDirSearchPath.Value = "~"; baseClass[] bc = cBICMS.query ( homeDirSearchPath, new propEnum[]{} , new sort[]{}, new queryOptions () ); if (bc != null) { isAnonymous = true; } } catch(Exception ex) { // Anonymous if OFF isAnonymous = false; if (0 != ex.Message.CompareTo("The client did something wrong")) { SamplesException.ShowExceptionMessage("\n" + ex.Message, false, "Error connecting to server"); return false; } } if (isAnonymous == true) { // Anonymous if ON connectedToServer = true; Console.WriteLine("Connected."); return true; } else { // Attempt to log on. if ( (userName == null) || (0 == userName.CompareTo("")) ) { Console.Write("userName: "); userName = Console.ReadLine(); } if ( (userPassword == null) || (0 == userPassword.CompareTo("")) ) { Console.Write("userPassword: "); userPassword = Console.ReadLine(); } if ( (userNamespace == null) || (0 == userNamespace.CompareTo("")) ) { Console.Write("userNamespace: "); userNamespace = Console.ReadLine(); } SamplesLogon logon = new SamplesLogon(this); logon.specificUserLogon(false, userName, userPassword, userNamespace); if( !logon.loggedOn ) { Console.WriteLine("Unable to connect to server." ); connectedToServer = false; return false; } else { connectedToServer = true; savedUserName = logon.getUserName(); savedUserPassword = logon.getUserPassword(); savedNamespace = logon.getNamespace(); Console.WriteLine("Connected."); return true; } } } public static account getLogonAccount(SamplesConnect connectedAs) { propEnum[] props = new propEnum[] { propEnum.searchPath, propEnum.defaultName, propEnum.policies }; account myAccount = null; if (connectedAs.CBICMS == null) { Console.WriteLine("Invalid parameter passed to function logon."); return myAccount; } try { searchPathMultipleObject dummy = new searchPathMultipleObject(); dummy.Value = "~"; baseClass[] bc = connectedAs.CBICMS.query(dummy, props, new sort[] {}, new queryOptions()); if ((bc != null) && (bc.Length == 1)) { myAccount = (account)bc[0]; } } catch (Exception ex) { //An exception here likely indicates the client is not currently //logged in, so the query fails. Console.WriteLine("Caught Exception:\n" + ex.Message); } return myAccount; } public credential getCredential() { baseClass[] results; searchPathMultipleObject credSearchPath = new searchPathMultipleObject(); credSearchPath.Value = "~/credential[@name='Credential']"; results = CBICMS.query(credSearchPath, new propEnum[] {}, new sort[] {}, new queryOptions()); for (int i = 0; i < results.Length; i++) { if (results[i] is credential) { return (credential) results[i]; } } return addCredential(); } public credential addCredential() { credential mCredential = new credential(); anyTypeProp mCredentials = new anyTypeProp(); mCredentials.value = credentialString; baseClass[] addedObjects; //Prepare the name property for the new credential object multilingualToken[] names = new multilingualToken[1]; names[0] = new multilingualToken(); locale[] locales = getLocale(); names[0].locale = locales[0].locale1; names[0].value = "Credential"; multilingualTokenProp credNameTokenProp = new multilingualTokenProp(); credNameTokenProp.value = names; //Add the searchPath, name and defaultname to the new credential object mCredential.name = credNameTokenProp; mCredential.credentials = mCredentials; baseClass[] addArray = new baseClass[1]; addArray[0] = mCredential; //Add the credential object to the content store searchPathSingleObject parentPath = new searchPathSingleObject(); parentPath.Value = getLogonAccount(this).searchPath.value; addOptions ao = new addOptions(); ao.updateAction = updateActionEnum.replace; try { addedObjects = CBICMS.add(parentPath, addArray, ao); for (int i = 0; i < addedObjects.Length; i++) { if (addedObjects[i] is credential) { return (credential) addedObjects[i]; } } } catch (Exception ex) { Console.WriteLine("Caught Exception:\n" + ex.Message); } return null; } public locale[] getLocale() { configurationData data = null; locale[] locales = null; configurationDataEnum[] config = new configurationDataEnum[1]; config[0] = configurationDataEnum.serverLocale; try { /** * Use this method to retrieve global configuration data. * * Input Parameters * * config * Specifies the set of properties to be returned. * * Return Value * This method returns the server locale. */ data = CBISS.getConfiguration(config); locales = data.serverLocale; if (locales == null) { Console.WriteLine("No serverLocale configured!"); } } catch(Exception ex) { Console.WriteLine("Caught Exception:\n" + ex.Message); } return locales; } //property definition for the server URL public string CBIURL { get { return cBIUrl; } } public string credentialString { get { string credentialXML = ""; //Namespace if (savedNamespace != "") { credentialXML += ""; credentialXML += savedNamespace; credentialXML += ""; } //Username credentialXML += ""; if (savedUserName == "") { credentialXML += "Anonymous"; } else { credentialXML += savedUserName; } credentialXML += ""; //Password if (savedUserPassword != "") { credentialXML += ""; credentialXML += savedUserPassword; credentialXML += ""; } credentialXML += ""; return credentialXML; } } //property definitions to give read access the various service objects // //header and url information is retrieved from the contentManagerService1 object //as this it the service used to connect and logon. public agentService CBIAS { get { // sn_dg_prm_smpl_connect_start_2 if (cBIAS == null) { cBIAS = new agentService(); cBIAS.Url = cBICMS.Url; } if (cBIAS.biBusHeaderValue == null) { cBIAS.biBusHeaderValue = cBICMS.biBusHeaderValue; } // sn_dg_prm_smpl_connect_end_2 return cBIAS; } } public batchReportService1 CBIBRS { get { if (cBIBRS == null) { cBIBRS = new batchReportService1(); cBIBRS.Url = cBICMS.Url; } if (cBIBRS.biBusHeaderValue == null) { cBIBRS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBIBRS; } } public contentManagerService1 CBICMS { //This service is the initial connect and logon point. //It _must_ be initialized before calling this accessor. get { return cBICMS; } } public dataIntegrationService1 CBIDIS { get { if (cBIDIS == null) { cBIDIS = new dataIntegrationService1(); cBIDIS.Url = cBICMS.Url; } if (cBIDIS.biBusHeaderValue == null) { cBIDIS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBIDIS; } } public deliveryService1 CBIDS { get { if (cBIDS == null) { cBIDS = new deliveryService1(); cBIDS.Url = cBICMS.Url; } if (cBIDS.biBusHeaderValue == null) { cBIDS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBIDS; } } public eventManagementService1 CBIEMS { get { if (cBIEMS == null) { cBIEMS = new eventManagementService1(); cBIEMS.Url = cBICMS.Url; } if (cBIEMS.biBusHeaderValue == null) { cBIEMS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBIEMS; } } public jobService1 CBIJS { get { if (cBIJS == null) { cBIJS = new jobService1(); cBIJS.Url = cBICMS.Url; } if (cBIJS.biBusHeaderValue == null) { cBIJS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBIJS; } } public monitorService1 CBIMS { get { if (cBIMS == null) { cBIMS = new monitorService1(); cBIMS.Url = cBICMS.Url; } if (cBIMS.biBusHeaderValue == null) { cBIMS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBIMS; } } public reportService1 CBIRS { get { if (cBIRS == null) { cBIRS = new reportService1(); cBIRS.Url = cBICMS.Url; } if (cBIRS.biBusHeaderValue == null) { cBIRS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBIRS; } } public systemService1 CBISS { get { if (cBISS == null) { cBISS = new systemService1(); cBISS.Url = cBICMS.Url; } if (cBISS.biBusHeaderValue == null) { cBISS.biBusHeaderValue = cBICMS.biBusHeaderValue; } return cBISS; } } } }