private dynamic GetRealValueFromField(IAttributeSerializationDefinition serializationDefinition, string savedVal) { switch (serializationDefinition.DataSerializationType) { case DataSerializationTypes.Guid: case DataSerializationTypes.String: case DataSerializationTypes.LongString: case DataSerializationTypes.Boolean: return(savedVal); case DataSerializationTypes.SmallInt: case DataSerializationTypes.LargeInt: int intOut; if (int.TryParse(savedVal, out intOut)) { return(intOut); } throw new InvalidCastException("Could not parse value " + savedVal + " into an int Type"); case DataSerializationTypes.Decimal: decimal decOut; if (decimal.TryParse(savedVal, out decOut)) { return(decOut); } throw new InvalidCastException("Could not parse value " + savedVal + " into an decimal Type"); case DataSerializationTypes.Date: var dateTime = ExamineHelper.FromExamineDateTime(savedVal); if (dateTime != null) { return(dateTime); } throw new InvalidCastException("Could not parse value " + savedVal + " into an DateTimeOffset Type"); case DataSerializationTypes.ByteArray: throw new NotImplementedException(); default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Stores the value with the correct data type in Examine /// </summary> /// <param name="serializationDefinition"></param> /// <param name="key"></param> /// <param name="val"></param> /// <param name="d"></param> private void StoreFieldValue(IAttributeSerializationDefinition serializationDefinition, string key, object val, IDictionary <string, ItemField> d) { if (val == null) { return; } switch (serializationDefinition.DataSerializationType) { case DataSerializationTypes.Guid: case DataSerializationTypes.String: case DataSerializationTypes.LongString: case DataSerializationTypes.Boolean: //through the serialization type is string, we still need to detect the 'real' type to see how to convert it to a string. For example, // a date shouldn't just be a ToString() since we want to preserve as much information as possible. var valType = val.GetType(); if (TypeFinder.IsTypeAssignableFrom <DateTime>(valType)) { var dt = (DateTime)val; //convert to the roundtrip date/time format http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip d.Add(key, new ItemField(dt.ToString("o"))); } else if (TypeFinder.IsTypeAssignableFrom <DateTimeOffset>(valType)) { var dt = (DateTimeOffset)val; //convert to the roundtrip date/time format http://msdn.microsoft.com/en-us/library/az4se3k1.aspx#Roundtrip d.Add(key, new ItemField(dt.ToString("o"))); } else { d.Add(key, new ItemField(val.ToString())); } break; case DataSerializationTypes.SmallInt: case DataSerializationTypes.LargeInt: d.Add(key, new ItemField(val) { DataType = FieldDataType.Int }); break; case DataSerializationTypes.Decimal: d.Add(key, new ItemField(val) { DataType = FieldDataType.Double }); break; case DataSerializationTypes.Date: d.Add(key, new ItemField(val) { DataType = FieldDataType.DateTime }); break; case DataSerializationTypes.ByteArray: throw new NotImplementedException(); default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Creates an <see cref="IAttributeDefinition"/> with a given <see cref="IAttributeTypeDefinition"/> and references it to a given <see cref="IAttributeGroupDefinition"/>. /// </summary> /// <typeparam name="TAllowedType"></typeparam> /// <param name="alias">The alias.</param> /// <param name="name">The name.</param> /// <param name="attributeTypeDefinition">The attribute type definition.</param> /// <param name="serializationDefinition">The serialization definition.</param> /// <param name="attributeGroupDefinition">The attribute group definition.</param> /// <returns></returns> public static T CreateAttributeIn <T>(string alias, string name, IAttributeTypeDefinition attributeTypeDefinition, IAttributeSerializationDefinition serializationDefinition, IAttributeGroupDefinition attributeGroupDefinition) where T : class, IAttributeDefinition, new() { var entity = Create <T>(alias, name); entity.AttributeType = attributeTypeDefinition; entity.AttributeType.SerializationType = serializationDefinition; attributeGroupDefinition.AttributeDefinitions.Add(entity); return(entity); }
public AttributeType(string @alias, LocalizedString name, LocalizedString description, IAttributeSerializationDefinition serializationType) { this.Setup(alias, name, description); SerializationType = serializationType; }