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] = ""; }
// ------------- 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); }