/// <summary> /// Executes the geoprocessing function using the given array of parameter values. /// </summary> /// <param name="parameters">The parameters.</param> /// <param name="trackCancel">The track cancel.</param> /// <param name="environmentManager">Provides access to all the current environments and settings of the current client.</param> /// <param name="messages">The messages that are reported to the user.</param> /// <param name="utilities"> /// The utilities object that provides access to the properties and methods of a geoprocessing /// objects. /// </param> protected override void Execute(Dictionary <string, IGPValue> parameters, ITrackCancel trackCancel, IGPEnvironmentManager environmentManager, IGPMessages messages, IGPUtilities2 utilities) { IGPValue value = parameters["in_table"]; IRelationshipClass relClass = utilities.OpenRelationshipClass(value); if (relClass != null) { IMMConfigTopLevel configTopLevel = ConfigTopLevel.Instance; configTopLevel.Workspace = utilities.GetWorkspace(value); IGPMultiValue onCreate = (IGPMultiValue)parameters["in_create"]; IGPMultiValue onDelete = (IGPMultiValue)parameters["in_delete"]; var uids = new Dictionary <mmEditEvent, IEnumerable <IUID> >(); uids.Add(mmEditEvent.mmEventRelationshipCreated, onCreate.AsEnumerable().Cast <IGPAutoValue>().Select(o => o.UID)); uids.Add(mmEditEvent.mmEventRelationshipDeleted, onDelete.AsEnumerable().Cast <IGPAutoValue>().Select(o => o.UID)); // Update the list to have these UIDs. ID8List list = (ID8List)configTopLevel.GetRelationshipClass(relClass); base.Add(uids, list, messages); // Commit the changes to the database. configTopLevel.SaveRelationshipClasstoDB(relClass); // Success. parameters["out_results"].SetAsText("true"); } else { // Failure. parameters["out_results"].SetAsText("false"); } }
/// <summary> /// Gets all of the automatic values (i.e. ArcFM Auto Updaters) that have been configured for the specified /// <paramref name="editEvent" /> the <paramref name="relationshipClass" /> relationship class. /// </summary> /// <param name="source">The source.</param> /// <param name="relationshipClass">The relationship class.</param> /// <param name="editEvent">The edit event.</param> /// <returns> /// Returns a <see cref="IEnumerable{IMMAutoValue}" /> representing the automatic values for the specified event and /// object class. /// </returns> /// <exception cref="System.ArgumentNullException">table</exception> public static IEnumerable <IMMAutoValue> GetAutoValues(this IMMConfigTopLevel source, IRelationshipClass relationshipClass, mmEditEvent editEvent) { if (source == null) { return(null); } if (relationshipClass == null) { throw new ArgumentNullException("relationshipClass"); } IEnumerable <IMMAutoValue> list = new List <IMMAutoValue>(); IMMRelationshipClass relationship = source.GetRelationshipClass(relationshipClass); if (relationship.HasAutoUpdater) { list = relationship.GetAutoValues(editEvent); } return(list); }