/** * Returns the input type for the {@code FieldMetaType} that this is... * @param input * @param enc * @return */ public T DecodeType <T>(FieldMetaType type, string input, IEncoder enc) { switch (type) { case FieldMetaType.List: case FieldMetaType.String: return(ChangeType <T>(input)); case FieldMetaType.DateTime: return(ChangeType <T>(((DateEncoder)enc).Parse(input))); case FieldMetaType.Boolean: return(ChangeType <T>(bool.Parse(input) == true ? 1 : 0)); case FieldMetaType.Coord: case FieldMetaType.Geo: { string[] parts = input.Split(';'); // [\\s]*\\;[\\s]* return(ChangeType <T>(new Tuple(double.Parse(parts[0], NumberFormatInfo.InvariantInfo), double.Parse(parts[1], NumberFormatInfo.InvariantInfo), double.Parse(parts[2], NumberFormatInfo.InvariantInfo)))); } case FieldMetaType.Integer: case FieldMetaType.Float: return(ChangeType <T>(double.Parse(input, NumberFormatInfo.InvariantInfo))); //return ChangeType<T>(input); case FieldMetaType.SparseArray: case FieldMetaType.DenseArray: { return(ChangeType <T>(input.Replace("[", "").Replace("]", "") // [\\s]*\\;[\\s]* .Split(',').Select(s => Convert.ToInt32(s)).ToArray())); } default: return(default(T)); } }
public object Get <TDecode>(string key) { int idx = _parent.indexFieldMap[key]; FieldMetaType fmt = fTypes[idx]; FieldMetaTypeHelper helper = new FieldMetaTypeHelper(key); return(helper.DecodeType <TDecode>(fmt, arr[idx + 1], _parent.indexToEncoderMap[idx])); }
/** * Returns the {@link Encoder} matching this field type. * @return */ public IEncoder NewEncoder(FieldMetaType type) { switch (type) { case FieldMetaType.List: case FieldMetaType.String: return(SDRCategoryEncoder.GetBuilder().Build()); case FieldMetaType.DateTime: return(DateEncoder.GetBuilder().Build()); case FieldMetaType.Boolean: return(ScalarEncoder.GetBuilder().Build()); case FieldMetaType.Coord: return(CoordinateEncoder.GetBuilder().Build()); case FieldMetaType.Geo: return(GeospatialCoordinateEncoder.GetGeobuilder().Build()); case FieldMetaType.Integer: case FieldMetaType.Float: return(RandomDistributedScalarEncoder.GetBuilder().Build()); case FieldMetaType.DenseArray: case FieldMetaType.SparseArray: return(SDRPassThroughEncoder.GetSptBuilder().Build()); default: return(null); } }