IncADataDB.cs 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SQLite;
  5. using System.Drawing;
  6. using System.Linq;
  7. using Microsoft.Office.Interop.Excel;
  8. using OTSCLRINTERFACE;
  9. using OTSDataType;
  10. using OTSMeasureApp._0_OTSModel.OTSDataType;
  11. using OTSModelSharp.DTLBase;
  12. using DataTable = System.Data.DataTable;
  13. using Rectangle = System.Drawing.Rectangle;
  14. namespace OTSModelSharp
  15. {
  16. public class CIncADataDB : CSQLiteDB
  17. {
  18. public CIncADataDB(IDBStoreBase _conStr, IDBTableBase _table) : base(_conStr, _table)
  19. {
  20. }
  21. public bool SaveAParticle(COTSParticleClr a_pParticle, CPosXrayClr a_pXray)
  22. {
  23. var tableInfoPtr = GetTableInfo();
  24. var datastorePtr = GetDatastore();
  25. //Rectangle prec = (Rectangle)a_pParticle.GetParticleRect();
  26. //System.Drawing.Point pos = (System.Drawing.Point)a_pParticle.GetSEMPos();
  27. System.Drawing.Rectangle rec = (System.Drawing.Rectangle)a_pParticle.GetParticleRect();
  28. System.Drawing.Point xrayPos = (System.Drawing.Point)a_pParticle.GetXRayPos();
  29. System.Drawing.Point semPos = (System.Drawing.Point)a_pParticle.GetSEMPos();
  30. System.Drawing.Point otsfieldPos= (System.Drawing.Point)a_pParticle.GetFieldOTSPos();
  31. //int l = 0;
  32. //int t = 0;
  33. //int r = 0;
  34. //int b = 0;
  35. //a_pParticle.GetOTSRect(ref l, ref t, ref r, ref b);
  36. //COTSRect cOTSRect = new COTSRect(l,t,r,b);
  37. //System.Drawing.PointF otsPos=cOTSRect.GetCenterPoint();
  38. String sInsertFormat = tableInfoPtr.GetInsertCommandFormatString(true);
  39. var cmd = tableInfoPtr.GetInsertCommand(true);
  40. var paras = cmd.Value;
  41. paras[0].Value = a_pParticle.GetFieldId();
  42. paras[1].Value = a_pParticle.GetAnalysisId();
  43. paras[2].Value = a_pParticle.GetAveGray();
  44. paras[3].Value = rec.Left;
  45. paras[4].Value = rec.Top;
  46. paras[5].Value = rec.Width;
  47. paras[6].Value = rec.Height;
  48. paras[7].Value = a_pParticle.GetActualArea();
  49. paras[8].Value = xrayPos.X;
  50. paras[9].Value = xrayPos.Y;
  51. paras[10].Value = a_pParticle.GetFeretDiameter();
  52. paras[11].Value = (int)(a_pParticle.GetFeature().GetSegmentsList().Count);
  53. paras[12].Value = otsfieldPos.X;
  54. paras[13].Value = otsfieldPos.Y;
  55. paras[14].Value = a_pParticle.GetParticleId();
  56. paras[15].Value = a_pParticle.GetDMAX();
  57. paras[16].Value = a_pParticle.GetDMIN();
  58. paras[17].Value = a_pParticle.GetDMPERP();
  59. paras[18].Value = a_pParticle.GetDPRIMETER();
  60. paras[19].Value = a_pParticle.GetORIENTATION();
  61. paras[20].Value = a_pParticle.GetDINSCR();
  62. paras[21].Value = a_pParticle.GetDMEAN();
  63. paras[22].Value = a_pParticle.GetDELONG();
  64. paras[23].Value = a_pParticle.GetTypeId();
  65. paras[24].Value = a_pParticle.GetTypeName();
  66. paras[25].Value = a_pParticle.GetTypeColor();
  67. paras[26].Value = semPos.X;
  68. paras[27].Value = semPos.Y;
  69. paras[28].Value = a_pParticle.GetGrpId();
  70. paras[29].Value = a_pParticle.GetGrpName();
  71. paras[30].Value = a_pParticle.GetGrpColor();
  72. paras[31].Value = a_pParticle.GetConnectedParticlesName();
  73. List<KeyValuePair<string, SQLiteParameter[]>> cmds = new List<KeyValuePair<string, SQLiteParameter[]>>();
  74. cmds.Add(cmd);
  75. datastorePtr.ExecuteNonQueryBatch(ref cmds);
  76. return true;
  77. }
  78. public bool UpdateIsSubParticleState(COTSParticleClr a_pParticle)
  79. {
  80. var tableInfoPtr = GetTableInfo();
  81. var datastorePtr = GetDatastore();
  82. String sSQLCommand = "Update IncAData SET SubParticles='IsSubParticle' WHERE FieldId = {0} AND ParticleId ={1};";
  83. sSQLCommand = String.Format(sSQLCommand,
  84. a_pParticle.GetFieldId(),
  85. a_pParticle.GetParticleId());
  86. //var helper = new SQLiteHelper(datastorePtr);
  87. if (datastorePtr.RunCommand(sSQLCommand) != true)
  88. {
  89. return false;
  90. }
  91. return true;
  92. }
  93. public bool ClearAllMergedParticles()
  94. {
  95. var tableInfoPtr = GetTableInfo();
  96. var datastorePtr = GetDatastore();
  97. String sSQLCommand = "DELETE FROM IncAData WHERE SubParticles LIKE '%:%';";
  98. if (datastorePtr.RunCommand(sSQLCommand) != true)
  99. {
  100. return false;
  101. }
  102. return true;
  103. }
  104. public KeyValuePair<string,SQLiteParameter[]> GetUpdataAIncACmd(COTSParticleClr a_pParticle)
  105. {
  106. string sSQLCommand = "Update IncAData set TypeId=@TypeId,TypeName= @TypeName,TypeColor=@TypeColor,GroupId=@GroupId,GroupName=@GroupName,GroupColor=@GroupColor where FieldID =@FieldId and ParticleId =@ParticleId "; //sSQLCommand.Format(sSQLCommand,a_pParticle->GetAveGray(),a_pParticle->GetArea(),a_pParticle->GetType(),a_pParticle->GetFieldId(),a_pParticle->GetTagId());
  107. var paras = new SQLiteParameter[8];
  108. paras[0] = new SQLiteParameter("TypeId");
  109. paras[0].Value = a_pParticle.GetTypeId();
  110. paras[1] = new SQLiteParameter("TypeName");
  111. paras[1].Value = a_pParticle.GetTypeName();
  112. paras[2] = new SQLiteParameter("TypeColor");
  113. paras[2].Value = a_pParticle.GetTypeColor();
  114. paras[3] = new SQLiteParameter("GroupId");
  115. paras[3].Value = a_pParticle.GetGrpId();
  116. paras[4] = new SQLiteParameter("GroupName");
  117. paras[4].Value = a_pParticle.GetGrpName();
  118. paras[5] = new SQLiteParameter("GroupColor");
  119. paras[5].Value = a_pParticle.GetGrpColor();
  120. paras[6] = new SQLiteParameter("FieldId");
  121. paras[6].Value = a_pParticle.GetFieldId();
  122. paras[7] = new SQLiteParameter("ParticleId");
  123. paras[7].Value = a_pParticle.GetParticleId();
  124. return new KeyValuePair<string, SQLiteParameter[]>(sSQLCommand,paras);
  125. }
  126. public KeyValuePair<string,SQLiteParameter[]> GegInsertingAnParticleCmd(COTSParticleClr a_pParticle)
  127. {
  128. var tableInfoPtr = GetTableInfo();
  129. var sInsertCmd = tableInfoPtr.GetInsertCommand(true);
  130. System.Drawing.Rectangle rec = (System.Drawing.Rectangle)a_pParticle.GetParticleRect();
  131. System.Drawing.Point xrayPos = (System.Drawing.Point)a_pParticle.GetXRayPos();
  132. System.Drawing.Point semPos = (System.Drawing.Point)a_pParticle.GetSEMPos();
  133. System.Drawing.Point fldOTSPos = (System.Drawing.Point)a_pParticle.GetFieldOTSPos();
  134. var paras = sInsertCmd.Value;
  135. paras[0].Value = a_pParticle.GetFieldId();
  136. paras[1].Value = a_pParticle.GetAnalysisId();
  137. paras[2].Value = a_pParticle.GetAveGray();
  138. paras[3].Value = rec.Left;
  139. paras[4].Value = rec.Top;
  140. paras[5].Value = rec.Width;
  141. paras[6].Value = rec.Height;
  142. paras[7].Value = a_pParticle.GetActualArea();
  143. paras[8].Value = xrayPos.X;
  144. paras[9].Value = xrayPos.Y;
  145. paras[10].Value = a_pParticle.GetFeretDiameter();
  146. paras[11].Value = (int)(a_pParticle.GetFeature().GetSegmentsList().Count);
  147. paras[12].Value = fldOTSPos.X;
  148. paras[13].Value = fldOTSPos.Y;
  149. paras[14].Value = a_pParticle.GetParticleId();
  150. paras[15].Value = a_pParticle.GetDMAX();
  151. paras[16].Value = a_pParticle.GetDMIN();
  152. paras[17].Value = a_pParticle.GetDMPERP();
  153. paras[18].Value = a_pParticle.GetDPRIMETER();
  154. paras[19].Value = a_pParticle.GetORIENTATION();
  155. paras[20].Value = a_pParticle.GetDINSCR();
  156. paras[21].Value = a_pParticle.GetDMEAN();
  157. paras[22].Value = a_pParticle.GetDELONG();
  158. paras[23].Value = a_pParticle.GetTypeId();
  159. paras[24].Value = a_pParticle.GetTypeName();
  160. paras[25].Value = a_pParticle.GetTypeColor();
  161. paras[26].Value = semPos.X;
  162. paras[27].Value = semPos.Y;
  163. paras[28].Value = a_pParticle.GetGrpId();
  164. paras[29].Value = a_pParticle.GetGrpName();
  165. paras[30].Value = a_pParticle.GetGrpColor();
  166. return new KeyValuePair<string, SQLiteParameter[]>(sInsertCmd.Key,paras);
  167. }
  168. public bool GetAllFieldsRecord(double pixelsize,ref List<COTSField> allFlds)
  169. {
  170. var allRecords = this.GetQueryOfAllRecord();
  171. Dictionary<int, COTSField> mapFld = new Dictionary<int, COTSField>(); //std.map<int, COTSFieldDataPtr> mapFld = new std.map<int, COTSFieldDataPtr>();
  172. for (int i = 0; i < allRecords.Rows.Count; i++)
  173. {
  174. int curFldId = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID]); //GetColIntValue((int)CIncADataTable.ColumnID.N_FIELD_ID);
  175. if (!mapFld.Keys.Contains(curFldId))
  176. {
  177. System.Drawing.Point fldPos = new System.Drawing.Point();
  178. fldPos.X = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FieldPosX]);
  179. fldPos.Y = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FieldPosY]);
  180. System.Drawing.Point fldSEMPos = new System.Drawing.Point();
  181. fldSEMPos.X = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_SEMPOS_X]);
  182. fldSEMPos.Y = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_SEMPOS_Y]);
  183. COTSField fld = new COTSField(new PointF(fldPos.X,fldPos.Y),pixelsize);
  184. fld.SetId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID]));
  185. fld.SetOTSPosition(fldPos);
  186. fld.SetSemPos(fldSEMPos);
  187. List<COTSParticleClr> ps = fld.GetListAnalysisParticles();
  188. COTSParticleClr p = new COTSParticleClr();
  189. p.SetFieldId(fld.GetId());
  190. p.SetFieldOTSPos(fldPos);
  191. p.SetSEMPos(fldSEMPos);
  192. p.SetParticleId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID]));
  193. int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]);
  194. int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]);
  195. int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]);
  196. int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]);
  197. Rectangle r = new Rectangle(left, top, left + width, top + height);
  198. p.SetParticleRect(r);
  199. p.SetConnectedParticlesName("");
  200. byte aveGray = Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]);
  201. p.SetAveGray(aveGray);
  202. p.SetActualArea(Convert.ToDouble(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA]));
  203. p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID]));
  204. p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX]));
  205. p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN]));
  206. p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP]));
  207. p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR]));
  208. p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN]));
  209. p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG]));
  210. p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER]));
  211. p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION]));
  212. p.SetFeretDiameter(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DFERET]));
  213. p.SetTypeId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID]));
  214. p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString());
  215. p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString());
  216. ps.Add(p);
  217. allFlds.Add(fld);
  218. mapFld[curFldId] = fld;
  219. fld.SetIsMeasureComplete(true);
  220. }
  221. else
  222. {
  223. COTSField fld = mapFld[curFldId];
  224. List<COTSParticleClr> ps = fld.GetListAnalysisParticles();
  225. System.Drawing.Point fldPos = new System.Drawing.Point();
  226. fldPos.X = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FieldPosX]);
  227. fldPos.Y = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FieldPosY]);
  228. System.Drawing.Point fldSEMPos = new System.Drawing.Point();
  229. fldSEMPos.X = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_SEMPOS_X]);
  230. fldSEMPos.Y = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_SEMPOS_Y]);
  231. COTSParticleClr p = new COTSParticleClr();
  232. p.SetFieldId(fld.GetId());
  233. p.SetFieldOTSPos(fld.GetOTSPosition());
  234. p.SetParticleId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID]));
  235. p.SetSEMPos(fldSEMPos);
  236. p.SetFieldOTSPos(fldPos);
  237. int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]);
  238. int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]);
  239. int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]);
  240. int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]);
  241. Rectangle r = new Rectangle(left, top, left + width, top + height);
  242. p.SetParticleRect(r);
  243. //p.SetSubParticles("");
  244. p.SetAveGray(Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]));
  245. p.SetActualArea(Convert.ToDouble(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA]));
  246. p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID]));
  247. p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX]));
  248. p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN]));
  249. p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP]));
  250. p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR]));
  251. p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN]));
  252. p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG]));
  253. p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER]));
  254. p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION]));
  255. p.SetFeretDiameter(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DFERET]));
  256. p.SetTypeId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID]));
  257. p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString());
  258. p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString());
  259. ps.Add(p);
  260. }
  261. }
  262. return true;
  263. }
  264. protected DataTable GetQueryOfAllRecord()
  265. {
  266. var datastorePtr = GetDatastore();
  267. var tableInfoPtr = GetTableInfo();
  268. string sSQLCommand= string.Format("SELECT * FROM \'{0}\';", (string)tableInfoPtr.GetTableName());
  269. DataTable t1 = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  270. return t1;
  271. }
  272. public void DeleteDataByFieldNo(int fieldStartNo)
  273. {
  274. string sSQLCommand;
  275. var datastorePtr = GetDatastore();
  276. sSQLCommand = "delete from IncAData where FieldId>=" + fieldStartNo.ToString();
  277. if (!datastorePtr.RunCommand(sSQLCommand))
  278. {
  279. return;
  280. }
  281. }
  282. }
  283. }