MergeParticleDB.cs 11 KB

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