public Queries(string text) : this() { char [] delimiterChars = { '\r' }; string query = text.Replace('\n', ' '); query = query.ToLower(); string [] queries = query.Split(delimiterChars); for (int index = 0; index < queries.Length; ++index) { char [] delimiter2Chars = { ' ' }; string [] strings = queries [index].Trim().Split(delimiter2Chars); string name = string.Empty; QueryTypes queryType = QueryTypes.Name; QuerySubtypes querySubtype = QuerySubtypes.StartsWith; if (Parse(strings, ref name, ref queryType, ref querySubtype) == true) { Add(name, queryType, querySubtype); } } }
private bool Parse(string [] strings, ref string value, ref QueryTypes queryType, ref QuerySubtypes querySubtype) { querySubtype = QuerySubtypes.StartsWith; if (strings [0] == "where") { switch (strings [1]) { case "name": queryType = QueryTypes.Name; break; case "location": queryType = QueryTypes.Location; break; case "diameter": queryType = QueryTypes.Diameter; break; case "age": queryType = QueryTypes.Age; break; case "period": queryType = QueryTypes.Period; break; case "exposed": queryType = QueryTypes.Exposed; break; case "drilled": queryType = QueryTypes.Drilled; break; case "targetrock": case "target": queryType = QueryTypes.TargetRock; break; case "bolidetype": case "bolide": queryType = QueryTypes.BolideType; break; case "references": queryType = QueryTypes.References; break; default: return(false); } if (strings.Length == 3) { value = strings [2].ToLower(); return(true); } else if (strings.Length >= 4) { string query = strings [2].ToLower(); if (query.StartsWith("starts") || query.StartsWith("startswith")) { querySubtype = QuerySubtypes.StartsWith; } else if (query.StartsWith("contains")) { querySubtype = QuerySubtypes.Contains; } else if (query.StartsWith("ends") || query.StartsWith("endswith")) { querySubtype = QuerySubtypes.EndsWith; } else if (query.StartsWith("greaterthan") || query.StartsWith(">")) { querySubtype = QuerySubtypes.GreaterThan; } else if (query.StartsWith("lessthan") || query.StartsWith("<")) { querySubtype = QuerySubtypes.LessThan; } value = strings [3].ToLower(); if (strings.Length == 5) { value += " " + strings [4].ToLower(); } return(true); } } return(false); }
public ClassQuery(string value, QueryTypes queryType, QuerySubtypes querySubtype) { Value = value; QueryType = queryType; QuerySubtype = querySubtype; }
private void Add(string value, QueryTypes queryType, QuerySubtypes querySubtype) { AllQueries.Add(new ClassQuery(value.ToLower(), queryType, querySubtype)); }