protected void ApplyFields(ClarifyDataRow row) { foreach (FieldProtocol field in this.Fields) { if (!ClarifyApplication.Instance.SchemaCache.IsValidField(this.Table, field.Name)) { throw new InvalidOperationException(string.Format("Field '{0}' is not valid for object '{1}'", field.Name, this.Table)); } SchemaFieldBase schemaField = ClarifyApplication.Instance.SchemaCache.GetField(this.Table, field.Name); object fieldValue = null; try { switch (schemaField.CommonType) { case (int)SchemaCommonType.String: fieldValue = field.Value; break; case (int)SchemaCommonType.Date: fieldValue = DateTime.Parse(field.Value); break; case (int)SchemaCommonType.Float: fieldValue = float.Parse(field.Value); break; case (int)SchemaCommonType.Double: fieldValue = double.Parse(field.Value); break; case (int)SchemaCommonType.Decimal: fieldValue = decimal.Parse(field.Value); break; case (int)SchemaCommonType.Integer: fieldValue = int.Parse(field.Value); break; default: throw new InvalidOperationException(string.Format("Parse logic not implemented for SchemaCommonType.{0}", schemaField.CommonType)); } } catch (FormatException ex) { throw new InvalidOperationException(string.Format("Could not parse field value '{0}' for field '{1}' on object '{2}'.", field.Value, field.Name, this.Table), ex); } row[field.Name] = fieldValue; } }
private void ParseQueryItemFilters(QueryProtocol queryItem) { foreach (FilterProtocol filter in queryItem.Filters) { if (!ClarifyApplication.Instance.SchemaCache.IsValidField( queryItem.ObjectName, filter.Field)) { throw new ApplicationException(string.Format("'{0}' is not a valid field for object '{1}'.", filter.Field, queryItem.ObjectName)); } SchemaFieldBase field = ClarifyApplication.Instance.SchemaCache.GetField(queryItem.ObjectName, filter.Field); NumberOps numberOp; switch (field.CommonType) { case (int)SchemaCommonType.String: StringOps strOp = (StringOps)GetParsedFilterOperation(typeof(StringOps), filter, queryItem.ObjectName); queryItem.ClarifyGeneric.AppendFilter(filter.Field, strOp, filter.Value); break; case (int)SchemaCommonType.Date: DateOps dateOp = (DateOps)GetParsedFilterOperation(typeof(DateOps), filter, queryItem.ObjectName); DateTime dateVal = GetParsedFilterValueToDateTime(filter, queryItem.ObjectName); queryItem.ClarifyGeneric.AppendFilter(filter.Field, dateOp, dateVal); break; case (int)SchemaCommonType.Float: case (int)SchemaCommonType.Double: case (int)SchemaCommonType.Decimal: numberOp = (NumberOps)GetParsedFilterOperation(typeof(NumberOps), filter, queryItem.ObjectName); Decimal decVal = GetParsedFilterValueToDecimal(filter, queryItem.ObjectName); queryItem.ClarifyGeneric.AppendFilter(filter.Field, numberOp, decVal); break; case (int)SchemaCommonType.Integer: numberOp = (NumberOps)GetParsedFilterOperation(typeof(NumberOps), filter, queryItem.ObjectName); int intVal = GetParsedFilterValueToInetger(filter, queryItem.ObjectName); queryItem.ClarifyGeneric.AppendFilter(filter.Field, numberOp, intVal); break; default: throw new InvalidOperationException(string.Format("Parse logic not implemented for SchemaCommonType.{0}", field.CommonType)); } } }
protected void ApplyUniqueFields() { foreach (FieldProtocol field in this.UniqueFields) { if (!ClarifyApplication.Instance.SchemaCache.IsValidField(this.Table, field.Name)) { throw new InvalidOperationException(string.Format("Field '{0}' is not valid for object '{1}'", field.Name, this.Table)); } SchemaFieldBase schemaField = ClarifyApplication.Instance.SchemaCache.GetField(this.Table, field.Name); try { switch (schemaField.CommonType) { case (int)SchemaCommonType.String: this.ClarifyGeneric.AppendFilter(field.Name, StringOps.Equals, field.Value); break; case (int)SchemaCommonType.Date: DateTime dateVal = DateTime.Parse(field.Value); this.ClarifyGeneric.AppendFilter(field.Name, DateOps.Equals, dateVal); break; case (int)SchemaCommonType.Float: case (int)SchemaCommonType.Double: case (int)SchemaCommonType.Decimal: decimal decVal = decimal.Parse(field.Value); this.ClarifyGeneric.AppendFilter(field.Name, NumberOps.Equals, decVal); break; case (int)SchemaCommonType.Integer: int intVal = int.Parse(field.Value); this.ClarifyGeneric.AppendFilter(field.Name, NumberOps.Equals, intVal); break; default: throw new InvalidOperationException(string.Format("Parse logic not implemented for SchemaCommonType.{0}", schemaField.CommonType)); } } catch (FormatException ex) { throw new InvalidOperationException(string.Format("Could not parse field value '{0}' for field '{1}' on object '{2}'.", field.Value, field.Name, this.Table), ex); } } }
private void ParseQueryItemFiltersInList(QueryProtocol queryItem) { foreach (FilterInListProtocol filter in queryItem.FiltersInList) { if (!ClarifyApplication.Instance.SchemaCache.IsValidField( queryItem.ObjectName, filter.Field)) { throw new ApplicationException(string.Format("'{0}' is not a valid field for object '{1}'.", filter.Field, queryItem.ObjectName)); } SchemaFieldBase field = ClarifyApplication.Instance.SchemaCache.GetField(queryItem.ObjectName, filter.Field); switch (field.CommonType) { case (int)SchemaCommonType.String: queryItem.ClarifyGeneric.AppendFilterInList(filter.Field, filter.IsIn, filter.Values); break; case (int)SchemaCommonType.Date: DateTime[] dateVals = GetParsedFilterInListValueToDateTime(filter, queryItem.ObjectName); queryItem.ClarifyGeneric.AppendFilterInList(filter.Field, filter.IsIn, dateVals); break; case (int)SchemaCommonType.Float: case (int)SchemaCommonType.Double: case (int)SchemaCommonType.Decimal: Decimal[] decVals = GetParsedFilterInListValueToDecimal(filter, queryItem.ObjectName); queryItem.ClarifyGeneric.AppendFilterInList(filter.Field, filter.IsIn, decVals); break; case (int)SchemaCommonType.Integer: int[] intVals = GetParsedFilterInListValueToInetger(filter, queryItem.ObjectName); queryItem.ClarifyGeneric.AppendFilterInList(filter.Field, filter.IsIn, intVals); break; default: throw new InvalidOperationException(string.Format("Parse logic not implemented for SchemaCommonType.{0}", field.CommonType)); } } }