/// <summary> /// /// </summary> /// <param name="bmDataFile"></param> /// <param name="selectedFormatBMFile"></param> /// <param name="importMap"></param> /// <param name="xOrigin"></param> /// <param name="yOrigin"></param> /// <param name="zOrigin"></param> /// <param name="worker"></param> /// <param name="approxNumLines"></param> /// <param name="NKDProjectID"></param> /// <param name="units"></param> /// <param name="connString"></param> /// <returns></returns> public string PerformBMImport(string bmDataFile, string selectedFormatBMFile, ImportDataMap importMap, double xOrigin, double yOrigin, double zOrigin, System.ComponentModel.BackgroundWorker worker, int approxNumLines, string NKDProjectID, string units, string connString) { this.currentWorker = worker; UpdateStatus("Connecting to NKD", 10.0); using (var entityObj = new NKDC(connString, null)) { // talk to the import lib to do the import var query = from BlockModel in entityObj.BlockModels select new { BlockModel.BlockModelID, BlockModel.OriginX, BlockModel.OriginY, BlockModel.OriginZ, BlockModel.ProjectID }; List <string> cn = new List <string>(); //For each field in the database (or property in Linq object) BlockModel ob = new BlockModel(); foreach (PropertyInfo pi in ob.GetType().GetProperties()) { Type ty = pi.GetType(); String name = pi.Name; cn.Add(name); } DateTime startTime = DateTime.Now; int batchSize = 100; UpdateStatus("Creating new NKD block model", 20.0); ImportUtils.BlockImport dbIm = new ImportUtils.BlockImport(); Guid blockModelGUID = Guid.NewGuid(); BlockModel xAdd = new BlockModel(); xAdd.OriginX = (Decimal)xOrigin; // TO-DO xAdd.OriginY = (Decimal)yOrigin; // TO-DO xAdd.OriginZ = (Decimal)zOrigin; // TO-DO xAdd.BlockModelID = blockModelGUID; xAdd.ProjectID = new Guid(NKDProjectID); // TODO - allow user to pick size entityObj.BlockModels.AddObject(xAdd); entityObj.SaveChanges(); UpdateStatus("Setting model meta data", 25.0); // add the meta data to identify all of the oclumns etc. List <BlockModelMetadata> blockColumnMetaData = dbIm.SetBlockModelMetaData(blockModelGUID, importMap, connString); // add the new BM guid to the column map as a default so that it is always entered importMap.columnMap.Add(new ColumnMap("", -1, "BlockModelBlock", "BlockModelID", ImportDataMap.TEXTDATATYPE, blockModelGUID.ToString(), null, units)); // add the individual blocks dbIm.AddBlockData(bmDataFile, importMap, blockModelGUID, batchSize, UpdateStatus, approxNumLines, connString); //dbIm.AddBlockDataNorm(bmDataFile, importMap, blockModelGUID, batchSize, UpdateStatus, approxNumLines, blockColumnMetaData); DateTime endTime = DateTime.Now; long compVal = (endTime.Ticks - startTime.Ticks) / 1000; string message = "" + startTime.ToShortTimeString() + " Ended: " + endTime.ToShortTimeString(); long xval = compVal; return(""); } }
public ModelImportStatus PerformBMAppend(System.IO.Stream bmStream, Guid bmGuid, string alias, string columnNameToImport, int columnIndexToImport, string connString, char delimiter) { // TODO: read stream and write updates to database // get the next column to write to - search meta data to get the list of occupied columns using (var entityObj = new NKDC(connString, null)) { List <BlockModelMetadata> d = new List <BlockModelMetadata>(); var o = entityObj.BlockModelMetadatas.Where(f => f.BlockModelID == bmGuid && f.IsColumnData == true).Select(f => (string)f.BlockModelMetadataText).ToArray(); // yuk, ugly hack to get the next column to update into. In the long run, use normalised data as it will be much easier int lastIndex = 0; foreach (string s in o) { if (s.StartsWith("Numeric")) { string endBit = s.Substring(7); int ival = -1; bool parsed = int.TryParse(endBit, out ival); if (parsed) { lastIndex = Math.Max(ival, lastIndex); } } } string colToInsertTo = "Numeric" + (lastIndex + 1); //TODO: add this new meta data item into the database //TODO: update the data within the database itself ImportUtils.BlockImport dbIm = new ImportUtils.BlockImport(); ImportDataMap idm = new ImportDataMap(); idm.columnMap = new List <ColumnMap>(); idm.inputDelimiter = delimiter; idm.columnMap.Add(new ColumnMap(columnNameToImport, columnIndexToImport, "BlockModelBlock", colToInsertTo, ImportDataMap.NUMERICDATATYPE, null, null, null)); dbIm.SetBlockModelMetaData(bmGuid, idm, connString); return(dbIm.UpdateBlockData(bmStream, bmGuid, colToInsertTo, connString, delimiter)); } }
/// <summary> /// /// </summary> /// <param name="bmDataFile"></param> /// <param name="selectedFormatBMFile"></param> /// <param name="importMap"></param> /// <param name="xOrigin"></param> /// <param name="yOrigin"></param> /// <param name="zOrigin"></param> /// <param name="worker"></param> /// <param name="approxNumLines"></param> /// <param name="NKDProjectID"></param> /// <param name="units"></param> /// <param name="connString"></param> /// <returns></returns> public string PerformBMImport(string bmDataFile, string selectedFormatBMFile, ImportDataMap importMap, double xOrigin, double yOrigin, double zOrigin, System.ComponentModel.BackgroundWorker worker, int approxNumLines, string NKDProjectID, string units, string connString) { this.currentWorker = worker; UpdateStatus("Connecting to NKD", 10.0); using (var entityObj = new NKDC(connString, null)) { // talk to the import lib to do the import var query = from BlockModel in entityObj.BlockModels select new { BlockModel.BlockModelID, BlockModel.OriginX, BlockModel.OriginY, BlockModel.OriginZ, BlockModel.ProjectID }; List<string> cn = new List<string>(); //For each field in the database (or property in Linq object) BlockModel ob = new BlockModel(); foreach (PropertyInfo pi in ob.GetType().GetProperties()) { Type ty = pi.GetType(); String name = pi.Name; cn.Add(name); } DateTime startTime = DateTime.Now; int batchSize = 100; UpdateStatus("Creating new NKD block model", 20.0); ImportUtils.BlockImport dbIm = new ImportUtils.BlockImport(); Guid blockModelGUID = Guid.NewGuid(); BlockModel xAdd = new BlockModel(); xAdd.OriginX = (Decimal)xOrigin; // TO-DO xAdd.OriginY = (Decimal)yOrigin; // TO-DO xAdd.OriginZ = (Decimal)zOrigin; // TO-DO xAdd.BlockModelID = blockModelGUID; xAdd.ProjectID = new Guid(NKDProjectID); // TODO - allow user to pick size entityObj.BlockModels.AddObject(xAdd); entityObj.SaveChanges(); UpdateStatus("Setting model meta data", 25.0); // add the meta data to identify all of the oclumns etc. List<BlockModelMetadata> blockColumnMetaData = dbIm.SetBlockModelMetaData(blockModelGUID, importMap, connString); // add the new BM guid to the column map as a default so that it is always entered importMap.columnMap.Add(new ColumnMap("", -1, "BlockModelBlock", "BlockModelID", ImportDataMap.TEXTDATATYPE, blockModelGUID.ToString(), null, units)); // add the individual blocks dbIm.AddBlockData(bmDataFile, importMap, blockModelGUID, batchSize, UpdateStatus, approxNumLines, connString); //dbIm.AddBlockDataNorm(bmDataFile, importMap, blockModelGUID, batchSize, UpdateStatus, approxNumLines, blockColumnMetaData); DateTime endTime = DateTime.Now; long compVal = (endTime.Ticks - startTime.Ticks) / 1000; string message = "" + startTime.ToShortTimeString() + " Ended: " + endTime.ToShortTimeString(); long xval = compVal; return ""; } }
public ModelImportStatus PerformBMAppend(System.IO.Stream bmStream, Guid bmGuid, string alias, string columnNameToImport, int columnIndexToImport, string connString, char delimiter) { // TODO: read stream and write updates to database // get the next column to write to - search meta data to get the list of occupied columns using (var entityObj = new NKDC(connString, null)) { List<BlockModelMetadata> d = new List<BlockModelMetadata>(); var o = entityObj.BlockModelMetadatas.Where(f => f.BlockModelID == bmGuid && f.IsColumnData == true).Select(f => (string)f.BlockModelMetadataText).ToArray(); // yuk, ugly hack to get the next column to update into. In the long run, use normalised data as it will be much easier int lastIndex = 0; foreach (string s in o) { if (s.StartsWith("Numeric")) { string endBit = s.Substring(7); int ival = -1; bool parsed = int.TryParse(endBit, out ival); if (parsed) { lastIndex = Math.Max(ival, lastIndex); } } } string colToInsertTo = "Numeric" + (lastIndex + 1); //TODO: add this new meta data item into the database //TODO: update the data within the database itself ImportUtils.BlockImport dbIm = new ImportUtils.BlockImport(); ImportDataMap idm = new ImportDataMap(); idm.columnMap = new List<ColumnMap>(); idm.inputDelimiter = delimiter; idm.columnMap.Add(new ColumnMap(columnNameToImport, columnIndexToImport, "BlockModelBlock", colToInsertTo, ImportDataMap.NUMERICDATATYPE, null, null, null)); dbIm.SetBlockModelMetaData(bmGuid, idm, connString); return dbIm.UpdateBlockData(bmStream, bmGuid, colToInsertTo, connString, delimiter); } }
public List<string> PerformBMImport(ModelImportStatus mos, Guid blockModelGUID, System.IO.Stream bmFileStream, System.IO.Stream ffFileStream, ImportDataMap importMap, double xOrigin, double yOrigin, double zOrigin, System.ComponentModel.BackgroundWorker worker, int approxNumLines, string NKDProjectID, string alias, Guid authorGuid, string connString) { this.currentWorker = worker; using (var entityObj = new NKDC(connString, null)) { // talk to the import lib to do the import DateTime startTime = DateTime.Now; int batchSize = 1000; //UpdateStatus("Creating new NKD block model", 20.0); ImportUtils.BlockImport dbIm = null; try { dbIm = new ImportUtils.BlockImport(); //ImportDataMap importMapLoaded = FormatSpecificationIO.ImportMapIO.LoadImportMap(ffFileStream); BlockModel xAdd = new BlockModel(); xAdd.OriginX = (Decimal)xOrigin; // TO-DO xAdd.OriginY = (Decimal)yOrigin; // TO-DO xAdd.OriginZ = (Decimal)zOrigin; // TO-DO xAdd.Alias = alias; // when on server, automatically pick up the author GUID and apply it to the model. if (currentWorker == null) { xAdd.AuthorContactID = authorGuid; xAdd.ResponsibleContactID = authorGuid; } xAdd.VersionUpdated = DateTime.UtcNow; xAdd.BlockModelID = blockModelGUID; xAdd.ProjectID = new Guid(NKDProjectID); // TODO - allow user to pick size entityObj.BlockModels.AddObject(xAdd); entityObj.SaveChanges(); UpdateStatus("Setting model meta data", 25.0); // add the meta data to identify all of the oclumns etc. } catch (Exception ex) { mos.AddErrorMessage("Error setting block model defintion data. " + ex.ToString()); } List<string> domains = new List<string>(); if (dbIm != null) { try { List<BlockModelMetadata> blockColumnMetaData = dbIm.SetBlockModelMetaData(blockModelGUID, importMap, connString); } catch (Exception ex) { mos.AddErrorMessage("Error setting block model meta data:\n" + ex.ToString()); } try { // add the new BM guid to the column map as a default so that it is always entered importMap.columnMap.Add(new ColumnMap("", -1, "BlockModelBlock", "BlockModelID", ImportDataMap.TEXTDATATYPE, blockModelGUID.ToString(), blockModelGUID.ToString(), ImportDataMap.UNIT_NONE)); // add the individual blocks domains = dbIm.AddBlockData(mos, bmFileStream, importMap, blockModelGUID, batchSize, UpdateStatus, approxNumLines, connString); // run this only if in wonows client (determined by the status of the worker thread at this stage) if (currentWorker != null) { List<Tuple<string, string>> doms = new List<Tuple<string, string>>(); string domainColumnName = "Domain"; foreach (string ss in domains) { doms.Add(new Tuple<string, string>(domainColumnName, ss)); } dbIm.UpdateDomains(doms, blockModelGUID); } } catch (Exception ex) { mos.AddErrorMessage("Error adding block data:\n" + ex.ToString()); } } return domains; } }
public List <string> PerformBMImport(ModelImportStatus mos, Guid blockModelGUID, System.IO.Stream bmFileStream, System.IO.Stream ffFileStream, ImportDataMap importMap, double xOrigin, double yOrigin, double zOrigin, System.ComponentModel.BackgroundWorker worker, int approxNumLines, string NKDProjectID, string alias, Guid authorGuid, string connString) { this.currentWorker = worker; using (var entityObj = new NKDC(connString, null)) { // talk to the import lib to do the import DateTime startTime = DateTime.Now; int batchSize = 1000; //UpdateStatus("Creating new NKD block model", 20.0); ImportUtils.BlockImport dbIm = null; try { dbIm = new ImportUtils.BlockImport(); //ImportDataMap importMapLoaded = FormatSpecificationIO.ImportMapIO.LoadImportMap(ffFileStream); BlockModel xAdd = new BlockModel(); xAdd.OriginX = (Decimal)xOrigin; // TO-DO xAdd.OriginY = (Decimal)yOrigin; // TO-DO xAdd.OriginZ = (Decimal)zOrigin; // TO-DO xAdd.Alias = alias; // when on server, automatically pick up the author GUID and apply it to the model. if (currentWorker == null) { xAdd.AuthorContactID = authorGuid; xAdd.ResponsibleContactID = authorGuid; } xAdd.VersionUpdated = DateTime.UtcNow; xAdd.BlockModelID = blockModelGUID; xAdd.ProjectID = new Guid(NKDProjectID); // TODO - allow user to pick size entityObj.BlockModels.AddObject(xAdd); entityObj.SaveChanges(); UpdateStatus("Setting model meta data", 25.0); // add the meta data to identify all of the oclumns etc. } catch (Exception ex) { mos.AddErrorMessage("Error setting block model defintion data. " + ex.ToString()); } List <string> domains = new List <string>(); if (dbIm != null) { try { List <BlockModelMetadata> blockColumnMetaData = dbIm.SetBlockModelMetaData(blockModelGUID, importMap, connString); } catch (Exception ex) { mos.AddErrorMessage("Error setting block model meta data:\n" + ex.ToString()); } try { // add the new BM guid to the column map as a default so that it is always entered importMap.columnMap.Add(new ColumnMap("", -1, "BlockModelBlock", "BlockModelID", ImportDataMap.TEXTDATATYPE, blockModelGUID.ToString(), blockModelGUID.ToString(), ImportDataMap.UNIT_NONE)); // add the individual blocks domains = dbIm.AddBlockData(mos, bmFileStream, importMap, blockModelGUID, batchSize, UpdateStatus, approxNumLines, connString); // run this only if in wonows client (determined by the status of the worker thread at this stage) if (currentWorker != null) { List <Tuple <string, string> > doms = new List <Tuple <string, string> >(); string domainColumnName = "Domain"; foreach (string ss in domains) { doms.Add(new Tuple <string, string>(domainColumnName, ss)); } dbIm.UpdateDomains(doms, blockModelGUID); } } catch (Exception ex) { mos.AddErrorMessage("Error adding block data:\n" + ex.ToString()); } } return(domains); } }