using OTSCLRINTERFACE; using OTSDataType; using OTSModelSharp.DTLBase; using System; using System.Collections.Generic; using System.Data.SQLite; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace OTSModelSharp { public class CIncAFileMgr { // file pathname String m_strPathName; CMergeParticleDB m_pMergePartDB; CSmallParticleInfoDB m_pSmallPartInfoDB; CSegmentDB m_SegmentDB; CFieldDB m_FieldDB; CGenInfoDB m_generalInfoDB; CIncADataDB m_IncADataDB; CSQLiteDBStore dbStore ; CPosXrayDBMgr PosXrayDBMgr; public CIncAFileMgr(String fileName) { m_strPathName = fileName; dbStore = new CSQLiteDBStore(fileName); } public CSQLiteDBStore GetDBStore() { return dbStore; } public CPosXrayDBMgr GetPosXrayDBMgr() { if (PosXrayDBMgr == null) PosXrayDBMgr = new CPosXrayDBMgr(dbStore); return PosXrayDBMgr; } // initialization public void InitFile() { CreateIncAFile(); } public void InitDataTable() { m_generalInfoDB = GetGeneralInfoDB(); m_generalInfoDB.Init(); m_pMergePartDB = GetMergedParticleDB(); m_pMergePartDB.Init();//judge if the table exist,if exist delete firstly,then creat,else creat. m_pSmallPartInfoDB = GetSmallParticleInfoDB(); m_pSmallPartInfoDB.Init(); m_IncADataDB = GetIncADB(); m_IncADataDB.Init(); m_SegmentDB = GetSegmentDB(); m_SegmentDB.Init(); m_FieldDB = GetFieldDB(); m_FieldDB.Init(); PosXrayDBMgr = new CPosXrayDBMgr(dbStore); PosXrayDBMgr.InitDataTable(); } public CSegmentDB GetSegmentDB() { if (m_SegmentDB==null) { m_SegmentDB = new CSegmentDB(dbStore,new CSegmentTable()); } return m_SegmentDB; } //Create private bool CreateIncAFile() { m_strPathName.Trim(); if (m_strPathName=="") { return false; } // get database name String sDatabaseName = m_strPathName; if (Exists(sDatabaseName)) { if (!Open(m_strPathName, false)) { return false; } } else { if (!Create(m_strPathName,false)) { return false; } } return true; } public bool Open(string a_sFileName, bool a_bForce /*= TRUE*/) { //var datastorePtr = GetDatastore(); return dbStore.Open(a_sFileName, a_bForce); } // check if the file exists or not public bool Exists(string a_sPathFileName) { return System.IO.File.Exists(a_sPathFileName); } public CSmallParticleInfoDB GetSmallParticleInfoDB() { if (m_pSmallPartInfoDB==null) { m_pSmallPartInfoDB = new CSmallParticleInfoDB(dbStore, new CSmallParticleInfoTable()); } return m_pSmallPartInfoDB; } //Get DB public CIncADataDB GetIncADB() { if (m_IncADataDB == null) { m_IncADataDB = new CIncADataDB(dbStore, new CIncADataTable()); } return m_IncADataDB; ; } public CFieldDB GetFieldDB() { if (m_FieldDB == null) { m_FieldDB = new CFieldDB(dbStore, new CFieldTable()); } return m_FieldDB; ; } public CMergeParticleDB GetMergedParticleDB() { if (m_pMergePartDB==null) { m_pMergePartDB = new CMergeParticleDB(dbStore, new CMergeParticleTable()); } return m_pMergePartDB; } public bool Create(string a_sFileName, bool a_bOverwrite /*= FALSE*/) { if (!dbStore.Create(a_sFileName, a_bOverwrite)) { return false; } return true; } public CGenInfoDB GetGeneralInfoDB() { if (m_generalInfoDB == null) { m_generalInfoDB=new CGenInfoDB(dbStore,new CGenInfoTable()); } return m_generalInfoDB; } public bool SaveStatusDataToDB() { m_generalInfoDB = GetGeneralInfoDB(); m_generalInfoDB.UpdateTimeStampRow(m_generalInfoDB.GetTableItemNameTimeEnd(), ""); //int sta = Convert.ToInt32(msrStatus.GetStatus()); //m_generalInfoDB.UpdateIntegerRow(m_generalInfoDB.GetTableItemNameResultStatus(), sta, ""); return true; } public void BeginTransaction() { dbStore.CloseSynchronous(); dbStore.BeginTransaction(); } public void CommitTransaction() { dbStore.CommitTransaction(); } public bool SaveIncADataToDB(List m_listParticle , System.Drawing.Point m_FieldPos) { if (m_listParticle.Count == 0) { return true; } //BeginTransaction(); ////List> cmdList; //foreach (var pParticle in m_listParticle) //{ // if (!m_IncADataDB.SaveAIncA(pParticle, m_FieldPos)) // { // return false; // } // //var cmd=new < KeyValuePair // //cmdList.Add() // if (!m_SegmentDB.SaveFeature(pParticle)) // { // return false; // } //} //CommitTransaction(); //return true; List> cmds = new List>(); foreach (var pParticle in m_listParticle) { var sql1 = m_IncADataDB.GegInsertingAnIncACmdStr(pParticle, m_FieldPos); var cmd = new KeyValuePair(sql1,null); cmds.Add(cmd); //if (!m_IncADataDB.SaveAIncA(pParticle, m_FieldPos)) //{ // return false; //} //var cmd=new < KeyValuePair //cmdList.Add() var featuresqls = m_SegmentDB.GetSavingFeatureCmdStr(pParticle); //if (!m_SegmentDB.SaveFeature(pParticle)) //{ // return false; //} foreach (var sql in featuresqls) { var cmd1 = new KeyValuePair(sql, null); cmds.Add(cmd1); } } dbStore.ExecuteNonQueryBatch(cmds); return true; } public List> GetSavingIncADataToDBCmds(List m_listParticle, System.Drawing.Point m_FieldPos) { List> cmds = new List>(); if (m_listParticle.Count == 0) { return cmds; } foreach (var pParticle in m_listParticle) { var sql1 = m_IncADataDB.GegInsertingAnIncACmdStr(pParticle, m_FieldPos); var cmd = new KeyValuePair(sql1, null); cmds.Add(cmd); var featuresqls = m_SegmentDB.GetSavingFeatureCmdStr(pParticle); foreach (var sql in featuresqls) { var cmd1 = new KeyValuePair(sql, null); cmds.Add(cmd1); } } return cmds; } internal void UpdateIncAList(List m_listParticle) { var IncADataDB = GetIncADB(); List> cmdlist = new List>(); foreach (var pParticle in m_listParticle) { var str= IncADataDB.GetUpdataAIncACmdStr(pParticle); cmdlist.Add(new KeyValuePair(str,null)); } ExecuteNonQueryBatch(cmdlist); return ; } public void ExecuteNonQueryBatch(List> cmds) { dbStore.ExecuteNonQueryBatch(cmds); } } }