示例#1
0
        public CswTestCaseRsrc(CswNbtSchemaModTrnsctn CswNbtSchemaModTrnsctn)
        {
            _CswNbtSchemaModTrnsctn = CswNbtSchemaModTrnsctn;

            _TestTableNamesReal.Add(TestTableNamesReal.Modules, "modules");
            _TestTableNamesReal.Add(TestTableNamesReal.DataDictionary, "data_dictionary");
            _TestTableNamesReal.Add(TestTableNamesReal.Nodes, "nodes");


            _TestColumnNamesFake.Add(TestColumnNamesFake.TestColumn01, "test_column_one");
            _TestColumnNamesFake.Add(TestColumnNamesFake.TestColumn02, "test_column_two");
            _TestColumnNamesFake.Add(TestColumnNamesFake.TestColumn03, "test_column_three");

            _TestColumnNamesReal.Add(TestColumnNamesReal.NodeName, "nodename");


            _TestTableNamesFake.Add(TestTableNamesFake.TestTable01, "test_table_01");
            _TestTableNamesFake.Add(TestTableNamesFake.TestTable02, "test_table_02");

            _TestNameStems.Add(TestNameStem.ForeignKeyTable, "fk_Table_");
            _TestNameStems.Add(TestNameStem.PrimeKeyTable, "pk_Table_");
            _TestNameStems.Add(TestNameStem.TestVal, "Test val ");


            _TestNodeTypeNamesFake.Add(TestNodeTypeNamesFake.TestNodeType01, "NodeTypeTest01");
            _TestNodeTypeNamesFake.Add(TestNodeTypeNamesFake.TestNodeType02, "NodeTypeTest02");
        }//ctor
        public CswNbtSchemaUpdateLayoutMgr(CswNbtSchemaModTrnsctn SchemaModTrnsctn, CswEnumNbtObjectClass ObjectClass, CswEnumNbtLayoutType LayoutType = null)
        {
            if (null == ObjectClass || CswResources.UnknownEnum == ObjectClass)
            {
                throw new CswDniException("Cannot instance a Layout Mgr without an Object Class. Object Class was null.");
            }

            this.LayoutType        = LayoutType;
            this.SchemaModTrnsctn  = SchemaModTrnsctn;
            this.ObjectClass       = this.SchemaModTrnsctn.MetaData.getObjectClass(ObjectClass);
            LatestVersionNodeTypes = this.ObjectClass.getLatestVersionNodeTypes();
            Props = new Collection <LayoutProp>();
        }
示例#3
0
        //case 26617: removing otiose instance of CswNbtResources resolved catastrophic memory leak
        private bool _runScript(CswNbtResources CswNbtResources, CswSchemaUpdateDriver CswSchemaUpdateDriver, bool StampVersion)
        {
            bool ReturnVal = true;

            // CswNbtResources CswNbtResources = _ResourcesInitHandler( _AccessId );
            CswNbtSchemaModTrnsctn CswNbtSchemaModTrnsctn = new CswNbtSchemaModTrnsctn(CswNbtResources);

            CswTableUpdate _UpdateHistoryTableUpdate = CswNbtResources.makeCswTableUpdate("schemaupdater_updatehistory_update", "update_history");
            DataTable      _UpdateHistoryTable       = _UpdateHistoryTableUpdate.getTable();

            CswSchemaUpdateDriver.CswNbtSchemaModTrnsctn = CswNbtSchemaModTrnsctn;
            CswSchemaUpdateDriver.update();
            ReturnVal = CswSchemaUpdateDriver.UpdateSucceeded;

            if (false == ReturnVal)
            {
                // Belt and suspenders.
                CswNbtResources.logError(new CswDniException("Schema Updater encountered a problem: " + CswSchemaUpdateDriver.Message));
                _ErrorMessage = "Error updating to schema version " + CswSchemaUpdateDriver.SchemaVersion.ToString() + ": " + CswSchemaUpdateDriver.Message;
            }
            else if (StampVersion)
            {
                _CswSchemaScripts.stampSchemaVersion(CswNbtResources, CswSchemaUpdateDriver);
            }

            DataRow NewUpdateHistoryRow = _UpdateHistoryTable.NewRow();

            NewUpdateHistoryRow["updatedate"] = DateTime.Now.ToString();
            NewUpdateHistoryRow["version"]    = CswSchemaUpdateDriver.SchemaVersion.ToString();
            NewUpdateHistoryRow["scriptname"] = CswSchemaUpdateDriver.ScriptName;
            NewUpdateHistoryRow["succeeded"]  = CswConvert.ToDbVal(ReturnVal);

            if (false == ReturnVal)
            {
                NewUpdateHistoryRow["log"] = "Failed update: " + CswSchemaUpdateDriver.Message;
            }

            _UpdateHistoryTable.Rows.Add(NewUpdateHistoryRow);

            _UpdateHistoryTableUpdate.update(_UpdateHistoryTable);

            CswNbtResources.finalize();
            CswNbtResources.release();


            CswSchemaUpdateDriver.CswNbtSchemaModTrnsctn = null;

            GC.Collect();

            return(ReturnVal);
        }//_runScript()
示例#4
0
        } // _addDefinitionEntries();

        /// <summary>
        /// Check for existence of a definition entry in a schema script before adding bindings.
        /// </summary>
        /// <param name="CswNbtSchemaModTrnsctn"></param>
        /// <param name="ImportDefinitionName"></param>
        /// <returns></returns>
        public static bool checkForDefinitionEntries(CswNbtSchemaModTrnsctn CswNbtSchemaModTrnsctn, string ImportDefinitionName)
        {
            bool Ret = false;

            CswTableSelect importDefSelect = CswNbtSchemaModTrnsctn.makeCswTableSelect("CswNbtImportDef_findDefinitionEntry", CswNbtImportTables.ImportDef.TableName);
            DataTable      importDefTable  = importDefSelect.getTable("where definitionname = '" + ImportDefinitionName + "'");

            if (importDefTable.Rows.Count > 0)
            {
                Ret = true;
            }

            return(Ret);
        }
示例#5
0
        /// <summary>
        /// Public accessor for the _CAFOrder dictionary so we can use it to change the order in the future
        /// </summary>
        //public Dictionary<string, Int32> CAFImportOrder
        //{
        //    get { return _CAFOrder; }
        //}

        /// <summary>
        /// Build a new UpdateImportMgr for a particular definition
        /// </summary>
        /// <param name="SchemaModTrnsctn">The schema script resources class</param>
        /// <param name="DefinitionName">The IMPORT_DEF definition (use "CAF" for caf imports)</param>
        /// <param name="CafDbLink">Legacy: this should probably change/go away after case 31124</param>
        /// <param name="ImporterSetUpMode">NbtExe or NbtWeb - depending on where you are using the Imp mgr</param>
        public CswNbtSchemaUpdateImportMgr(CswNbtSchemaModTrnsctn SchemaModTrnsctn, string DefinitionName, string CafDbLink = null, CswEnumSetupMode ImporterSetUpMode = CswEnumSetupMode.NbtExe)
        {
            _CAFDbLink            = CafDbLink ?? CswScheduleLogicNbtCAFImport.CAFDbLink;
            _NbtImporter          = new CswNbtImporter(SchemaModTrnsctn.Accessid, ImporterSetUpMode);
            this.SchemaModTrnsctn = SchemaModTrnsctn;

            _importDefTable           = SchemaModTrnsctn.makeCswTableUpdate("Import_getDefs", "import_def").getTable();
            _importOrderTable         = SchemaModTrnsctn.makeCswTableUpdate("Import_getOrder", "import_def_order").getTable();
            _importBindingsTable      = SchemaModTrnsctn.makeCswTableUpdate("Import_getBindings", "import_def_bindings").getTable();
            _importRelationshipsTable = SchemaModTrnsctn.makeCswTableUpdate("Import_getRelationships", "import_def_relationships").getTable();


            _DefinitionName = DefinitionName;
            _SourceColumns  = new CswCommaDelimitedString();

            _SheetDefinitions = SchemaModTrnsctn.createImportDefinitionEntries(DefinitionName, _importDefTable);
        }//ctor
        } // addOrderEntries()

        /// <summary>
        /// // first get importdefid from import_def
        // then get each row from import_order that has above importdefid
        // iterate rows, change order column value
        /// </summary>
        /// <param name="CswNbtResources"></param>
        public static void updateOrderEntries(CswNbtSchemaModTrnsctn CswNbtSchemaModTrnsctn)
        {
            Dictionary <string, Int32> CafImportOrder = CswNbtCAFImportOrder.CAFOrder;

            CswTableSelect TblSelect1     = CswNbtSchemaModTrnsctn.makeCswTableSelect("get_caf_importdefid", CswNbtImportTables.ImportDef.TableName);
            DataTable      ImportDefDt    = TblSelect1.getTable("where " + CswNbtImportTables.ImportDef.definitionname + " = 'CAF'");
            Int32          CAFImportDefId = Int32.MinValue;

            if (ImportDefDt.Rows.Count > 0)
            {
                CAFImportDefId = CswConvert.ToInt32(ImportDefDt.Rows[0][CswNbtImportTables.ImportDef.importdefid]);
            }
            CswTableUpdate TblUpdate1    = CswNbtSchemaModTrnsctn.makeCswTableUpdate("update_import_order_caf", CswNbtImportTables.ImportDefOrder.TableName);
            DataTable      ImportOrderDt = TblUpdate1.getTable("where " + CswNbtImportTables.ImportDefOrder.importdefid + " = " + CAFImportDefId);

            foreach (DataRow CurrentRow in ImportOrderDt.Rows)
            {
                string currentNt = CswConvert.ToString(CurrentRow[CswNbtImportTables.ImportDefOrder.nodetypename]);
                Int32  newOrder  = CafImportOrder[currentNt];
                CurrentRow[CswNbtImportTables.ImportDefOrder.importorder] = newOrder;
            }
            TblUpdate1.update(ImportOrderDt);
        }
示例#7
0
 public void MyTestInitialize()
 {
     _TestData         = new TestData();
     _SchemaModTrnsctn = new CswNbtSchemaModTrnsctn(_TestData.CswNbtResources);
 }
 /// <summary>
 /// Meta data collection with extra functionality for schema updater
 /// </summary>
 public CswNbtMetaDataForSchemaUpdater(CswNbtResources Resources, CswNbtMetaDataResources MetaDataResources, CswNbtSchemaModTrnsctn SchemaModTrnsctn)
     : base(Resources, MetaDataResources, false)    // Schema updater should always see all object classes, regardless of modules
 {
     _SchemaModTrnsctn = SchemaModTrnsctn;
 }
示例#9
0
 public CswDemoDataManager(CswNbtResources CswNbtResources)
 {
     _CswNbtResources        = CswNbtResources;
     _CswNbtSchemaModTrnsctn = new CswNbtSchemaModTrnsctn(_CswNbtResources);
 }
示例#10
0
        /// <summary>
        /// Stores data in temporary Oracle tables
        /// </summary>
        public static Int32 storeData(CswNbtResources CswNbtResources, string FileName, string FullFilePath, string ImportDefinitionName, bool Overwrite)
        {
            CswNbtSchemaModTrnsctn _CswNbtSchemaModTrnsctn = new CswNbtSchemaModTrnsctn(CswNbtResources);

            //StringCollection ret = new StringCollection();
            DataSet ExcelDataSet = ReadExcel(FullFilePath);

            // Store the job reference in import_data_job
            CswTableUpdate ImportDataJobUpdate = CswNbtResources.makeCswTableUpdate("Importer_DataJob_Insert", CswNbtImportTables.ImportDataJob.TableName);
            DataTable      ImportDataJobTable  = ImportDataJobUpdate.getEmptyTable();
            DataRow        DataJobRow          = ImportDataJobTable.NewRow();

            DataJobRow[CswNbtImportTables.ImportDataJob.filename]    = FileName;
            DataJobRow[CswNbtImportTables.ImportDataJob.userid]      = CswNbtResources.CurrentNbtUser.UserId.PrimaryKey;
            DataJobRow[CswNbtImportTables.ImportDataJob.datestarted] = CswConvert.ToDbVal(DateTime.Now);
            ImportDataJobTable.Rows.Add(DataJobRow);
            Int32 JobId = CswConvert.ToInt32(DataJobRow[CswNbtImportTables.ImportDataJob.importdatajobid]);

            ImportDataJobUpdate.update(ImportDataJobTable);

            foreach (DataTable ExcelDataTable in ExcelDataSet.Tables)
            {
                string          SheetName  = ExcelDataTable.TableName;
                CswNbtImportDef Definition = null;
                //try
                //{
                Definition = new CswNbtImportDef(CswNbtResources, ImportDefinitionName, SheetName);
                //}
                //catch( Exception ex )
                //{
                //    //OnMessage( "Sheet '" + SheetName + "' is invalid: " + ex.Message );
                //}

                // ignore bad sheetnames
                if (null != Definition)
                {
                    // Determine Oracle table name
                    Int32  i = 1;
                    string ImportDataTableName = CswNbtImportTables.ImportDataN.TableNamePrefix + i.ToString();
                    while (_CswNbtSchemaModTrnsctn.isTableDefinedInDataBase(ImportDataTableName))
                    {
                        i++;
                        ImportDataTableName = CswNbtImportTables.ImportDataN.TableNamePrefix + i.ToString();
                    }

                    // Generate an Oracle table for storing and manipulating data
                    _CswNbtSchemaModTrnsctn.addTable(ImportDataTableName, CswNbtImportTables.ImportDataN.PkColumnName);
                    _CswNbtSchemaModTrnsctn.addBooleanColumn(ImportDataTableName, CswNbtImportTables.ImportDataN.error, "", false);
                    _CswNbtSchemaModTrnsctn.addClobColumn(ImportDataTableName, CswNbtImportTables.ImportDataN.errorlog, "", false);
                    foreach (DataColumn ExcelColumn in ExcelDataTable.Columns)
                    {
                        _CswNbtSchemaModTrnsctn.addStringColumn(ImportDataTableName, CswNbtImportDefBinding.SafeColName(ExcelColumn.ColumnName), "", false, 4000);
                    }
                    foreach (CswNbtImportDefOrder Order in Definition.ImportOrder.Values)
                    {
                        _CswNbtSchemaModTrnsctn.addLongColumn(ImportDataTableName, Order.PkColName, "", false);
                    }
                    CswNbtResources.commitTransaction();
                    CswNbtResources.beginTransaction();
                    CswNbtResources.DataDictionary.refresh();

                    // Store the sheet reference in import_data_map
                    CswTableUpdate ImportDataMapUpdate = CswNbtResources.makeCswTableUpdate("Importer_DataMap_Insert", CswNbtImportTables.ImportDataMap.TableName);
                    DataTable      ImportDataMapTable  = ImportDataMapUpdate.getEmptyTable();
                    DataRow        DataMapRow          = ImportDataMapTable.NewRow();
                    DataMapRow[CswNbtImportTables.ImportDataMap.datatablename]   = ImportDataTableName;
                    DataMapRow[CswNbtImportTables.ImportDataMap.importdefid]     = Definition.ImportDefinitionId;
                    DataMapRow[CswNbtImportTables.ImportDataMap.importdatajobid] = JobId;
                    DataMapRow[CswNbtImportTables.ImportDataMap.overwrite]       = CswConvert.ToDbVal(Overwrite);
                    DataMapRow[CswNbtImportTables.ImportDataMap.completed]       = CswConvert.ToDbVal(false);
                    ImportDataMapTable.Rows.Add(DataMapRow);
                    ImportDataMapUpdate.update(ImportDataMapTable);

                    // Copy the Excel data into the Oracle table
                    CswTableUpdate ImportDataUpdate = CswNbtResources.makeCswTableUpdate("Importer_Update", ImportDataTableName);
                    DataTable      ImportDataTable  = ImportDataUpdate.getEmptyTable();
                    foreach (DataRow ExcelRow in ExcelDataTable.Rows)
                    {
                        bool    hasData   = false;
                        DataRow ImportRow = ImportDataTable.NewRow();
                        ImportRow[CswNbtImportTables.ImportDataN.error] = CswConvert.ToDbVal(false);
                        foreach (DataColumn ExcelColumn in ExcelDataTable.Columns)
                        {
                            if (ExcelRow[ExcelColumn] != DBNull.Value)
                            {
                                hasData = true;
                            }
                            ImportRow[CswNbtImportDefBinding.SafeColName(ExcelColumn.ColumnName)] = ExcelRow[ExcelColumn];
                        }
                        if (hasData == true)
                        {
                            ImportDataTable.Rows.Add(ImportRow);
                        }
                    }
                    ImportDataUpdate.update(ImportDataTable);
                    //OnMessage( "Sheet '" + SheetName + "' is stored in Table '" + ImportDataTableName + "'" );
                } // if( null != Definition )
            }     // foreach( DataTable ExcelDataTable in ExcelDataSet.Tables )

            CswNbtResources.commitTransaction();
            CswNbtResources.beginTransaction();

            //return ret;
            return(JobId);
        }
示例#11
0
 public static void makeLocationsTreeView(ref CswNbtView LocationsView, CswNbtSchemaModTrnsctn CswNbtSchemaModTrnsctn, Int32 loc_max_depth = Int32.MinValue, CswPrimaryKey NodeIdToFilterOut = null, bool RequireAllowInventory = false, IEnumerable <CswPrimaryKey> InventoryGroupIds = null, bool DisableLowestLevel = false, CswEnumNbtFilterResultMode ResultMode = null, string FullPathFilter = "")
 {
     _makeLocationsTreeView(ref LocationsView, CswNbtSchemaModTrnsctn.MetaData, CswNbtSchemaModTrnsctn.ConfigVbls, loc_max_depth, NodeIdToFilterOut, RequireAllowInventory, InventoryGroupIds, DisableLowestLevel, ResultMode ?? CswEnumNbtFilterResultMode.Disabled, FullPathFilter);
 }