Ejemplo n.º 1
0
        private static void addRuleToDataRow(
            int snapshotid,
            int headerid,
            Filter.Rule rule,
            DataRow dr
            )
        {
            Debug.Assert(rule != null);
            Debug.Assert(dr != null);

            dr[ServerFilterRuleDataTable.ParamSnapshotid]         = snapshotid;
            dr[ServerFilterRuleDataTable.ParamFilterruleheaderid] = headerid;
            dr[ServerFilterRuleDataTable.ParamFilterruleid]       = rule.RuleId;
            dr[ServerFilterRuleDataTable.ParamScope]       = rule.Scope;
            dr[ServerFilterRuleDataTable.ParamClass]       = rule.ObjectType;
            dr[ServerFilterRuleDataTable.ParamMatchstring] = rule.MatchString;
            dr[ServerFilterRuleDataTable.ParamHashkey]     = "";
        }
Ejemplo n.º 2
0
        // ------------- Methods -------------
        #region Methods
        public static bool GetFilterRules(
            string repositoryConnectionString,
            string targetInstance,
            out List <Filter> filterList
            )
        {
            Debug.Assert(!string.IsNullOrEmpty(repositoryConnectionString));
            Debug.Assert(!string.IsNullOrEmpty(targetInstance));

            // Init returns.
            bool isOk = true;

            filterList = new List <Filter>();

            // Check inputs.
            if (string.IsNullOrEmpty(repositoryConnectionString) || string.IsNullOrEmpty(targetInstance))
            {
                logX.loggerX.Error("ERROR - invalid connection string or instance name");
                isOk = false;
            }

            // Query the repository for filter rules.
            if (isOk)
            {
                using (SqlConnection connection = new SqlConnection(repositoryConnectionString))
                {
                    try
                    {
                        // Open the connection.
                        connection.Open();

                        // Read filter from the repository.
                        SqlParameter param = new SqlParameter(ParamTargetInstance, targetInstance);
                        using (SqlDataReader filterRdr = Sql.SqlHelper.ExecuteReader(connection, null,
                                                                                     CommandType.Text, QueryFilter, new SqlParameter[] { param }))
                        {
                            while (filterRdr.Read())
                            {
                                SqlInt32    filterruleheaderid = filterRdr.GetSqlInt32(FieldFilterruleheaderid);
                                SqlString   rulename           = filterRdr.GetSqlString(FieldRulename);
                                SqlString   createdby          = filterRdr.GetSqlString(FieldCreatedby);
                                SqlDateTime createdtm          = filterRdr.GetSqlDateTime(FieldCreatedtm);
                                SqlString   modifiedby         = filterRdr.GetSqlString(FieldLastmodifiedby);
                                SqlDateTime modfiedtm          = filterRdr.GetSqlDateTime(FieldLastmodifiedtm);

                                Filter filter = new Filter(filterruleheaderid, rulename, createdby, createdtm, modifiedby, modfiedtm);
                                filterList.Add(filter);
                            }
                        }

                        // Read the rules for each of the filters.
                        foreach (Filter filter in filterList)
                        {
                            param = new SqlParameter(ParamHeaderId, filter.HeaderId);
                            using (SqlDataReader ruleRdr = Sql.SqlHelper.ExecuteReader(connection, null,
                                                                                       CommandType.Text, QueryRule, new SqlParameter[] { param }))
                            {
                                while (ruleRdr.Read())
                                {
                                    SqlInt32  ruleid          = ruleRdr.GetSqlInt32(FieldRuleid);
                                    SqlInt32  ruleclass       = ruleRdr.GetSqlInt32(FieldRuleclass);
                                    SqlString rulescope       = ruleRdr.GetSqlString(FieldRulescope);
                                    SqlString rulematchstring = ruleRdr.GetSqlString(FieldRuleMatchstring);

                                    Filter.Rule rule = new Filter.Rule(ruleid, ruleclass, rulescope, rulematchstring);
                                    filter.AddRule(rule);
                                }
                            }
                        }
                    }
                    catch (SqlException ex)
                    {
                        logX.loggerX.Error("ERROR - reading data collection filter rules raised an exception.", ex);
                        AppLog.WriteAppEventError(SQLsecureEvent.ExErrExceptionRaised, SQLsecureCat.DlFilterLoadCat,
                                                  "Load data collection filters", ex.Message);
                        filterList.Clear();
                        filterList = null;
                        isOk       = false;
                    }
                }
            }

            return(isOk);
        }