Exemple #1
0
        /// <summary>
        /// Pre validates the given set of values.
        /// This is where you populate derived parameters based on input, among other things.
        /// </summary>
        /// <param name="paramValues"></param>
        /// <param name="pEnvMgr"></param>
        public override void UpdateParameters(IArray paramValues, IGPEnvironmentManager pEnvMgr)
        {
            try
            {
                UpdateParametersCommon(paramValues, pEnvMgr);
            }
            catch (WmxDefaultDbNotSetException)
            {
                // If the default DB wasn't set, stop executing
                return;
            }
            catch (NullReferenceException)
            {
                // If one of the parameters was null, stop executing
                return;
            }

            // Get the parameters as a map for easier access
            WmauParameterMap  paramMap         = new WmauParameterMap(paramValues);
            IGPParameter3     assigneeType     = paramMap.GetParam(C_PARAM_ASSIGNEE_TYPE);
            IGPParameterEdit3 assigneeTypeEdit = paramMap.GetParamEdit(C_PARAM_ASSIGNEE_TYPE);
            IGPParameter3     assignee         = paramMap.GetParam(C_PARAM_ASSIGNEE);
            IGPParameterEdit  assigneeEdit     = paramMap.GetParamEdit(C_PARAM_ASSIGNEE);

            // If the assignee type has changed, update the domain for the assignee
            // parameter
            //
            // NOTE: Updating the assignee value can cause things to get confused,
            // particularly when background geoprocessing is enabled.  So rather than
            // do this, let the assignee parameter value conflict with the domain
            // for that parameter, if need be.
            if (!assigneeType.Value.GetAsText().Equals(m_assigneeType))
            {
                m_assigneeType = assigneeType.Value.GetAsText();

                if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_GROUP))
                {
                    assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableGroupsDomain(this.WmxDatabase);
                }
                else if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_USER))
                {
                    assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableUsersDomain(this.WmxDatabase);
                }
                else if (m_assigneeType.Equals(C_OPT_UNASSIGNED) ||
                         String.IsNullOrEmpty(m_assigneeType))
                {
                    assigneeEdit.Domain = null;
                }
            }

            // Check to see if the data workspace parameter has changed; if so, store the
            // new workspace value and mark the domain for the workspace version to be reset.
            IGPParameter3 workspaceParam = paramMap.GetParam(C_PARAM_DATAWORKSPACE);

            if (this.IsDataWorkspaceParameterChanged(workspaceParam))
            {
                if (workspaceParam.Value == null)
                {
                    m_dataWorkspaceId = string.Empty;
                }
                else
                {
                    string temp = workspaceParam.Value.GetAsText();
                    m_dataWorkspaceId = Common.WmauHelperFunctions.LookupWorkspaceId(this.WmxDatabase, temp);
                }

                IGPParameterEdit3 versionParam = paramMap.GetParamEdit(C_PARAM_PARENTVERSION);

                // Keep the version parameter's value unchanged; changing it "smartly" to help
                // out a user can lead to trouble.  Instead, let any problem value be flagged
                // as something that's not a member of the domain.
                //versionParam.Value = null;
                versionParam.Domain = null;
                m_parentVersion     = string.Empty;
            }

            // Set the domains for any parameters that need them
            if (paramMap.GetParam(C_PARAM_JOB_TYPE).Domain == null)
            {
                paramMap.GetParamEdit(C_PARAM_JOB_TYPE).Domain = Common.WmauGpDomainBuilder.BuildJobTypeDomain(this.WmxDatabase);
            }
            if (paramMap.GetParam(C_PARAM_JOB_OWNER).Domain == null)
            {
                paramMap.GetParamEdit(C_PARAM_JOB_OWNER).Domain = Common.WmauGpDomainBuilder.BuildUsersDomain(this.WmxDatabase);
            }
            if (paramMap.GetParam(C_PARAM_PRIORITY).Domain == null)
            {
                paramMap.GetParamEdit(C_PARAM_PRIORITY).Domain = Common.WmauGpDomainBuilder.BuildPriorityDomain(this.WmxDatabase);
            }
            if (paramMap.GetParam(C_PARAM_PARENTJOBID).Domain == null)
            {
                paramMap.GetParamEdit(C_PARAM_PARENTJOBID).Domain = Common.WmauGpDomainBuilder.BuildJobIdDomain(this.WmxDatabase);
            }
            if (paramMap.GetParam(C_PARAM_DATAWORKSPACE).Domain == null)
            {
                if (CurrentUserHasPrivilege(ESRI.ArcGIS.JTX.Utilities.Constants.PRIV_MANAGE_DATA_WORKSPACE))
                {
                    paramMap.GetParamEdit(C_PARAM_DATAWORKSPACE).Domain =
                        Common.WmauGpDomainBuilder.BuildWorkspaceDomain(this.WmxDatabase, new string[] { C_OPT_VAL_NOT_SET });
                }
                else
                {
                    paramMap.GetParamEdit(C_PARAM_DATAWORKSPACE).Domain = new GPCodedValueDomainClass() as IGPDomain;
                }
            }
            if (paramMap.GetParam(C_PARAM_PARENTVERSION).Domain == null)
            {
                if (!m_dataWorkspaceId.Equals(string.Empty) &&
                    !m_dataWorkspaceId.Equals(C_OPT_VAL_NOT_SET) &&
                    CurrentUserHasPrivilege(ESRI.ArcGIS.JTX.Utilities.Constants.PRIV_MANAGE_VERSION))
                {
                    try
                    {
                        string dbName = this.WmxDatabase.GetDataWorkspaceName(m_dataWorkspaceId).Name;
                        paramMap.GetParamEdit(C_PARAM_PARENTVERSION).Domain =
                            Common.WmauGpDomainBuilder.BuildVersionsDomain(
                                this.WmxDatabase, dbName, new string[] { C_OPT_VAL_NOT_SET });
                    }
                    catch (WmauException)
                    {
                        // If we run into an exception, set the domain to be empty so that
                        // we can detect it and flag an error during parameter validation
                        paramMap.GetParamEdit(C_PARAM_PARENTVERSION).Domain = new GPCodedValueDomainClass();
                    }
                }
            }

            // After the domains have been set, check to see if any parameters should be
            // enabled/disabled based on the contents of these domains.
            assigneeEdit.Enabled = !m_assigneeType.Equals(C_OPT_UNASSIGNED);
            EnableDisableParamBasedOnDomain(paramMap.GetParam(C_PARAM_DATAWORKSPACE));
            EnableDisableParamBasedOnDomain(paramMap.GetParam(C_PARAM_PARENTVERSION));

            // Also check the AOI; if the user can't manage a job's AOI, then disable the
            // parameter
            paramMap.GetParamEdit(C_PARAM_AOI).Enabled = CurrentUserHasPrivilege(ESRI.ArcGIS.JTX.Utilities.Constants.PRIV_MANAGE_AOI);
        }
 private void EnableParameter(IGPParameterEdit gpParamEdit)
 {
     gpParamEdit.Enabled = true;
     return;
 }
Exemple #3
0
        /// <summary>
        /// Pre validates the given set of values.
        /// This is where you populate derived parameters based on input, among other things.
        /// </summary>
        /// <param name="paramValues"></param>
        /// <param name="pEnvMgr"></param>
        public override void UpdateParameters(IArray paramValues, IGPEnvironmentManager pEnvMgr)
        {
            try
            {
                UpdateParametersCommon(paramValues, pEnvMgr);
            }
            catch (WmxDefaultDbNotSetException)
            {
                // If the default DB wasn't set, stop executing
                return;
            }
            catch (NullReferenceException)
            {
                // If one of the parameters was null, stop executing
                return;
            }

            // Get the parameters as a map for easier access
            WmauParameterMap  paramMap         = new WmauParameterMap(paramValues);
            IGPParameter3     jobId            = paramMap.GetParam(C_PARAM_JOB_ID);
            IGPParameterEdit3 jobIdEdit        = paramMap.GetParamEdit(C_PARAM_JOB_ID);
            IGPParameter3     assigneeType     = paramMap.GetParam(C_PARAM_ASSIGNEE_TYPE);
            IGPParameterEdit3 assigneeTypeEdit = paramMap.GetParamEdit(C_PARAM_ASSIGNEE_TYPE);
            IGPParameter3     assignee         = paramMap.GetParam(C_PARAM_ASSIGNEE);
            IGPParameterEdit  assigneeEdit     = paramMap.GetParamEdit(C_PARAM_ASSIGNEE);

            // Set the domains for any parameters that need them

            // Set the job ID domain if it hasn't already been populated
            if (jobId.Domain == null)
            {
                jobIdEdit.Domain = Common.WmauGpDomainBuilder.BuildNonClosedJobIdDomain(this.WmxDatabase);
            }

            // If the assignee type has changed, update the domain for the assignee
            // parameter
            //
            // NOTE: Updating the assignee value can cause things to get confused,
            // particularly when background geoprocessing is enabled.  So rather than
            // do this, let the assignee parameter value conflict with the domain
            // for that parameter, if need be.
            if (!assigneeType.Value.GetAsText().Equals(m_assigneeType) || assignee.Domain == null)
            {
                m_assigneeType = assigneeType.Value.GetAsText();
                //assignee.Value.Empty();

                if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_GROUP))
                {
                    assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableGroupsDomain(this.WmxDatabase);
                }
                else if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_USER))
                {
                    assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableUsersDomain(this.WmxDatabase);
                }
                else if (m_assigneeType.Equals(C_OPT_UNASSIGNED))
                {
                    assigneeEdit.Domain = null;
                    //assignee.Value.SetAsText(C_OPT_VAL_UNASSIGNED);
                }
            }

            // After the domains have been set, check to see if any parameters should be
            // enabled/disabled based on the contents of these domains.
            assigneeEdit.Enabled = !m_assigneeType.Equals(C_OPT_UNASSIGNED);
        }
 private void DisableParameter(IGPParameterEdit gpParamEdit, IGPValue emptyValue)
 {
     gpParamEdit.Value = emptyValue;
     gpParamEdit.Enabled = false;
     return;
 }