using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.Drawing; using System.Linq; using OTSCLRINTERFACE; using OTSModelSharp.DTLBase; namespace OTSModelSharp { public class CIncADataDB : CSQLiteDB { public CIncADataDB(IDBStoreBase _conStr, IDBTableBase _table) : base(_conStr, _table) { } public KeyValuePair GetUpdataAIncACmd(COTSParticleClr a_pParticle) { 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()); var paras = new SQLiteParameter[8]; paras[0] = new SQLiteParameter("TypeId"); paras[0].Value = a_pParticle.GetClassifyId(); paras[1] = new SQLiteParameter("TypeName"); paras[1].Value = a_pParticle.GetTypeName(); paras[2] = new SQLiteParameter("TypeColor"); paras[2].Value = a_pParticle.GetTypeColor(); paras[3] = new SQLiteParameter("GroupId"); paras[3].Value = a_pParticle.GetGrpId(); paras[4] = new SQLiteParameter("GroupName"); paras[4].Value = a_pParticle.GetGrpName(); paras[5] = new SQLiteParameter("GroupColor"); paras[5].Value = a_pParticle.GetGrpColor(); paras[6] = new SQLiteParameter("FieldId"); paras[6].Value = a_pParticle.GetFieldId(); paras[7] = new SQLiteParameter("ParticleId"); paras[7].Value = a_pParticle.GetTagId(); return new KeyValuePair(sSQLCommand,paras); } public KeyValuePair GegInsertingAnIncACmd(COTSParticleClr a_pParticle, System.Drawing.Point fldPos) { var tableInfoPtr = GetTableInfo(); var sInsertCmd = tableInfoPtr.GetInsertCommand(true); Rectangle rec = (Rectangle)a_pParticle.GetParticleRect(); System.Drawing.Point xrayPos = (System.Drawing.Point)a_pParticle.GetXRayPos(); System.Drawing.Point semPos = (System.Drawing.Point)a_pParticle.GetAbsolutPos(); var paras = sInsertCmd.Value; paras[0].Value = a_pParticle.GetFieldId(); paras[1].Value = a_pParticle.GetAnalysisId(); paras[2].Value = a_pParticle.GetAveGray(); paras[3].Value = rec.Left; paras[4].Value = rec.Top; paras[5].Value = rec.Width; paras[6].Value = rec.Height; paras[7].Value = a_pParticle.GetActualArea(); paras[8].Value = xrayPos.X; paras[9].Value = xrayPos.Y; paras[10].Value = a_pParticle.GetFeretDiameter(); paras[11].Value = (int)(a_pParticle.GetFeature().GetSegmentsList().Count); paras[12].Value = fldPos.X; paras[13].Value = fldPos.Y; paras[14].Value = a_pParticle.GetTagId(); paras[15].Value = a_pParticle.GetDMAX(); paras[16].Value = a_pParticle.GetDMIN(); paras[17].Value = a_pParticle.GetDMPERP(); paras[18].Value = a_pParticle.GetDPRIMETER(); paras[19].Value = a_pParticle.GetORIENTATION(); paras[20].Value = a_pParticle.GetDINSCR(); paras[21].Value = a_pParticle.GetDMEAN(); paras[22].Value = a_pParticle.GetDELONG(); paras[23].Value = a_pParticle.GetClassifyId(); paras[24].Value = a_pParticle.GetTypeName(); paras[25].Value = a_pParticle.GetTypeColor(); paras[26].Value = semPos.X; paras[27].Value = semPos.Y; paras[28].Value = a_pParticle.GetGrpId(); paras[29].Value = a_pParticle.GetGrpName(); paras[30].Value = a_pParticle.GetGrpColor(); return new KeyValuePair(sInsertCmd.Key,paras); } public bool GetAllFieldsRecord(ref List allFlds) { var allRecords = this.GetQueryOfAllRecord(); Dictionary mapFld = new Dictionary(); //std.map mapFld = new std.map(); for (int i = 0; i < allRecords.Rows.Count; i++) { int curFldId = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID]); //GetColIntValue((int)CIncADataTable.ColumnID.N_FIELD_ID); if (!mapFld.Keys.Contains(curFldId)) { COTSFieldData fld = new COTSFieldData(); fld.SetId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FIELD_ID])); System.Drawing.Point fldPos =new System.Drawing.Point(); fldPos.X = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FldPosX]); fldPos.Y = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_FldPosY]); fld.SetOTSPosition(fldPos); List ps = fld.GetListAnalysisParticles(); COTSParticleClr p = new COTSParticleClr(); p.SetFieldId(fld.GetId()); p.SetTagId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID])); int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]); int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]); int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]); int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]); Rectangle r = new Rectangle(left, top, left + width, top + height); p.SetParticleRect(r); p.SetSubParticles(""); byte aveGray = Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]); p.SetAveGray(aveGray); p.SetArea(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA])); p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID])); p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX])); p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN])); p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP])); p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR])); p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN])); p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG])); p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER])); p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION])); p.SetFeretDiameter(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DFERET])); p.SetType(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID])); p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString()); p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString()); ps.Add(p); allFlds.Add(fld); mapFld[curFldId] = fld; } else { COTSFieldData fld = mapFld[curFldId]; List ps = fld.GetListAnalysisParticles(); COTSParticleClr p = new COTSParticleClr(); p.SetFieldId(fld.GetId()); p.SetTagId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_PARTICLE_ID])); int top = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_TOP]); int left = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_LEFT]); int width = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_WIDTH]); int height = Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_RECT_HEIGHT]); Rectangle r = new Rectangle(left, top, left + width, top + height); p.SetParticleRect(r); //p.SetSubParticles(""); p.SetAveGray(Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY])); p.SetArea(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA])); p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID])); p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX])); p.SetDMIN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMIN])); p.SetDMPERP(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DPERP])); p.SetDINSCR(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DINSCR])); p.SetDMEAN(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMEAN])); p.SetDELONG(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DELONG])); p.SetDPRIMETER(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_PERIMETER])); p.SetORIENTATION(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_ORIENTATION])); p.SetFeretDiameter(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DFERET])); p.SetType(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_TYPE_ID])); p.SetTypeName(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_NAME].ToString()); p.SetTypeColor(allRecords.Rows[i][(int)CIncADataTable.ColumnID.S_COLOR].ToString()); ps.Add(p); } } return true; } protected DataTable GetQueryOfAllRecord() { var datastorePtr = GetDatastore(); var tableInfoPtr = GetTableInfo(); string sSQLCommand= string.Format("SELECT * FROM \'{0}\';", (string)tableInfoPtr.GetTableName()); DataTable t1 = datastorePtr.QueryByCmdForDataTable(sSQLCommand); return t1; } } }