Exemple #1
0
        /// <summary>
        /// Gets the type of a given defined variable
        /// </summary>
        /// <returns></returns>
        public string GetDefinedVariableType(string variableName)
        {
            foreach (IDashboardRule rule in this)
            {
                if (rule is DataAssignmentRule)
                {
                    DataAssignmentRule assignRule = rule as DataAssignmentRule;
                    return(assignRule.DestinationColumnType);
                }
            }

            throw new ApplicationException(string.Format(SharedStrings.DASHBOARD_ERROR_DEFINED_VARIABLE_MISSING, variableName));
        }
Exemple #2
0
        /// <summary>
        /// Gets a dictionary of all user-defined variables in this rule set
        /// </summary>
        /// <returns>Dictionary of user-defined variables</returns>
        public Dictionary <string, string> GetUserDefinedVariables()
        {
            Dictionary <string, string> userDefinedVariableNames = new Dictionary <string, string>();

            foreach (IDashboardRule rule in this)
            {
                if (rule is DataAssignmentRule)
                {
                    DataAssignmentRule assignRule = rule as DataAssignmentRule;
                    userDefinedVariableNames.Add(assignRule.DestinationColumnName, assignRule.DestinationColumnType);
                }
            }

            return(userDefinedVariableNames);
        }
Exemple #3
0
        /// <summary>
        /// Adds a new rule to the set of dashboard rules
        /// </summary>
        /// <param name="rule">The rule to add</param>
        /// <returns>Boolean; whether the addition was successful</returns>
        public bool AddRule(IDashboardRule rule)
        {
            #region Input Validation
            if (rule == null || string.IsNullOrEmpty(rule.FriendlyRule))
            {
                throw new ArgumentNullException("rule");
            }
            #endregion // Input Validation

            // check for duplicate rules
            foreach (DataRow row in RuleTable.Rows)
            {
                IDashboardRule rRule = (IDashboardRule)row[COLUMN_RULE];

                if (rRule.FriendlyRule.Equals(rule.FriendlyRule))
                {
                    // cannot add a duplicate rule, so return false
                    return(false);
                }
            }

            // find the highest run order value of all the rules presently in the table
            int maxInt = int.MinValue;

            foreach (DataRow row in RuleTable.Rows)
            {
                int value = row.Field <int>(COLUMN_RUN_ORDER);
                maxInt = Math.Max(maxInt, value);
            }

            RuleTable.Rows.Add(maxInt + 1, rule);

            // sort by run order
            this.ruleTable = RuleTable.Select("", COLUMN_RUN_ORDER).CopyToDataTable().DefaultView.ToTable("RuleTable");

            if (rule is DataAssignmentRule)
            {
                DataAssignmentRule assignRule = rule as DataAssignmentRule;
                if (!dashboardHelper.TableColumnNames.ContainsKey(assignRule.DestinationColumnName))
                {
                    dashboardHelper.TableColumnNames.Add(assignRule.DestinationColumnName, assignRule.DestinationColumnType);
                }
            }

            return(true);
        }
Exemple #4
0
        /// <summary>
        /// Returns all user-defined variables with the given destination column
        /// </summary>
        /// <param name="destinationColumnName">The destination column name</param>
        /// <returns>Rule</returns>
        public List <IDashboardRule> GetRules(string destinationColumnName)
        {
            int     i;
            DataRow row = null;
            List <IDashboardRule> rules = new List <IDashboardRule>();

            for (i = 0; i < RuleTable.Rows.Count; i++)
            {
                row = RuleTable.Rows[i];
                IDashboardRule rule = ((IDashboardRule)row[COLUMN_RULE]);
                if (rule is DataAssignmentRule)
                {
                    DataAssignmentRule assignRule = rule as DataAssignmentRule;
                    if (assignRule.DestinationColumnName.ToLower().Equals(destinationColumnName.ToLower()))
                    {
                        rules.Add(assignRule);
                    }
                }
            }

            return(rules);
        }
Exemple #5
0
        /// <summary>
        /// Removes a rule
        /// </summary>
        /// <returns>Bool</returns>
        public bool RemoveRule(string friendlyRule)
        {
            int     i;
            int     rowIndexToRemove = -1;
            DataRow row = null;

            for (i = 0; i < RuleTable.Rows.Count; i++)
            {
                row = RuleTable.Rows[i];
                string str = row[COLUMN_RULE].ToString();

                if (str.Equals(friendlyRule))
                {
                    rowIndexToRemove = i;
                    break;
                }
            }

            if (rowIndexToRemove >= 0)
            {
                row = RuleTable.Rows[rowIndexToRemove];

                IDashboardRule rule = ((IDashboardRule)row[COLUMN_RULE]);

                if (rule is DataAssignmentRule)
                {
                    DataAssignmentRule assignRule = rule as DataAssignmentRule;
                    if (dashboardHelper.TableColumnNames.ContainsKey(assignRule.DestinationColumnName))
                    {
                        dashboardHelper.TableColumnNames.Remove(assignRule.DestinationColumnName);
                    }
                }

                RuleTable.Rows.Remove(row);
                return(true);
            }
            return(false);
        }