IncADataDB.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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 OTSCLRINTERFACE;
  8. using OTSDataType;
  9. using OTSModelSharp.DTLBase;
  10. namespace OTSModelSharp
  11. {
  12. public class CIncADataDB : CSQLiteDB
  13. {
  14. public CIncADataDB(IDBStoreBase _conStr, IDBTableBase _table) : base(_conStr, _table)
  15. {
  16. }
  17. public KeyValuePair<string,SQLiteParameter[]> GetUpdataAIncACmd(COTSParticleClr a_pParticle)
  18. {
  19. 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());
  20. var paras = new SQLiteParameter[8];
  21. paras[0] = new SQLiteParameter("TypeId");
  22. paras[0].Value = a_pParticle.GetClassifyId();
  23. paras[1] = new SQLiteParameter("TypeName");
  24. paras[1].Value = a_pParticle.GetTypeName();
  25. paras[2] = new SQLiteParameter("TypeColor");
  26. paras[2].Value = a_pParticle.GetTypeColor();
  27. paras[3] = new SQLiteParameter("GroupId");
  28. paras[3].Value = a_pParticle.GetGrpId();
  29. paras[4] = new SQLiteParameter("GroupName");
  30. paras[4].Value = a_pParticle.GetGrpName();
  31. paras[5] = new SQLiteParameter("GroupColor");
  32. paras[5].Value = a_pParticle.GetGrpColor();
  33. paras[6] = new SQLiteParameter("FieldId");
  34. paras[6].Value = a_pParticle.GetFieldId();
  35. paras[7] = new SQLiteParameter("ParticleId");
  36. paras[7].Value = a_pParticle.GetParticleId();
  37. return new KeyValuePair<string, SQLiteParameter[]>(sSQLCommand,paras);
  38. }
  39. public KeyValuePair<string,SQLiteParameter[]> GegInsertingAnParticleCmd(COTSParticleClr a_pParticle, System.Drawing.PointF fldPos)
  40. {
  41. var tableInfoPtr = GetTableInfo();
  42. var sInsertCmd = tableInfoPtr.GetInsertCommand(true);
  43. Rectangle rec = (Rectangle)a_pParticle.GetParticleRect();
  44. System.Drawing.Point xrayPos = (System.Drawing.Point)a_pParticle.GetXRayPos();
  45. System.Drawing.Point semPos = (System.Drawing.Point)a_pParticle.GetSEMPos();
  46. var paras = sInsertCmd.Value;
  47. paras[0].Value = a_pParticle.GetFieldId();
  48. paras[1].Value = a_pParticle.GetAnalysisId();
  49. paras[2].Value = a_pParticle.GetAveGray();
  50. paras[3].Value = rec.Left;
  51. paras[4].Value = rec.Top;
  52. paras[5].Value = rec.Width;
  53. paras[6].Value = rec.Height;
  54. paras[7].Value = a_pParticle.GetActualArea();
  55. paras[8].Value = xrayPos.X;
  56. paras[9].Value = xrayPos.Y;
  57. paras[10].Value = a_pParticle.GetFeretDiameter();
  58. paras[11].Value = (int)(a_pParticle.GetFeature().GetSegmentsList().Count);
  59. paras[12].Value = fldPos.X;
  60. paras[13].Value = fldPos.Y;
  61. paras[14].Value = a_pParticle.GetParticleId();
  62. paras[15].Value = a_pParticle.GetDMAX();
  63. paras[16].Value = a_pParticle.GetDMIN();
  64. paras[17].Value = a_pParticle.GetDMPERP();
  65. paras[18].Value = a_pParticle.GetDPRIMETER();
  66. paras[19].Value = a_pParticle.GetORIENTATION();
  67. paras[20].Value = a_pParticle.GetDINSCR();
  68. paras[21].Value = a_pParticle.GetDMEAN();
  69. paras[22].Value = a_pParticle.GetDELONG();
  70. paras[23].Value = a_pParticle.GetClassifyId();
  71. paras[24].Value = a_pParticle.GetTypeName();
  72. paras[25].Value = a_pParticle.GetTypeColor();
  73. paras[26].Value = semPos.X;
  74. paras[27].Value = semPos.Y;
  75. paras[28].Value = a_pParticle.GetGrpId();
  76. paras[29].Value = a_pParticle.GetGrpName();
  77. paras[30].Value = a_pParticle.GetGrpColor();
  78. return new KeyValuePair<string, SQLiteParameter[]>(sInsertCmd.Key,paras);
  79. }
  80. public bool GetAllFieldsRecord(double pixelsize,ref List<COTSField> allFlds)
  81. {
  82. var allRecords = this.GetQueryOfAllRecord();
  83. Dictionary<int, COTSField> mapFld = new Dictionary<int, COTSField>(); //std.map<int, COTSFieldDataPtr> mapFld = new std.map<int, COTSFieldDataPtr>();
  84. for (int i = 0; i < allRecords.Rows.Count; i++)
  85. {
  86. int curFldId = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID]); //GetColIntValue((int)CIncADataTable.ColumnID.N_FIELD_ID);
  87. if (!mapFld.Keys.Contains(curFldId))
  88. {
  89. System.Drawing.Point fldPos = new System.Drawing.Point();
  90. fldPos.X = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FldPosX]);
  91. fldPos.Y = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FldPosY]);
  92. COTSField fld = new COTSField(new PointF(fldPos.X,fldPos.Y),pixelsize);
  93. fld.SetId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID]));
  94. fld.SetOTSPosition(fldPos);
  95. List<COTSParticleClr> ps = fld.GetListAnalysisParticles();
  96. COTSParticleClr p = new COTSParticleClr();
  97. p.SetFieldId(fld.GetId());
  98. p.SetParticleId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID]));
  99. int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]);
  100. int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]);
  101. int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]);
  102. int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]);
  103. Rectangle r = new Rectangle(left, top, left + width, top + height);
  104. p.SetParticleRect(r);
  105. p.SetConnectedParticlesName("");
  106. byte aveGray = Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]);
  107. p.SetAveGray(aveGray);
  108. p.SetActualArea(Convert.ToDouble(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA]));
  109. p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID]));
  110. p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX]));
  111. p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN]));
  112. p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP]));
  113. p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR]));
  114. p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN]));
  115. p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG]));
  116. p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER]));
  117. p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION]));
  118. p.SetFeretDiameter(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DFERET]));
  119. p.SetType(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID]));
  120. p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString());
  121. p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString());
  122. ps.Add(p);
  123. allFlds.Add(fld);
  124. mapFld[curFldId] = fld;
  125. fld.SetIsMeasureComplete(true);
  126. }
  127. else
  128. {
  129. COTSField fld = mapFld[curFldId];
  130. List<COTSParticleClr> ps = fld.GetListAnalysisParticles();
  131. COTSParticleClr p = new COTSParticleClr();
  132. p.SetFieldId(fld.GetId());
  133. p.SetParticleId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID]));
  134. int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]);
  135. int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]);
  136. int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]);
  137. int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]);
  138. Rectangle r = new Rectangle(left, top, left + width, top + height);
  139. p.SetParticleRect(r);
  140. //p.SetSubParticles("");
  141. p.SetAveGray(Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]));
  142. p.SetActualArea(Convert.ToDouble(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA]));
  143. p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID]));
  144. p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX]));
  145. p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN]));
  146. p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP]));
  147. p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR]));
  148. p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN]));
  149. p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG]));
  150. p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER]));
  151. p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION]));
  152. p.SetFeretDiameter(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DFERET]));
  153. p.SetType(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID]));
  154. p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString());
  155. p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString());
  156. ps.Add(p);
  157. }
  158. }
  159. return true;
  160. }
  161. protected DataTable GetQueryOfAllRecord()
  162. {
  163. var datastorePtr = GetDatastore();
  164. var tableInfoPtr = GetTableInfo();
  165. string sSQLCommand= string.Format("SELECT * FROM \'{0}\';", (string)tableInfoPtr.GetTableName());
  166. DataTable t1 = datastorePtr.QueryByCmdForDataTable(sSQLCommand);
  167. return t1;
  168. }
  169. public void DeleteDataByFieldNo(int fieldStartNo)
  170. {
  171. string sSQLCommand;
  172. var datastorePtr = GetDatastore();
  173. sSQLCommand = "delete from IncAData where FieldId>=" + fieldStartNo.ToString();
  174. if (!datastorePtr.RunCommand(sSQLCommand))
  175. {
  176. return;
  177. }
  178. }
  179. }
  180. }