private static string SetTableRelations(DALTable tbl) { tbl.tableProcessLogs.Add(tbl.tableCode + "_SetTableRelations", tbl.relations == null ? " no table.relations " : tbl.relations.Count().ToString()); if (tbl.relations == null) { return(""); } string retVal = ""; foreach (JObject j in tbl.relations) { string type = _g.TKVStr(j, "type"); string childTableCode = _g.TKVStr(j, "foreign_code"); string[] childTableCodeArr = childTableCode.Split('-'); DALTable childTable = AppTables[childTableCodeArr[0]]; string childType = childTableCodeArr.Length == 1 ? "" : childTableCodeArr[1]; if (tbl.tableRelations == null) { tbl.tableRelations = new Dictionary <string, DALRelation>(); } DALRelation rel = new DALRelation(type, tbl, childTable, _g.TKVStr(j, "local_field"), _g.TKVStr(j, "foreign_field"), _g.TKVBln(j, "parent_detail"), childType: childType); tbl.tableRelations.Add(childTableCode, rel); } return(retVal); }
private static void SetTableConfiguration() { // clear DALTable objects in the Dataset AppTables.Clear(); // Get all table configuration files string[] configFiles = Directory.GetFiles(_g.PATH_SCHEMA_CONFIG, _g.PTN_TABLE_CONFIG); foreach (string fn in configFiles) { // Get Object Code that will be used as key to the element in the object dicationary string objCode = _g.GetCodeFromPattern(fn, _g.PTN_TABLE_CONFIG); // convert JSON string to JObject JObject jObject = JObject.Parse(File.ReadAllText(fn)); // Convert JSON String of the columns property to JArray object JArray jCols = JArray.Parse(_g.TKVStr(jObject, "columns", "[]")); // Initialize new colsInfo list List <ColumnInfo> colsInfo = new List <ColumnInfo>() { }; string fieldPrefix = _g.TKVStr(jObject, "tableFieldPrefix"); // loop through columns if found in the configuration file if (jCols.Count != 0) { foreach (JObject jCol in jCols) { colsInfo.Add(new ColumnInfo( _g.TKVStr(jCol, "name") , _g.TKVStr(jCol, "type", "String") , _g.TKVStr(jCol, "caption") , _g.TKVStr(jCol, "alias") , _g.TKVStr(jCol, "roles") , _g.TKVInt(jCol, "keyPosition") , _g.TKVInt(jCol, "uniquePosition") , _g.TKVInt(jCol, "groupPosition") , _g.TKVInt(jCol, "sortPosition") , _g.TKVInt(jCol, "displayPosition") , _g.TKVBln(jCol, "isRequired") , _g.TKVBln(jCol, "isLong") , fieldPrefix )); } } // Add new item in the Table dictionary AppTables.Add( objCode, new DALTable( _g.TKVStr(jObject, "tableName") , colsInfo , description: _g.TKVStr(jObject, "description") , tableCode: objCode , tableClassFilename: _g.TKVStr(jObject, "tableClassFilename") , tableClass: _g.TKVStr(jObject, "tableClass") , tableRowClass: _g.TKVStr(jObject, "tableRowClass") , tableFieldPrefix: _g.TKVStr(jObject, "tableFieldPrefix") , links: _g.TKVJArr(jObject, "links") , relations: _g.TKVJArr(jObject, "relations") , captions: _g.TKVJObj(jObject, "captions") , tableLinks: _g.TKVJArr(jObject, "tableLinks") , tableLinksFields: _g.TKVJObj(jObject, "tableLinksFields") , tableCollection: AppTables , clientConfig: _g.TKVJObj(jObject, "clientConfig") ) ); } // end of foreach configFiles bool clientSideDevExist = File.Exists(_g.PATH_TARGET_TYPESCRIPT_DATASET); // iterate through tables to generate single client-side typescript file string typeScript = ""; string importScript = ""; string instanceScript = ""; string tblClassName; string relScript = ""; // Iterate through all generated DALTable objects to perform // Table post creation property assignments for (int idx = 0; idx < AppTables.Count(); idx++) { DALTable tblObj = AppTables.ElementAt(idx).Value; SetTableRelations(tblObj); if (tblObj.tableRelations != null) { string relFmt = "\n this.t{0}.tableRelations.push(new Relation(\"{1}\", \"{2}\", this.t{3}, this.t{4}, \"{5}\", \"{6}\", {7}));"; foreach (string relKey in tblObj.tableRelations.Keys) { DALRelation rel = tblObj.tableRelations[relKey]; relScript += String.Format(relFmt, tblObj.tableClass.Substring(1), rel.foreignTableCode, rel.type, rel.table.tableClass.Substring(1), rel.tableChild.tableClass.Substring(1), rel.localField, rel.foreignField, rel.parentDetail.ToString().ToLower()); } //this.tblAnomalies.tableRelations["an"]=new Relation("lnk",this.ds.tblAnomalies,this.ds.tblFailureThreats); } if (idx == 0) { typeScript = tblObj.templateImports; } typeScript += "\n\n\n" + tblObj.templateClass; tblClassName = tblObj.tableClass; importScript += "\n" + _g.TPL_TARGET_TYPESCRIPT_IMPORT .Replace("<TABLE>", tblClassName) .Replace("<TABLEROW>", tblObj.tableRowClass); instanceScript += "\n " + _g.TPL_TARGET_TYPESCRIPT_INSTANCE .Replace("<TABLEVAR>", tblClassName.Substring(0, 1).ToLower() + tblClassName.Substring(1)) .Replace("<TABLE>", tblClassName); } // write typecript to client side script file if (clientSideDevExist) { DALData.DAL.writeAllText(_g.PATH_TARGET_TYPESCRIPT_PATH, typeScript); string dsts = File.ReadAllText(_g.PATH_TARGET_TYPESCRIPT_DATASET); // write in between INCLUDES //<INCLUDES> //</INCLUDES> string[] tsArr = _g.Split(dsts, "//<INCLUDES>"); string[] tsArr2 = _g.Split(tsArr[1], "//</INCLUDES>"); string fmt = "//<INCLUDES>{0}\n//</INCLUDES>"; dsts = tsArr[0] + String.Format(fmt, importScript) + tsArr2[1]; tsArr = _g.Split(dsts, "//<INSTANTIATE>"); tsArr2 = _g.Split(tsArr[1], "//</INSTANTIATE>"); fmt = "//<INSTANTIATE>{0}\n//</INSTANTIATE>"; dsts = tsArr[0] + String.Format(fmt, instanceScript) + tsArr2[1]; if (relScript.Length != 0) { tsArr = _g.Split(dsts, "//<RELATIONS>"); tsArr2 = _g.Split(tsArr[1], "//</RELATIONS>"); fmt = "//<RELATIONS>{0}\n//</RELATIONS>"; dsts = tsArr[0] + String.Format(fmt, relScript) + tsArr2[1]; } tsArr = _g.Split(dsts, "//<DECLARE>"); tsArr2 = _g.Split(tsArr[1], "//</DECLARE>"); string declareString = String.Format("\n this.apiCommon.PARAMS_DELIM_CHAR = '{0}';", _g2.PARAMS_DELIM_CHAR) + String.Format("\n this.apiCommon.PARAMS_VAL_DELIM_CHAR = '{0}';", _g2.PARAMS_VAL_DELIM_CHAR) + String.Format("\n this.apiCommon.FIELD_PARENT_LINK_ALIAS = '{0}';", _g2.FIELD_PARENT_LINK_ALIAS) + String.Format("\n this.apiCommon.FIELD_CHILD_FIRST_ALIAS = '{0}';", _g2.FIELD_CHILD_FIRST_ALIAS) + String.Format("\n this.apiCommon.FIELD_CHILD_COUNT_ALIAS = '{0}';", _g2.FIELD_CHILD_COUNT_ALIAS); fmt = "//<DECLARE>{0}\n //</DECLARE>"; dsts = tsArr[0] + String.Format(fmt, declareString) + tsArr2[1]; DALData.DAL.writeAllText(_g.PATH_TARGET_TYPESCRIPT_DATASET, dsts); } GeneralRetObj.debugStrings.Add("Total Tables: " + AppTables.Count()); // set change track table property for non-change track tables... if (AppTables.ContainsKey(_g.KEY_TABLE_UPDATE_TRACK_CODE)) { DALTable chgTrack = AppTables[_g.KEY_TABLE_UPDATE_TRACK_CODE]; foreach (KeyValuePair <string, DALTable> tbl in AppTables) { tbl.Value.tableChangeTrack = chgTrack; } } } // end of SetTableConfiguration method