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); }
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); }
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(); }
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; }
/// <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); } }
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); }
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); }
private void CreateNewMatchCondition() { _currentMatchCondition = new MatchCondition(); MatchConditions.Add(_currentMatchCondition); }
public Structure GetNode() { Match = new MatchCondition(); return(node); }
/// <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); }
///// <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; }
public void Start(MatchCondition condition, params Model.Location[] locations) { this.Start(null, condition, locations); }
private void CreateNewMatchCondition() { _currentMatchCondition = new MatchCondition(); _queryModel.MatchConditions.Add(_currentMatchCondition); }
private void CreateNewMatchCondition() { this.currentMatchCondition = new MatchCondition(); this.MatchConditions.Add(this.currentMatchCondition); }