Esempio n. 1
0
 public DatePropertyQuery(PropertyNames property, DateTime query, PropertyQueryType type)
     : base(property)
 {
     this.query      = query;
     this.type       = type;
     this.pretendNow = null;
 }
Esempio n. 2
0
        public static bool MatchString(String candidate, String query,
                                       PropertyQueryType type, bool caseSensitive)
        {
            if (String.IsNullOrEmpty(query))
            {
                return(true);
            }

            String stringValue = caseSensitive ? candidate : candidate.ToLowerInvariant();
            String queryValue  = caseSensitive ? query : query.ToLowerInvariant();

            switch (type)
            {
            case PropertyQueryType.contains:
                return(stringValue.Contains(queryValue));

            case PropertyQueryType.startswith:
                return(stringValue.StartsWith(queryValue));

            case PropertyQueryType.endswith:
                return(stringValue.EndsWith(queryValue));

            case PropertyQueryType.exactmatch:
                return(stringValue.Equals(queryValue));

            case PropertyQueryType.notcontain:
                return(!stringValue.Contains(queryValue));

            default:
                return(false);
            }
        }
Esempio n. 3
0
 public StringPropertyQuery(XmlNode node)
     : base(node)
 {
     this.caseSensitive = SearchMarshalling.ParseBool(Helpers.GetXmlAttribute(node, "casesensitive"));
     this.query         = Helpers.GetXmlAttribute(node, "query");
     this.type          = (PropertyQueryType)Enum.Parse(typeof(PropertyQueryType), Helpers.GetXmlAttribute(node, "type"));
 }
Esempio n. 4
0
 public StringPropertyQuery(PropertyNames property, String query, PropertyQueryType type, bool caseSensitive)
     : base(property)
 {
     this.query         = query;
     this.type          = type;
     this.caseSensitive = caseSensitive;
 }
Esempio n. 5
0
        public DatePropertyQuery(XmlNode node)
            : base(node)
        {
            string queryString = Helpers.GetXmlAttribute(node, "query");

            if (queryString.Length == 8)  // new style
            {
                this.query = DateTime.ParseExact(queryString, "yyyyMMdd", CultureInfo.InvariantCulture);
            }
            else  // old style
            {
                this.query = TimeUtil.ParseISO8601DateTime(queryString);
            }
            this.type       = (PropertyQueryType)Enum.Parse(typeof(PropertyQueryType), Helpers.GetXmlAttribute(node, "type"));
            this.pretendNow = null;
        }
Esempio n. 6
0
        public static bool?MatchDate(DateTime value, DateTime query, PropertyQueryType type, DateTime now)
        {
            DateTime valueLocal = value.ToLocalTime();

            switch (type)
            {
            case PropertyQueryType.today:
                return(now.Year == valueLocal.Year &&
                       now.DayOfYear == valueLocal.DayOfYear);

            case PropertyQueryType.yesterday:
                if (valueLocal.Year == now.Year)
                {
                    return(valueLocal.DayOfYear == now.DayOfYear - 1);
                }
                else if (valueLocal.Year == now.Year - 1)
                {
                    return(now.DayOfYear == 1 && valueLocal.DayOfYear == DaysInYear(valueLocal.Year));
                }
                else
                {
                    return(false);
                }

            case PropertyQueryType.thisweek:
                if (valueLocal.Year == now.Year)
                {
                    int diff = now.DayOfYear - valueLocal.DayOfYear;
                    return(diff >= 0 && diff < 7);
                }
                else if (valueLocal.Year == now.Year - 1)
                {
                    int diff = now.DayOfYear + DaysInYear(valueLocal.Year) - valueLocal.DayOfYear;
                    return(diff >= 0 && diff < 7);
                }
                else
                {
                    return(false);
                }

            case PropertyQueryType.lastweek:
                if (valueLocal.Year == now.Year)
                {
                    int diff = now.DayOfYear - valueLocal.DayOfYear;
                    return(diff >= 7 && diff < 14);
                }
                else if (valueLocal.Year == now.Year - 1)
                {
                    int diff = now.DayOfYear + DaysInYear(valueLocal.Year) - valueLocal.DayOfYear;
                    return(diff >= 7 && diff < 14);
                }
                else
                {
                    return(false);
                }

            case PropertyQueryType.before:
                return(valueLocal.Date <= query.Date);

            case PropertyQueryType.after:
                return(valueLocal.Date >= query.Date);

            case PropertyQueryType.exact:
                return(valueLocal.Date == query.Date);

            default:
                return(false);
            }
        }
Esempio n. 7
0
 public IntPropertyQuery(XmlNode node)
     : base(node)
 {
     this.query = Int64.Parse(Helpers.GetXmlAttribute(node, "query"));
     this.type  = (PropertyQueryType)Enum.Parse(typeof(PropertyQueryType), Helpers.GetXmlAttribute(node, "type"));
 }
Esempio n. 8
0
 public IntPropertyQuery(PropertyNames property, long query, PropertyQueryType type)
     : base(property)
 {
     this.query = query;
     this.type  = type;
 }