Exemple #1
0
        public override string ConstructQuery()
        {
            //base query
            StringBuilder sb = new StringBuilder("SELECT");

            //handle top
            if (TableMetadata.MaxSaturationItems > 0)
            {
                sb.AppendFormat(" TOP {0} {1}", TableMetadata.MaxSaturationItems, TableMetadata.Query);
            }
            else
            {
                sb.AppendFormat(" {0}", TableMetadata.Query);
            }

            //mod
            sb.AppendFormat(" WHERE {0} % {1} = {2}", TableMetadata.ModField, Bucket.Catalog.ComputeNode.GlobalBucketCount, Bucket.BucketMod);

            //base filter
            if (!string.IsNullOrWhiteSpace(TableMetadata.Filter))
            {
                sb.AppendFormat(" AND ({0})", TableMetadata.Filter);
            }

            //update value
            if (this.TableMetadata.SaturationUpdateType == typeof(DateTime))
            {
                sb.AppendFormat(
                    " AND {0} {1} '{2} {3}'",
                    TableMetadata.SaturationUpdateField,
                    TableMetadata.SaturationUpdateComparator,
                    ((DateTime)LastUpdateValue).ToShortDateString(),
                    ((DateTime)LastUpdateValue).ToShortTimeString());
            }
            else if (this.TableMetadata.SaturationUpdateType == typeof(string))
            {
                sb.AppendFormat(
                    " AND {0} {1} '{2}'",
                    TableMetadata.SaturationUpdateField,
                    TableMetadata.SaturationUpdateComparator,
                    LastUpdateValue.ToString());
            }
            else
            {
                sb.AppendFormat(
                    " AND {0} {1} {2}",
                    TableMetadata.SaturationUpdateField,
                    TableMetadata.SaturationUpdateComparator,
                    LastUpdateValue.ToString());
            }
            //order by
            if (!string.IsNullOrWhiteSpace(TableMetadata.OrderBy))
            {
                sb.AppendFormat(" ORDER BY {0}", TableMetadata.OrderBy);
            }

            return(sb.ToString());
        }
Exemple #2
0
        /// <summary>
        /// update the last value
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool UpdateLastValue(object obj)
        {
            //check for null
            if (obj == null)
            {
                return(false);
            }

            //check for init last value
            if (LastUpdateValue == null)
            {
                LastUpdateValue = obj;
                return(true);
            }
            //value was updated
            bool bUpdated = false;

            try
            {
                //compare the objects
                int comparison = (Convert.ChangeType(obj, LastUpdateValue.GetType()) as IComparable).CompareTo(LastUpdateValue);

                //handle update logic
                switch (TableMetadata.SaturationUpdateComparator)
                {
                case Comparators.GREATER_THAN:
                    if (comparison > 0)
                    {
                        LastUpdateValue = obj;
                        bUpdated        = true;
                    }
                    break;

                case Comparators.GREATER_THAN_EQUAL_TO:
                    if (comparison >= 0)
                    {
                        LastUpdateValue = obj;
                        bUpdated        = true;
                    }
                    break;

                case Comparators.LESS_THAN:
                    if (comparison < 0)
                    {
                        LastUpdateValue = obj;
                        bUpdated        = true;
                    }
                    break;

                case Comparators.LESS_THAN_EQUAL_TO:
                    if (comparison >= 0)
                    {
                        LastUpdateValue = obj;
                        bUpdated        = true;
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine(ex.ToString());
            }
            return(bUpdated);
        }