Пример #1
0
 public FilterListByNames(List <T> elements, SimpleFilterViewImpl5 filterInput)
 {
     this.elements           = elements;
     filter                  = new FilterImpl <IStringFilterable>();
     filter.OnFilterChanged += HandleOnFilterChanged;
     filter.ConnectRequest(new StringFilterRequest(filterInput));
 }
Пример #2
0
        public FilterKey(FilterImpl filter)
        {
            var types = filter.FilterDefinition.ParameterTypes;

            _filterName = filter.Name;
            foreach (var me in filter.Parameters)
            {
                var type = types[me.Key];
                _filterParameters[me.Key] = new TypedValue(type, me.Value, filter.GetParameterSpan(me.Key) != null);
            }
        }
Пример #3
0
        private void FilterDescLikeToCompare(out FilterKey fk, out FilterKey fk1)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", "%ing");
            fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
        }
Пример #4
0
        private void FilterDescValueToCompare(out FilterKey fk, out FilterKey fk1)
        {
            const string filterName = "DescriptionEqualAndValueGT";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pDesc", "something").SetParameter("pValue", 11);
            fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
        }
Пример #5
0
        private void FilterDescLikeToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            fk = new FilterKey(f);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", sameValue ? "so%" : "%ing");
            fk1 = new FilterKey(f1);
        }
Пример #6
0
        private void FilterDescValueToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue)
        {
            const string filterName = "DescriptionEqualAndValueGT";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(f);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pDesc", "something").SetParameter("pValue", sameValue ? 10 : 11);
            fk1 = new FilterKey(f1);
        }
Пример #7
0
        public FilterKey(FilterImpl filter)
        {
            var types = filter.FilterDefinition.ParameterTypes;

            _filterName       = filter.Name;
            _filterParameters = filter.Parameters.Select(
                p => new KeyValuePair <string, TypedValue>(
                    p.Key,
                    new TypedValue(
                        types[p.Key],
                        p.Value,
                        filter.GetParameterSpan(p.Key) != null))).ToArray();
        }
Пример #8
0
        public static void ProcessDynamicFilterParameters(
            SqlString sqlFragment,
            IParameterContainer container,
            HqlSqlWalker walker)
        {
            if (walker.EnabledFilters.Count == 0 &&
                (!HasDynamicFilterParam(sqlFragment)) &&
                (!(HasCollectionFilterParam(sqlFragment))))
            {
                return;
            }

            Dialect.Dialect dialect = walker.SessionFactoryHelper.Factory.Dialect;

            string symbols = new StringBuilder().Append(ParserHelper.HqlSeparators)
                             .Append(dialect.OpenQuote)
                             .Append(dialect.CloseQuote)
                             .ToString();

            StringTokenizer tokens = new StringTokenizer(sqlFragment.ToString(), symbols, true);
            StringBuilder   result = new StringBuilder();

            foreach (string token in tokens)
            {
                if (token.StartsWith(ParserHelper.HqlVariablePrefix))
                {
                    string     filterParameterName = token.Substring(1);
                    string[]   parts            = StringHelper.ParseFilterParameterName(filterParameterName);
                    FilterImpl filter           = ( FilterImpl )walker.EnabledFilters[parts[0]];
                    Object     value            = filter.GetParameter(parts[1]);
                    IType      type             = filter.FilterDefinition.GetParameterType(parts[1]);
                    String     typeBindFragment = StringHelper.Join(
                        ",",
                        ArrayHelper.FillArray("?", type.GetColumnSpan(walker.SessionFactoryHelper.Factory))
                        );
                    string bindFragment = (value != null && value is ICollection)
                                                        ? StringHelper.Join(",", ArrayHelper.FillArray(typeBindFragment, (( ICollection )value).Count))
                                                        : typeBindFragment;
                    //result.Append( bindFragment );
                    result.Append(token);
                    container.AddEmbeddedParameter(new DynamicFilterParameterSpecification(parts[0], parts[1], type));
                }
                else
                {
                    result.Append(token);
                }
            }

            container.Text = result.ToString();
        }
Пример #9
0
        public void ToStringIncludeAll()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike{'pLike'='so%'}]"));

            filterName = "DescriptionEqualAndValueGT";
            f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));
            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT{'pDesc'='something', 'pValue'='10'}]"));
        }
Пример #10
0
        public void ToStringIncludeAll()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(f);

            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionLike['[pLike, so%]']]"), "Like");

            filterName = "DescriptionEqualAndValueGT";
            f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));
            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk = new FilterKey(f);
            Assert.That(fk.ToString(), Is.EqualTo("FilterKey[DescriptionEqualAndValueGT['[pDesc, something]', '[pValue, 10]']]"), "Value");
        }
Пример #11
0
        private void FilterValueInToCompare(out FilterKey fk, out FilterKey fk1, bool sameValue)
        {
            const string filterName = "ValueIn";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameterList("pIn", new HashSet <int> {
                10, 11
            });
            fk = new FilterKey(f);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameterList("pIn", sameValue ? (ICollection <int>) new [] { 10, 11 } : new HashSet <int> {
                10, 12
            });
            fk1 = new FilterKey(f1);
        }
Пример #12
0
        public void ToStringWithMoreFilters()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            filterName = "DescriptionEqualAndValueGT";
            var fv = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            fv.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            ISet <FilterKey> fks = new HashSet <FilterKey> {
                fk, fvk
            };
            var qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);

            Assert.That(qk.ToString(), Does.Contain(string.Format("filters: ['{0}', '{1}']", fk, fvk)));
        }
Пример #13
0
        public void ToStringWithMoreFilters()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(sessions.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);

            filterName = "DescriptionEqualAndValueGT";
            var fv = new FilterImpl(sessions.GetFilterDefinition(filterName));

            fv.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            var fvk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);

            ISet <FilterKey> fks = new HashedSet <FilterKey> {
                fk, fvk
            };
            var qk = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks);

            Assert.That(qk.ToString(), Is.StringContaining(string.Format("filters: ['{0}', '{1}']", fk, fvk)));
        }
Пример #14
0
        private void QueryKeyFilterDescLikeToCompare(out QueryKey qk, out QueryKey qk1)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
            ISet <FilterKey> fks = new HashSet <FilterKey> {
                fk
            };

            qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", "%ing");
            var fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            fks = new HashSet <FilterKey> {
                fk1
            };
            qk1 = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);
        }
Пример #15
0
        private void QueryKeyFilterDescLikeToCompare(out QueryKey qk, out QueryKey qk1)
        {
            const string filterName = "DescriptionLike";
            var          f          = new FilterImpl(sessions.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);
            ISet <FilterKey> fks = new HashedSet <FilterKey> {
                fk
            };

            qk = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks);

            var f1 = new FilterImpl(sessions.GetFilterDefinition(filterName));

            f1.SetParameter("pLike", "%ing");
            var fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes, EntityMode.Poco);

            fks = new HashedSet <FilterKey> {
                fk1
            };
            qk1 = new QueryKey(sessions, SqlAll, new QueryParameters(), (ISet)fks);
        }
Пример #16
0
        public void ToStringWithFilters()
        {
            string filterName = "DescriptionLike";
            var    f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pLike", "so%");
            var fk = new FilterKey(f);
            ISet <FilterKey> fks = new HashSet <FilterKey> {
                fk
            };
            var qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null, null);

            Assert.That(qk.ToString(), Does.Contain($"filters: ['{fk}']"), "Like");

            filterName = "DescriptionEqualAndValueGT";
            f          = new FilterImpl(Sfi.GetFilterDefinition(filterName));
            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            fk  = new FilterKey(f);
            fks = new HashSet <FilterKey> {
                fk
            };
            qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null, null);
            Assert.That(qk.ToString(), Does.Contain($"filters: ['{fk}']"), "Value");
        }
Пример #17
0
        private void QueryKeyFilterDescValueToCompare(out QueryKey qk, out QueryKey qk1)
        {
            const string filterName = "DescriptionEqualAndValueGT";

            var f = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f.SetParameter("pDesc", "something").SetParameter("pValue", 10);
            var fk = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);
            ISet <FilterKey> fks = new HashSet <FilterKey> {
                fk
            };

            qk = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);

            var f1 = new FilterImpl(Sfi.GetFilterDefinition(filterName));

            f1.SetParameter("pDesc", "something").SetParameter("pValue", 11);
            var fk1 = new FilterKey(filterName, f.Parameters, f.FilterDefinition.ParameterTypes);

            fks = new HashSet <FilterKey> {
                fk1
            };
            qk1 = new QueryKey(Sfi, SqlAll, new QueryParameters(), fks, null);
        }
Пример #18
0
        public void TestNullTeamDoesNotMatch()
        {
            IProjectFilter f = new FilterImpl(".*", ".*");

            Assert.False(f.Matches(null, "foo"));
        }
Пример #19
0
        public void TestMatch89StyleProjectRightTeam()
        {
            IProjectFilter f = new FilterImpl(@"\\usa$", "master");

            Assert.True(f.Matches(@"\CxServer\Foo\bar\usa", "ORG_ProjectName_master"));
        }
Пример #20
0
        public void TestNoMatch89StyleTeam()
        {
            IProjectFilter f = new FilterImpl(@"\\usa$", null);

            Assert.False(f.Matches(@"\CxServer\Foo\bar\uk", null));
        }
Пример #21
0
        public void TestNullProjectDoesNotMatch()
        {
            IProjectFilter f = new FilterImpl(".*", ".*");

            Assert.False(f.Matches("foo", null));
        }
Пример #22
0
        public void TestNoMatch89StyleProjectWrongBranch()
        {
            IProjectFilter f = new FilterImpl(@"\\usa$", "master");

            Assert.False(f.Matches(@"\CxServer\Foo\bar\usa", "ORG_ProjectName_dev"));
        }
Пример #23
0
            public static void Run(Savegame.Savegame savegame, string filename, ExportAction.Writer.Destinations destination_type,
                                   List <FilterDefinition> filters, bool deep_traversal, bool recursive_export)
            {
                Writer.IWriter writer = Writer.CreateWriter(destination_type, filename, recursive_export);
                if (writer == null)
                {
                    string msg = string.Format(Translate._("Unable to create writer for file\n\n{0}"), filename);
                    MessageBox.Show(msg, Translate._("MainWindow.Title"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
                try
                {
                    writer.Open();
                }
                catch (Exception exc)
                {
                    string msg = string.Format(Translate._("Unable to create writer for file\n\n{0}"), filename) + "\n\n" + exc.ToLongString();
                    MessageBox.Show(msg, Translate._("MainWindow.Title"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                var defs = new F.Definitions(filters.Cast <F.Definition>());

                F.CreatorCallback creator = (def) => FilterImpl.CreateFilter(def as FilterDefinition);
                F.FilterChain     chain   = F.CreateChain(defs, creator);
                if (chain == null)
                {
                    string msg = "Internal error!\n\nUnable to create filter chain.";
                    MessageBox.Show(msg, Translate._("MainWindow.Title"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }

                HierarchyRunner.Runner action;
                if (chain.Count == 0)
                {
                    action = (prop) => {
                        // Empty "Export all" filter was passed
                        writer.Write(prop);
                    };
                    // Also remove deep flag
                    deep_traversal = false;
                }
                else
                {
                    action = (prop) => {
                        // Test property against filter(s) given
                        F.IResult result = chain.Test(prop);
                        // If successful, pass to writer
                        if (result.Success)
                        {
                            writer.Write(prop);
                        }
                    }
                };

                try
                {
                    HierarchyRunner runner = new HierarchyRunner(savegame, deep_traversal);
                    runner.Run(Translate._("Action.Export.Progress.Title"), action);

                    string msg = string.Format(Translate._("Action.Export.Done"), filename);
                    MessageBox.Show(msg, Translate._("MainWindow.Title"));                    //, MessageBoxButton.OK, MessageBoxImage.Information);
                }
                catch
                {
                    string msg = "Internal error!\n\nFailure within hierarchy runner.";
                    MessageBox.Show(msg, Translate._("MainWindow.Title"), MessageBoxButton.OK, MessageBoxImage.Exclamation);
                }
                finally
                {
                    writer.Close();
                }
            }
        }
Пример #24
0
        public void TestBothNullDoesNotMatch()
        {
            IProjectFilter f = new FilterImpl(".*", ".*");

            Assert.False(f.Matches(null, null));
        }
Пример #25
0
        public void TestEmptyProjectRulesMatchTeam()
        {
            IProjectFilter f = new FilterImpl(null, "");

            Assert.True(f.Matches("", "foo"));
        }
Пример #26
0
        public void TestEmptyRegexMatchesEmptyString()
        {
            IProjectFilter f = new FilterImpl("", "");

            Assert.True(f.Matches("", ""));
        }
Пример #27
0
        public void TestEmptyTeamRulesMatchTeamWithNullProject()
        {
            IProjectFilter f = new FilterImpl("", null);

            Assert.True(f.Matches("foo", null));
        }
Пример #28
0
        public void TestNullRulesMatchEmptyBoth()
        {
            IProjectFilter f = new FilterImpl(null, null);

            Assert.True(f.Matches("", ""));
        }
Пример #29
0
        public void TestNullRulesMatchNullTeam()
        {
            IProjectFilter f = new FilterImpl(null, null);

            Assert.True(f.Matches(null, "foo"));
        }