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(), ""); 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; } List> cmds = new List>(); foreach (var pParticle in m_listParticle) { var cmd = m_IncADataDB.GegInsertingAnIncACmd(pParticle, m_FieldPos); cmds.Add(cmd); var featurecmd = m_SegmentDB.GetSavingFeatureCmd(pParticle); cmds.AddRange(featurecmd); } dbStore.ExecuteNonQueryBatch(ref 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 cmd = m_IncADataDB.GegInsertingAnIncACmd(pParticle, m_FieldPos); cmds.Add(cmd); var featurecmds = m_SegmentDB.GetSavingFeatureCmd(pParticle); cmds.AddRange(featurecmds); } return cmds; } internal void UpdateIncAList(List m_listParticle) { var IncADataDB = GetIncADB(); List> cmdlist = new List>(); foreach (var pParticle in m_listParticle) { var str= IncADataDB.GetUpdataAIncACmd(pParticle); cmdlist.Add(str); } try { dbStore.ExecuteNonQueryBatch(ref cmdlist); } catch (Exception e) { NLog.LogManager.GetCurrentClassLogger().Error(e.Message); } return ; } public void ExecuteNonQueryBatch(ref List> cmds) { dbStore.ExecuteNonQueryBatch(ref cmds); } } }