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<COTSFieldData> allFlds)
  78. {
  79. var allRecords = this.GetQueryOfAllRecord();
  80. Dictionary<int,COTSFieldData> mapFld = new Dictionary<int,COTSFieldData>();
  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. COTSFieldData fld = new COTSFieldData();
  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. COTSFieldData 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. }