public override void ExecuteCmdlet()
        {
            var CustomRule = new PSCustomRule
            {
                Name                       = Name,
                MatchConditions            = MatchCondition.ToList(),
                Priority                   = Priority,
                RuleType                   = RuleType,
                RateLimitDurationInMinutes = !this.IsParameterBound(c => c.RateLimitDurationInMinutes)? 1 : RateLimitDurationInMinutes,
                RateLimitThreshold         = RateLimitThreshold,
                Transforms                 = Transform?.ToList(),
                Action                     = Action
            };

            WriteObject(CustomRule);
        }
Example #2
0
        public MatchCondition ToMatchCondition(GameData gameData)
        {
            var newMC = new MatchCondition();

            newMC.type         = Type;
            newMC.tokenType    = TokenType;
            newMC.boolValue    = BoolValue;
            newMC.resourceType = ResourceType;
            newMC.comparison   = Comparison;
            newMC.val          = Val;
            newMC.inverse      = Inverse;

            newMC.tokenDefinition = gameData.Tokens.Get(TokenDefinitionID);

            return(newMC);
        }
Example #3
0
        private void AddClause(MatchCondition matchCondition, AdoQueryPayload queryPayload)
        {
            queryPayload.AppendColumnName(matchCondition.Object);

            switch (matchCondition.Operator)
            {
            case DslOperator.Equals:
                queryPayload.Append(" = ");
                queryPayload.AddParameter(matchCondition);
                break;

            case DslOperator.NotEquals:
                queryPayload.Append(" <> ");
                queryPayload.AddParameter(matchCondition);
                break;

            case DslOperator.Like:
                queryPayload.Append(" LIKE '%' + ");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(" + '%'");
                break;

            case DslOperator.NotLike:
                queryPayload.Append(" NOT LIKE '%' + ");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(" + '%'");
                break;

            case DslOperator.In:
                queryPayload.Append(" IN (");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(")");
                break;

            case DslOperator.NotIn:
                queryPayload.Append(" NOT IN (");
                queryPayload.AddParameter(matchCondition);
                queryPayload.Append(")");
                break;

            default:
                throw new Exception("DSL Operator not supported for SQL query generation: " + matchCondition.Operator);
            }

            queryPayload.AddNewLine();
        }
Example #4
0
        public MatchConditionInfo(MatchCondition matchCondition)
        {
            if (matchCondition == null)
            {
                throw new ArgumentNullException(nameof(matchCondition));
            }

            Type         = matchCondition.type;
            TokenType    = matchCondition.tokenType;
            BoolValue    = matchCondition.boolValue;
            ResourceType = matchCondition.resourceType;
            Comparison   = matchCondition.comparison;
            Val          = matchCondition.val;
            Inverse      = matchCondition.inverse;

            TokenDefinitionID = matchCondition.tokenDefinition?.id ?? -1;
        }
Example #5
0
        /// <summary>
        /// Gets the term query.
        /// </summary>
        /// <param name="searchCriteria">The search criteria.</param>
        /// <param name="SearchFrom">The search from.</param>
        /// <param name="matchCondition">The match condition.</param>
        private void GetTermQuery(Criteria searchCriteria, DateTime SearchFrom, MatchCondition matchCondition)
        {
            DateTime SearchTo = SearchFrom.AddDays(1).AddTicks(-1);
            //Query termQuery = new TermQuery(new Term(searchCriteria.Field.ToString(),
            //    Lucene.Net.Util.NumericUtils.LongToPrefixCoded(long.Parse(SearchFrom.ToString("yyyyMMddHHmmss")))));
            var numericQuery = NumericRangeQuery.NewLongRange(searchCriteria.Field.ToString(), int.MaxValue, long.Parse(SearchFrom.ToString("yyyyMMddHHmmss")),
                                                              long.Parse(SearchTo.ToString("yyyyMMddHHmmss")), true,
                                                              (searchCriteria.Condition == SearchCondition.Before) ? true : false);//To avoid inclusive of given date for before condition in searching

            if (matchCondition == MatchCondition.MatchAll)
            {
                _tempQuery.Add(numericQuery, BooleanClause.Occur.MUST);
            }
            else
            {
                _tempQuery.Add(numericQuery, BooleanClause.Occur.SHOULD);
            }
        }
Example #6
0
    public static T GetNearest <T>(Vector3 pos, float radius, LayerMask mask, MatchCondition matchCondition) where T : Interactable
    {
        int   numTargets      = Physics2D.OverlapCircleNonAlloc(pos, radius, pool, mask);
        float shortestDistSqr = float.MaxValue;
        T     nearest         = null;

        for (int i = 0; i < numTargets; i++)
        {
            if (pool[i].TryGetComponent <T>(out T t) && matchCondition(t))
            {
                float tDistSqr = (t.transform.position - pos).sqrMagnitude;
                if (tDistSqr < shortestDistSqr)
                {
                    shortestDistSqr = tDistSqr;
                    nearest         = t;
                }
            }
        }
        return(nearest);
    }
Example #7
0
        public SearchBuilder <T> Match <V>(Expression <Func <T, V> > predicate, V matchvalue)
        {
            if (_lastquery == null)
            {
                _lastquery = new SearchConditionBase();
            }

            var jsoname = JsonHelper.GetJsonTag(predicate);;

            if (_query == null)
            {
                _query = new SearchConditionBase();
            }

            MatchCondition mc = new MatchCondition();

            mc.FilterCollection.Add(new SearchConditionBase(jsoname, matchvalue));
            _query.FilterCollection.Add(mc);

            return(this);
        }
Example #8
0
 private void CreateNewMatchCondition()
 {
     _currentMatchCondition = new MatchCondition();
     MatchConditions.Add(_currentMatchCondition);
 }
Example #9
0
 public Structure GetNode()
 {
     Match = new MatchCondition();
     return(node);
 }
Example #10
0
        /// <summary>
        /// Gets the parsed query.
        /// </summary>
        /// <param name="searchCriterias">The search criterias.</param>
        /// <param name="matchCondition">The match condition.</param>
        /// <returns></returns>
        private Query GetParsedQuery(List <Criteria> searchCriterias, MatchCondition matchCondition)
        {
            BooleanQuery mainQuery = new BooleanQuery();

            BooleanQuery.SetMaxClauseCount(0x2710);
            _tempQuery = new BooleanQuery();
            foreach (Criteria searchCriteria in searchCriterias)
            {
                DateTime chkDate;
                if (DateTime.TryParse(searchCriteria.Value.ToString(), out chkDate))
                {
                    if (chkDate != null)
                    {
                        _logger.Debug("Search Field is DateTime value");
                        GetNumericQuery(searchCriteria, matchCondition);
                    }
                }
                else
                {
                    _logger.Debug("Search Field is String value");
                    if (searchCriteria.Field == "Status" && searchCriteria.Value == "All")
                    {
                        searchCriteria.Value = "In Progress";
                        GetStringQuery(searchCriteria, MatchCondition.MatchAny);
                        searchCriteria.Value = "Done";
                        GetStringQuery(searchCriteria, MatchCondition.MatchAny);
                    }
                    else
                    {
                        GetStringQuery(searchCriteria, matchCondition);
                    }
                }

                #region Old
                //if (searchCriteria.Field == "Status" || searchCriteria.Field == "Subject")
                //{
                //    Lucene.Net.Analysis.Token token = null;
                //    Lucene.Net.Analysis.Token token2 = null;
                //    TokenStream stream = _analyzer.TokenStream(searchCriteria.Field.ToString(), new StringReader(searchCriteria.Value));
                //    do
                //    {
                //        token2 = token;
                //        token = stream.Next();
                //        if (token2 != null)
                //        {
                //            string stoken = token2.TermText();
                //            BooleanQuery outputQuery = new BooleanQuery();
                //            this.TokenToQuery(searchCriteria.Field.ToString(), stoken, ref outputQuery);
                //            if (matchCondition == MatchCondition.MatchAll)
                //                query11.Add(outputQuery, BooleanClause.Occur.MUST);
                //            else
                //                query11.Add(outputQuery, BooleanClause.Occur.SHOULD);
                //        }
                //    }
                //    while (token != null);
                //}
                //else
                //{
                //    DateTime SearchFrom = new DateTime();
                //    DateTime SearchTo = new DateTime();
                //    if (searchCriteria.Condition == SearchCondition.Before)
                //    {
                //        SearchFrom = _leastDate;
                //        SearchTo = Convert.ToDateTime(searchCriteria.Value);
                //    }
                //    else if (searchCriteria.Condition == SearchCondition.On)
                //    {
                //        SearchFrom = Convert.ToDateTime(searchCriteria.Value);
                //        SearchTo = Convert.ToDateTime(searchCriteria.Value);
                //    }
                //    else
                //    {
                //        SearchFrom = Convert.ToDateTime(searchCriteria.Value);
                //        SearchTo = DateTime.Now;
                //    }

                //    var numericQuery = NumericRangeQuery.NewIntRange(searchCriteria.Field.ToString(), int.MaxValue, int.Parse(SearchFrom.ToString("yyyyMMddHHmmss")),
                //        int.Parse(SearchTo.ToString("yyyyMMddHHmmss")), true,
                //        (searchCriteria.Condition == SearchCondition.Before) ? true : false);//To avoid inclusive of given date for before condition in searching

                //    if (matchCondition == MatchCondition.MatchAll)
                //        query11.Add(numericQuery, BooleanClause.Occur.MUST);
                //    else
                //        query11.Add(numericQuery, BooleanClause.Occur.SHOULD);
                //}
                #endregion
            }
            if (matchCondition == MatchCondition.MatchAll)
            {
                mainQuery.Add(_tempQuery, BooleanClause.Occur.MUST);
            }
            else
            {
                mainQuery.Add(_tempQuery, BooleanClause.Occur.SHOULD);
            }

            return(mainQuery);
        }
Example #11
0
        ///// <summary>
        ///// Gets the search results.
        ///// </summary>
        ///// <param name="searchCriterias">The search criterias.</param>
        ///// <param name="matchCondition">The match condition.</param>
        ///// <returns></returns>
        //public DataTable GetAdvancedSearchResults(List<Criteria> searchCriterias, MatchCondition matchCondition)
        //{
        //    DataTable tempTable = new DataTable();
        //    try
        //    {
        //        tempTable = _contactsMetaDataTable.Clone();
        //        IndexSearcher MyIndexSearcher = new IndexSearcher(_directory);
        //        BooleanQuery.SetMaxClauseCount(0x2710);
        //        Query mainQuery = this.GetParsedQuery(searchCriterias, matchCondition);
        //        Hits hits = MyIndexSearcher.Search(mainQuery);
        //        for (int i = 0; i < hits.Length(); i++)
        //        {
        //            Document doc = hits.Doc(i);
        //            if (doc != null)
        //            {
        //                DataRow row = tempTable.NewRow();
        //                foreach (DataColumn clm in tempTable.Columns)
        //                {
        //                    if (_contactAttributeDateFields.Contains(clm.ColumnName))
        //                    {
        //                        row[clm] = DateTime.ParseExact(doc.GetField(clm.ColumnName).StringValue(), "yyyyMMddHHmmss", CultureInfo.InvariantCulture,
        //                            DateTimeStyles.None).ToString();
        //                        //row[clm] = Convert.ToDateTime(doc.GetField(clm.ColumnName).StringValue().ToString("yyyyMMddHHmmss").ToString();
        //                    }
        //                    else
        //                        row[clm] = doc.GetField(clm.ColumnName).StringValue();
        //                }
        //                tempTable.Rows.Add(row);
        //                //Datacontext.GetInstance().result += "StartDate : " + doc.GetField("StartDate").StringValue() + " EndDate : " + doc.GetField("EndDate").StringValue();
        //                //Datacontext.GetInstance().result += "\n";
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        _logger.Error("Error while getting advance search results : " + ex.InnerException == null ? ex.Message.ToString() : ex.InnerException.Message);
        //        return null;
        //    }
        //    return tempTable;
        //}

        #endregion

        public DataTable GetAdvancedSearchResults(bool isContactDirectorytSearch, string mediaType, DateTime startDate, List <Criteria> searchCriterias, MatchCondition matchCondition)
        {
            DataTable tempTable = new DataTable();

            try
            {
                tempTable = _contactsMetaDataTable.Clone();
                IndexSearcher MyIndexSearcher = new IndexSearcher(IndexReader.Open(_directory, true));
                BooleanQuery  mainQuery       = new BooleanQuery();
                BooleanQuery.SetMaxClauseCount(0x2710);
                DateTime chkDate;
                if (DateTime.TryParse(startDate.ToString(), out chkDate))
                {
                    if (chkDate != null)
                    {
                        _logger.Debug("Search Field is DateTime value");
                        var numericQuery = NumericRangeQuery.NewLongRange("StartDate", int.MaxValue, long.Parse(startDate.ToString("yyyyMMddHHmmss")),
                                                                          long.Parse(DateTime.Now.ToString("yyyyMMddHHmmss")), true, false);//To avoid inclusive of given date for before condition in searching
                        if (!isContactDirectorytSearch)
                        {
                            mainQuery.Add(numericQuery, BooleanClause.Occur.MUST);
                        }
                    }
                }
                if (_contactsMetaDataTable.Columns.Contains("Media"))
                {
                    if (mediaType != string.Empty)
                    {
                        if (mediaType.ToLower() != "all")
                        {
                            Lucene.Net.Analysis.Token token  = null;
                            Lucene.Net.Analysis.Token token2 = null;
                            TokenStream  stream    = _analyzer.TokenStream("Media", new StringReader(mediaType));
                            BooleanQuery tempQuery = new BooleanQuery();
                            do
                            {
                                token2 = token;
                                token  = stream.Next();
                                if (token2 != null)
                                {
                                    string       stoken      = token2.TermText();
                                    BooleanQuery outputQuery = new BooleanQuery();
                                    this.TokenToQuery("Media", stoken, SearchCondition.Contains.ToString(), ref outputQuery);
                                    tempQuery.Add(outputQuery, BooleanClause.Occur.SHOULD);
                                }
                            }while (token != null);
                            mainQuery.Add(tempQuery, BooleanClause.Occur.MUST);
                        }
                    }
                }
                Query searchCriteriaQuery = this.GetParsedQuery(searchCriterias, matchCondition);
                mainQuery.Add(searchCriteriaQuery, BooleanClause.Occur.MUST);

                Hits hits = MyIndexSearcher.Search(mainQuery);
                for (int i = 0; i < hits.Length(); i++)
                {
                    Document doc = hits.Doc(i);
                    if (doc != null)
                    {
                        DataRow row = tempTable.NewRow();
                        foreach (DataColumn clm in tempTable.Columns)
                        {
                            System.Type columnType = clm.DataType;
                            if (_contactAttributeDateFields.Contains(clm.ColumnName) || columnType == typeof(DateTime))
                            {
                                if (!string.IsNullOrEmpty(doc.GetField(clm.ColumnName).StringValue()))
                                {
                                    row[clm] = DateTime.ParseExact(doc.GetField(clm.ColumnName).StringValue(), "yyyyMMddHHmmss", CultureInfo.InvariantCulture,
                                                                   DateTimeStyles.None).ToString();
                                }
                                else
                                {
                                    row[clm] = DBNull.Value;
                                }
                            }
                            else
                            {
                                row[clm] = doc.GetField(clm.ColumnName).StringValue();
                            }
                        }
                        tempTable.Rows.Add(row);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Error while getting GetAdvancedSearchResults : " + ((ex.InnerException == null) ? ex.Message.ToString() : ex.InnerException.ToString()));
                return(null);
            }
            return(tempTable);
        }
        public DataSet Search(string expr, MatchCondition condition, SearchExpansion expansion)
        {
            DataSet result = GetResultDataSet();

            DataSet dataSet = dao.GetTables();
            DataTableReader tablesReader = null;
            try
            {
                tablesReader = dataSet.CreateDataReader();
                while (tablesReader.Read())
                {
                    string schema = tablesReader.GetString(0);
                    string table = tablesReader.GetString(1);

                    int totalPages = dao.CountPages(schema, table);

                    for (int page = 0; page < totalPages; page++)
                    {
                        dataSet = dao.GetRows(schema, table, page);

                        DataTableReader rowsReader = null;
                        try
                        {
                            rowsReader = dataSet.CreateDataReader();
                            for (int rowCount = 0; rowsReader.Read(); rowCount++)
                            {
                                for (int columnCount = 0; columnCount < rowsReader.FieldCount; columnCount++)
                                {
                                    if (!rowsReader.IsDBNull(columnCount))
                                    {
                                        string column = rowsReader.GetName(columnCount);
                                        string cexpr = rowsReader.GetValue(columnCount).ToString();
                                        switch (expansion)
                                        {
                                            case SearchExpansion.NONE:
                                                bool isValid = Filter(cexpr, expr, condition);
                                                if (isValid)
                                                {
                                                    AddResultDataSetRow(result, schema, table, column, rowCount, cexpr);
                                                }
                                                break;
                                            case SearchExpansion.SIMPLE:
                                                throw new NotImplementedException();
                                        }
                                        FireFeedbackEvent(schema, table, column, rowCount, cexpr);
                                    }
                                }
                            }
                        }
                        finally
                        {
                            if (rowsReader != null)
                            {
                                rowsReader.Close();
                            }
                        }
                    }
                }
            }
            finally
            {
                if (tablesReader != null)
                {
                    tablesReader.Close();
                }
            }

            return result;
        }
 private bool Filter(string expr, string filter, MatchCondition condition)
 {
     bool result = false;
     string[] tokens = filter.Split();
     switch (condition)
     {
         case MatchCondition.CONTAINS:
             foreach (string token in tokens)
             {
                 result = expr.ToLower().IndexOf(token.ToLower()) >= 0;
                 if (result)
                 {
                     break;
                 }
             }
             break;
         case MatchCondition.CONTAINS_ALL:
             foreach (string token in tokens)
             {
                 result = expr.ToLower().IndexOf(token.ToLower()) >= 0;
                 if (!result)
                 {
                     break;
                 }
             }
             break;
         case MatchCondition.EXACT:
             result = expr.ToLower().Equals(filter.ToLower());
             break;
     }
     return result;
 }
Example #14
0
 public void Start(MatchCondition condition, params Model.Location[] locations)
 {
     this.Start(null, condition, locations);
 }
Example #15
0
 private void CreateNewMatchCondition()
 {
     _currentMatchCondition = new MatchCondition();
     _queryModel.MatchConditions.Add(_currentMatchCondition);
 }
 private void CreateNewMatchCondition()
 {
     this.currentMatchCondition = new MatchCondition();
     this.MatchConditions.Add(this.currentMatchCondition);
 }