示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
        }
示例#3
0
 public ClassQuery(string value, QueryTypes queryType, QuerySubtypes querySubtype)
 {
     Value        = value;
     QueryType    = queryType;
     QuerySubtype = querySubtype;
 }
示例#4
0
 private void Add(string value, QueryTypes queryType, QuerySubtypes querySubtype)
 {
     AllQueries.Add(new ClassQuery(value.ToLower(), queryType, querySubtype));
 }