MergeParticleDB.cs 9.9 KB

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