MergeParticleDB.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. using OTSCLRINTERFACE;
  2. using OTSDataType;
  3. using OTSModelSharp.DTLBase;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Data.SQLite;
  8. using System.Drawing;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows;
  13. namespace OTSModelSharp
  14. {
  15. public class CMergeParticleDB : CSQLiteDB
  16. {
  17. public CMergeParticleDB(IDBStoreBase _conStr, IDBTableBase _table) : base(_conStr, _table)
  18. {
  19. }
  20. public bool SaveAParticle( COTSParticleClr a_pParticle, CPosXrayClr a_pXray, System.Drawing.Point fldPos)
  21. {
  22. var tableInfoPtr = GetTableInfo();
  23. var datastorePtr = GetDatastore();
  24. Rectangle prec = (Rectangle)a_pParticle.GetParticleRect();
  25. System.Drawing.Point pos = (System.Drawing.Point)a_pParticle.GetAbsolutPos();
  26. String sInsertFormat = tableInfoPtr.GetInsertCommandFormatString(true);
  27. var cmd = tableInfoPtr.GetInsertCommand(true);
  28. var paras = cmd.Value;
  29. paras[0].Value = a_pParticle.GetFieldId();
  30. paras[1].Value = a_pParticle.GetAnalysisId();
  31. paras[2].Value = a_pParticle.GetAveGray();
  32. paras[3].Value = prec.Left;
  33. paras[4].Value = prec.Top;
  34. paras[5].Value = prec.Width;
  35. paras[6].Value = prec.Height;
  36. paras[7].Value = a_pParticle.GetActualArea();
  37. paras[8].Value = pos.X;
  38. paras[9].Value = pos.Y;
  39. paras[10].Value = a_pParticle.GetType();
  40. paras[11].Value = a_pXray.GetElementQuantifyData().Count;
  41. paras[12].Value = a_pParticle.GetFeature().GetSegmentsList().Count;
  42. paras[13].Value = fldPos.X;
  43. paras[14].Value = fldPos.Y;
  44. paras[15].Value = a_pParticle.GetTagId();
  45. paras[16].Value = a_pParticle.GetDMAX();
  46. paras[17].Value = a_pParticle.GetDMIN();
  47. paras[18].Value = a_pParticle.GetDMPERP();
  48. paras[19].Value = a_pParticle.GetDPRIMETER();
  49. paras[20].Value = a_pParticle.GetORIENTATION();
  50. paras[21].Value = a_pParticle.GetDINSCR();
  51. paras[22].Value = a_pParticle.GetDMEAN();
  52. paras[23].Value = a_pParticle.GetDELONG();
  53. paras[24].Value = a_pParticle.GetFeretDiameter();
  54. paras[25].Value = a_pParticle.GetTypeName();
  55. paras[26].Value = a_pParticle.GetTypeColor();
  56. paras[27].Value = a_pParticle.GetSubParticles();
  57. // String sSQLCommand = String.Format(sInsertFormat,
  58. // a_pParticle.GetFieldId(),
  59. //a_pParticle.GetAnalysisId(),
  60. //a_pParticle.GetAveGray(),
  61. // prec.Left,
  62. // prec.Top,
  63. // prec.Width,
  64. // prec.Height,
  65. //a_pParticle.GetActualArea(),
  66. // pos.X,
  67. // pos.Y,
  68. //a_pParticle.GetType(),
  69. //(int) a_pXray.GetElementQuantifyData().Count,
  70. //(int) (a_pParticle.GetFeature().GetSegmentsList().Count),
  71. //fldPos.X,
  72. //fldPos.Y,
  73. //a_pParticle.GetTagId(),
  74. //a_pParticle.GetDMAX(),
  75. //a_pParticle.GetDMIN(),
  76. //a_pParticle.GetDMPERP(),
  77. //a_pParticle.GetDPRIMETER(),
  78. //a_pParticle.GetORIENTATION(),
  79. //a_pParticle.GetDINSCR(),
  80. //a_pParticle.GetDMEAN(),
  81. //a_pParticle.GetDELONG(),
  82. //a_pParticle.GetFeretDiameter(),
  83. //a_pParticle.GetTypeName(),
  84. //a_pParticle.GetTypeColor(),
  85. //a_pParticle.GetSubParticles()
  86. //);
  87. //var helper = new SQLiteHelper(datastorePtr);
  88. List<KeyValuePair<string, SQLiteParameter[]>> cmds = new List<KeyValuePair<string, SQLiteParameter[]>>();
  89. cmds.Add(cmd);
  90. datastorePtr.ExecuteNonQueryBatch(ref cmds);
  91. return true;
  92. }
  93. public bool UpdataAParticle( COTSParticleClr a_pParticle)
  94. {
  95. var tableInfoPtr = GetTableInfo();
  96. var datastorePtr = GetDatastore();
  97. String sSQLCommand = "Update IncAData \'{0}\' WHERE {1} = {2} AND {3} ={4} AND {5} ={6} AND {7} = {8};";
  98. sSQLCommand= String.Format(sSQLCommand,
  99. a_pParticle.GetAveGray(),
  100. a_pParticle.GetActualArea(),
  101. a_pParticle.GetType(),
  102. a_pParticle.GetFieldId(),
  103. a_pParticle.GetTagId());
  104. //var helper = new SQLiteHelper(datastorePtr);
  105. if (datastorePtr.RunCommand(sSQLCommand) != true)
  106. {
  107. return false;
  108. }
  109. return true;
  110. }
  111. public bool GetAllFieldsRecord(ref List<COTSFieldData> allFlds)
  112. {
  113. var allRecords = this.GetQueryOfAllRecord();
  114. Dictionary<int,COTSFieldData> mapFld = new Dictionary<int,COTSFieldData>();
  115. for (int i = 0; i < allRecords.Rows.Count; i++)
  116. {
  117. int curFldId = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_FIELD_ID][0];
  118. if (!mapFld.Keys.Contains(curFldId))
  119. {
  120. COTSFieldData fld = new COTSFieldData();
  121. fld.SetId((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_FIELD_ID][0]);
  122. System.Drawing.Point fldPos = new System.Drawing.Point();
  123. fldPos.X = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_FldPosX][0];
  124. fldPos.Y = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_FldPosY][0];
  125. fld.SetOTSPosition(fldPos);
  126. List< COTSParticleClr> ps = fld.GetListAnalysisParticles();
  127. COTSParticleClr p = new COTSParticleClr();
  128. p.SetTagId((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_PARTICLE_ID][0]);
  129. p.SetClassifyId((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_INCA_ID][0]);
  130. int top = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_TOP][0];
  131. int left = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_LEFT][0];
  132. int width = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_WIDTH][0];
  133. int height = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_HEIGHT][0];
  134. Rectangle r = new Rectangle(left, top, width, height);
  135. p.SetParticleRect(r);
  136. p.SetAveGray(Convert.ToByte(allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_AVE_GRAY][0]));
  137. p.SetArea((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_AREA][0]);
  138. p.SetAnalysisId((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_XRAY_ID][0]);
  139. //p.SetDMax((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DMAX][0]);
  140. //p.SetDMin((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DMIN][0]);
  141. //p.SetDPerp((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DPERP][0]);
  142. //p.SetDInscr((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DINSCR][0]);
  143. //p.SetDMean((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DMEAN][0]);
  144. //p.SetDElong((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DELONG][0]);
  145. //p.SetPerimeter((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_PERIMETER][0]);
  146. //p.SetOrientation((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_ORIENTATION][0]);
  147. //p.TypeName(allRecords.Rows[(int)CMergeParticleTable.ColumnID.S_NAME][0].ToString());
  148. //p.TypeColor(allRecords.Rows[(int)CMergeParticleTable.ColumnID.S_COLOR][0].ToString());
  149. ps.Add(p);
  150. allFlds.Add(fld);
  151. mapFld[curFldId] = fld;
  152. }
  153. else
  154. {
  155. COTSFieldData fld = mapFld[curFldId];
  156. List< COTSParticleClr> ps = fld.GetListAnalysisParticles();
  157. COTSParticleClr p = new COTSParticleClr();
  158. p.SetFieldId(fld.GetId());
  159. p.SetTagId((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_PARTICLE_ID][0]);
  160. p.SetClassifyId((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_INCA_ID][0]);
  161. int top = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_TOP][0];
  162. int left = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_LEFT][0];
  163. int width = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_WIDTH][0];
  164. int height = (int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_RECT_HEIGHT][0];
  165. Rectangle r = new Rectangle(left, top, width, height);
  166. p.SetParticleRect(r);
  167. p.SetAveGray(Convert.ToByte(allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_AVE_GRAY][0]));
  168. p.SetArea((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_AREA][0]);
  169. p.SetAnalysisId((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.N_XRAY_ID][0]);
  170. //p.SetDMax((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DMAX][0]);
  171. //p.SetDMin((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DMIN][0]);
  172. //p.SetDPerp((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DPERP][0]);
  173. //p.SetDInscr((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DINSCR][0]);
  174. //p.SetDMean((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DMEAN][0]);
  175. //p.SetDElong((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_DELONG][0]);
  176. //p.SetPerimeter((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_PERIMETER][0]);
  177. //p.SetOrientation((int)allRecords.Rows[(int)CMergeParticleTable.ColumnID.F_ORIENTATION][0]);
  178. //p.TypeName(allRecords.Rows[(int)CMergeParticleTable.ColumnID.S_NAME][0].ToString());
  179. //p.TypeColor(allRecords.Rows[(int)CMergeParticleTable.ColumnID.S_COLOR][0].ToString());
  180. ps.Add(p);
  181. }
  182. allRecords.NewRow();
  183. };
  184. allRecords.Clear();
  185. return true;
  186. }
  187. public DataTable GetQueryOfAllRecord()
  188. {
  189. DataTable query;
  190. var datastorePtr = GetDatastore();
  191. var tableInfoPtr = GetTableInfo();
  192. String sSQLCommand = "";
  193. String.Format("SELECT * FROM \'{0}\' WHERE {1} = {2} AND {3} ={4} AND {5} ={6} AND {7} = {8};",
  194. (String)tableInfoPtr.GetTableName());
  195. //var helper = datastorePtr;
  196. query = datastorePtr.QueryByCmdForDataTable(sSQLCommand); ;
  197. return query;
  198. }
  199. public DataTable GetQueryById( long a_nXrayId, long a_nFieldId)
  200. {
  201. DataTable query;
  202. var datastorePtr = GetDatastore();
  203. var tableInfoPtr = GetTableInfo();
  204. var sXrayIdColumnName = tableInfoPtr.GetColumnName((int)CMergeParticleTable.ColumnID.N_XRAY_ID - (int)CMergeParticleTable.ColumnID.MIN);
  205. var sFieldIdColumnName = tableInfoPtr.GetColumnName((int)CMergeParticleTable.ColumnID.N_FIELD_ID - (int)CMergeParticleTable.ColumnID.MIN);
  206. String sSQLCommand = "";
  207. String.Format("SELECT * FROM \'{0}\' WHERE {1} = {2} AND {3} ={4} AND {5} ={6} AND {7} = {8};",
  208. (String) tableInfoPtr.GetTableName(),
  209. sFieldIdColumnName,
  210. a_nFieldId,
  211. sXrayIdColumnName,
  212. a_nXrayId);
  213. //var helper = new SQLiteHelper(datastorePtr);
  214. query = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  215. return query;
  216. }
  217. }
  218. }