//////////////////////////////////////////////////////////////////////// // METHOD: ParseExtendedPropertiesParam private bool ParseExtendedPropertiesParam(out ExtendedPropertyIdentifier child) { string[] props = m_paramExtendedProperties.Split('='); string childInfo = props[0]; int lastDot = childInfo.LastIndexOf('.'); child.FieldName = childInfo.Substring(lastDot + 1, childInfo.Length - (lastDot + 1)); child.LongTableName = childInfo.Substring(0, lastDot); lastDot = child.LongTableName.LastIndexOf('.'); if (lastDot >= 0) { child.TableName = child.LongTableName.Substring(lastDot + 1); } else { child.TableName = child.LongTableName; } child.Value = props[1]; return(true); }
//////////////////////////////////////////////////////////////////////// // METHOD: SetExtendedPropertyValues private bool SetExtendedPropertyValues(IJTXAuxRecord childRecord, ExtendedPropertyIdentifier exPropIdentifier) { int fieldIndex = GetFieldIndex(childRecord, exPropIdentifier); childRecord.set_Data(fieldIndex, exPropIdentifier.Value); childRecord.Store(); return(true); }
//////////////////////////////////////////////////////////////////////// // METHOD: GetFieldIndex private int GetFieldIndex(IJTXAuxRecord record, ExtendedPropertyIdentifier exPropIdentifier) { for (int i = 0; i < record.Count; i++) { string propertyName = record.get_PropName(i).ToUpper(); if (propertyName.Equals(exPropIdentifier.FieldName.ToUpper())) { return(i); } } throw new Exception("Unable to find field name " + exPropIdentifier.FieldName + " in " + exPropIdentifier.TableName); }
//////////////////////////////////////////////////////////////////////// // METHOD: CreateExtendedPropertyRecord private bool CreateExtendedPropertyRecord(IJTXJob job, ExtendedPropertyIdentifier child) { IJTXAuxProperties pAuxProps = (IJTXAuxProperties)job; IJTXAuxRecordContainer pAuxContainer = pAuxProps.GetRecordContainer(child.LongTableName); if (!string.IsNullOrEmpty(m_paramExtendedProperties) && pAuxContainer == null) { string msg = string.Format( "Unable to set extended property for child job {0}. Unable to find child job's extended property table: {1}", job.ID, child.LongTableName); m_ipDatabase.LogMessage(3, 2000, msg); } System.Array contNames = pAuxProps.ContainerNames; System.Collections.IEnumerator contNamesEnum = contNames.GetEnumerator(); contNamesEnum.Reset(); while (contNamesEnum.MoveNext()) { try { string strContainerName = (string)contNamesEnum.Current; if (!string.IsNullOrEmpty(m_paramExtendedProperties) && (strContainerName.ToUpper()).Equals(child.LongTableName.ToUpper())) { pAuxContainer = pAuxProps.GetRecordContainer(strContainerName); if (pAuxContainer.RelationshipType != esriRelCardinality.esriRelCardinalityOneToOne) { throw new Exception("The table relationship is not one-to-one."); } IJTXAuxRecord childRecord = pAuxContainer.GetRecords().get_Item(0);//pAuxContainer.CreateRecord(); SetExtendedPropertyValues(childRecord, child); JobUtilities.LogJobAction(m_ipDatabase, job, Constants.ACTTYPE_UPDATE_EXT_PROPS, "", null); } } catch (Exception ex) { string msg = string.Format( "Unable to create extended property {0} in record for jobid {1}. ERROR: {2}", child.FieldName, job.ID, ex.Message); m_ipDatabase.LogMessage(3, 2000, msg); } } return(true); }
//////////////////////////////////////////////////////////////////////// // METHOD: GetFieldIndex private int GetFieldIndex(IJTXAuxRecord record, ExtendedPropertyIdentifier exPropIdentifier) { for (int i = 0; i < record.Count; i++) { string propertyName = record.get_PropName(i).ToUpper(); if (propertyName.Equals(exPropIdentifier.FieldName.ToUpper())) { return i; } } throw new Exception("Unable to find field name " + exPropIdentifier.FieldName + " in " + exPropIdentifier.TableName); }
//////////////////////////////////////////////////////////////////////// // METHOD: SetExtendedPropertyValues private bool SetExtendedPropertyValues(IJTXAuxRecord childRecord, ExtendedPropertyIdentifier exPropIdentifier) { int fieldIndex = GetFieldIndex(childRecord, exPropIdentifier); childRecord.set_Data(fieldIndex, exPropIdentifier.Value); childRecord.Store(); return true; }
//////////////////////////////////////////////////////////////////////// // METHOD: CreateExtendedPropertyRecord private bool CreateExtendedPropertyRecord(IJTXJob job, ExtendedPropertyIdentifier child) { IJTXAuxProperties pAuxProps = (IJTXAuxProperties)job; IJTXAuxRecordContainer pAuxContainer = pAuxProps.GetRecordContainer(child.LongTableName); if (!string.IsNullOrEmpty(m_paramExtendedProperties) && pAuxContainer == null) { string msg = string.Format( "Unable to set extended property for child job {0}. Unable to find child job's extended property table: {1}", job.ID, child.LongTableName); m_ipDatabase.LogMessage(3, 2000, msg); } System.Array contNames = pAuxProps.ContainerNames; System.Collections.IEnumerator contNamesEnum = contNames.GetEnumerator(); contNamesEnum.Reset(); while (contNamesEnum.MoveNext()) { try { string strContainerName = (string)contNamesEnum.Current; if (!string.IsNullOrEmpty(m_paramExtendedProperties) && (strContainerName.ToUpper()).Equals(child.LongTableName.ToUpper())) { pAuxContainer = pAuxProps.GetRecordContainer(strContainerName); if (pAuxContainer.RelationshipType != esriRelCardinality.esriRelCardinalityOneToOne) { throw new Exception("The table relationship is not one-to-one."); } IJTXAuxRecord childRecord = pAuxContainer.GetRecords().get_Item(0);//pAuxContainer.CreateRecord(); SetExtendedPropertyValues(childRecord, child); JobUtilities.LogJobAction(m_ipDatabase, job, Constants.ACTTYPE_UPDATE_EXT_PROPS, "", null); } } catch (Exception ex) { string msg = string.Format( "Unable to create extended property {0} in record for jobid {1}. ERROR: {2}", child.FieldName, job.ID, ex.Message); m_ipDatabase.LogMessage(3, 2000, msg); } } return true; }
//////////////////////////////////////////////////////////////////////// // METHOD: ParseExtendedPropertiesParam private bool ParseExtendedPropertiesParam(out ExtendedPropertyIdentifier child) { string[] props = m_paramExtendedProperties.Split('='); string childInfo = props[0]; int lastDot = childInfo.LastIndexOf('.'); child.FieldName = childInfo.Substring(lastDot + 1, childInfo.Length - (lastDot + 1)); child.LongTableName = childInfo.Substring(0, lastDot); lastDot = child.LongTableName.LastIndexOf('.'); if (lastDot >= 0) { child.TableName = child.LongTableName.Substring(lastDot + 1); } else { child.TableName = child.LongTableName; } child.Value = props[1]; return true; }
//////////////////////////////////////////////////////////////////////// // METHOD: SetJobProperties private IJTXJob SetJobProperties(IJTXJobManager pJobMan, IJTXJob pJob, IJTXJob2 pParentJob) { m_ipDatabase.LogMessage(5, 2000, "Before LogJobAction (CreateJobs)"); IJTXActivityType pActType = m_ipDatabase.ConfigurationManager.GetActivityType(Constants.ACTTYPE_COMMENT); pParentJob.LogJobAction(pActType, null, String.Format(Properties.Resources.ActTypeMessage, pJob.ID.ToString())); if (!string.IsNullOrEmpty(m_paramExtendedProperties)) { m_ipDatabase.LogMessage(5, 2000, "Before Create Extended Properties"); ExtendedPropertyIdentifier childExProps = new ExtendedPropertyIdentifier(); try { ParseExtendedPropertiesParam(out childExProps); } catch (Exception ex) { string msg = string.Format( "Unable to read parent job's extended property. Job ID: {0} ERROR: {1}", pParentJob.ID, ex.Message); m_ipDatabase.LogMessage(3, 1000, msg); } try { CreateExtendedPropertyRecord(pJob, childExProps); } catch (Exception ex) { string msg = string.Format( "Unable to set child job's extended property. Child Job ID: {0} ERROR: {1}", pJob.ID, ex.Message); m_ipDatabase.LogMessage(3, 1000, msg); } m_ipDatabase.LogMessage(5, 2000, "After Create Extended Properties"); } // Create dependencies on parent job if configured m_ipDatabase.LogMessage(5, 2000, "Before Setting Dependencies"); if (m_paramDependNextStep || m_paramDependThisStep) { IJTXJobDependencies ipDependencyManager = pJobMan as IJTXJobDependencies; CreateDependencyOnParentJob(ipDependencyManager, pParentJob, pJob.ID); } m_ipDatabase.LogMessage(5, 2000, "After Setting Dependencies"); // Create or assign version if configured m_ipDatabase.LogMessage(5, 2000, "Before Versioning"); if (m_paramCreateVersionType != CreateVersionType.None) { if (pParentJob.ActiveDatabase != null && !String.IsNullOrEmpty(pJob.ParentVersion) && (m_paramCreateVersionType != CreateVersionType.UseParentJobsVersion || pParentJob.VersionExists())) CreateChildVersion(ref pJob); else MessageBox.Show("Could not create version. Please ensure parent data workspace and versions are set correctly", Properties.Resources.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning); } else if (m_paramAssignVersionType != AssignVersionType.None) { if (pParentJob.ActiveDatabase != null) AssignChildVersion(pParentJob, ref pJob); else MessageBox.Show("Could not assign version. Please ensure parent data workspace is set correctly", Properties.Resources.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning); } m_ipDatabase.LogMessage(5, 2000, "After Versioning"); // Store the job and save the changes m_ipDatabase.LogMessage(5, 2000, "Before Storing Job"); pJob.Store(); m_ipDatabase.LogMessage(5, 2000, "After Storing Job"); return pJob; }
//////////////////////////////////////////////////////////////////////// // METHOD: SetJobProperties private IJTXJob SetJobProperties(IJTXJobManager pJobMan, IJTXJob pJob, IJTXJob2 pParentJob) { m_ipDatabase.LogMessage(5, 2000, "Before LogJobAction (CreateJobs)"); IJTXActivityType pActType = m_ipDatabase.ConfigurationManager.GetActivityType(Constants.ACTTYPE_COMMENT); pParentJob.LogJobAction(pActType, null, String.Format(Properties.Resources.ActTypeMessage, pJob.ID.ToString())); if (!string.IsNullOrEmpty(m_paramExtendedProperties)) { m_ipDatabase.LogMessage(5, 2000, "Before Create Extended Properties"); ExtendedPropertyIdentifier childExProps = new ExtendedPropertyIdentifier(); try { ParseExtendedPropertiesParam(out childExProps); } catch (Exception ex) { string msg = string.Format( "Unable to read parent job's extended property. Job ID: {0} ERROR: {1}", pParentJob.ID, ex.Message); m_ipDatabase.LogMessage(3, 1000, msg); } try { CreateExtendedPropertyRecord(pJob, childExProps); } catch (Exception ex) { string msg = string.Format( "Unable to set child job's extended property. Child Job ID: {0} ERROR: {1}", pJob.ID, ex.Message); m_ipDatabase.LogMessage(3, 1000, msg); } m_ipDatabase.LogMessage(5, 2000, "After Create Extended Properties"); } // Create dependencies on parent job if configured m_ipDatabase.LogMessage(5, 2000, "Before Setting Dependencies"); if (m_paramDependNextStep || m_paramDependThisStep) { IJTXJobDependencies ipDependencyManager = pJobMan as IJTXJobDependencies; CreateDependencyOnParentJob(ipDependencyManager, pParentJob, pJob.ID); } m_ipDatabase.LogMessage(5, 2000, "After Setting Dependencies"); // Create or assign version if configured m_ipDatabase.LogMessage(5, 2000, "Before Versioning"); if (m_paramCreateVersionType != CreateVersionType.None) { if (pParentJob.ActiveDatabase != null && !String.IsNullOrEmpty(pJob.ParentVersion) && (m_paramCreateVersionType != CreateVersionType.UseParentJobsVersion || pParentJob.VersionExists())) { CreateChildVersion(ref pJob); } else { MessageBox.Show("Could not create version. Please ensure parent data workspace and versions are set correctly", Properties.Resources.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } else if (m_paramAssignVersionType != AssignVersionType.None) { if (pParentJob.ActiveDatabase != null) { AssignChildVersion(pParentJob, ref pJob); } else { MessageBox.Show("Could not assign version. Please ensure parent data workspace is set correctly", Properties.Resources.Warning, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } m_ipDatabase.LogMessage(5, 2000, "After Versioning"); // Store the job and save the changes m_ipDatabase.LogMessage(5, 2000, "Before Storing Job"); pJob.Store(); m_ipDatabase.LogMessage(5, 2000, "After Storing Job"); return(pJob); }