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()); }
/// <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); }