public static Schema FromJSON(JSONDataMap map, bool readOnly = false) { if (map == null || map.Count == 0) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map==null|empty)"); } var name = map["Name"].AsString(); if (name.IsNullOrWhiteSpace()) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map.Name=null|empty)"); } var adefs = map["FieldDefs"] as JSONDataArray; if (adefs == null || adefs.Count == 0) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map.FieldDefs=null|empty)"); } var defs = new List <Schema.FieldDef>(); foreach (var mdef in adefs.Cast <JSONDataMap>()) { var fname = mdef["Name"].AsString(); if (fname.IsNullOrWhiteSpace()) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map.FierldDefs[name=null|empty])"); } var req = mdef["IsRequired"].AsBool(); var key = mdef["IsKey"].AsBool(); var vis = mdef["Visible"].AsBool(); var desc = mdef["Description"].AsString(); var minLen = mdef["MinLen"].AsInt(); var maxLen = mdef["MaxLen"].AsInt(); var valList = mdef["ValueList"].AsString(); var strKind = mdef["Kind"].AsString(); var dataKind = strKind == null ? DataKind.Text : (DataKind)Enum.Parse(typeof(DataKind), strKind); var strCase = mdef["CharCase"].AsString(); var chrCase = strCase == null ? CharCase.AsIs : (CharCase)Enum.Parse(typeof(CharCase), strCase); var tp = mdef["Type"].AsString(string.Empty).ToLowerInvariant().Trim(); var tpn = mdef["Nullable"].AsBool(); var type = JSONMappings.MapJSONTypeToCLR(tp, tpn); var atr = new FieldAttribute(required: req, key: key, visible: vis, description: desc, minLength: minLen, maxLength: maxLen, valueList: valList, kind: dataKind, charCase: chrCase); var def = new Schema.FieldDef(fname, type, atr); defs.Add(def); } return(new Schema(name, readOnly, defs)); }
public static Schema FromJSON(JSONDataMap map, bool readOnly = false) { if (map == null || map.Count == 0) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map==null|empty)"); } var name = map["Name"].AsString(); if (name.IsNullOrWhiteSpace()) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map.Name=null|empty)"); } var adefs = map["FieldDefs"] as JSONDataArray; if (adefs == null || adefs.Count == 0) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map.FieldDefs=null|empty)"); } var defs = new List <Schema.FieldDef>(); foreach (var mdef in adefs.Cast <JSONDataMap>()) { var fname = mdef["Name"].AsString(); if (fname.IsNullOrWhiteSpace()) { throw new CRUDException(StringConsts.ARGUMENT_ERROR + "Schema.FromJSON(map.FierldDefs[name=null|empty])"); } var req = mdef["IsRequired"].AsBool(); var key = mdef["IsKey"].AsBool(); var vis = mdef["Visible"].AsBool(); var tp = mdef["Type"].AsString(string.Empty).ToLowerInvariant().Trim(); var tpn = mdef["Nullable"].AsBool(); var type = JSONMappings.MapJSONTypeToCLR(tp, tpn); var atr = new FieldAttribute(required: req, key: key, visible: vis); var def = new Schema.FieldDef(fname, type, atr); defs.Add(def); } return(new Schema(name, readOnly, defs)); }