示例#1
0
        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);
        }
示例#2
0
        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