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>(); }
//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()
} // _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); }
/// <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); }
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; }
public CswDemoDataManager(CswNbtResources CswNbtResources) { _CswNbtResources = CswNbtResources; _CswNbtSchemaModTrnsctn = new CswNbtSchemaModTrnsctn(_CswNbtResources); }
/// <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); }
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); }