/DasCoreLib/DasCoreLib/DataManager.cs

https://bitbucket.org/kumarvvr/data-acquisition-systems · C# · 220 lines · 168 code · 52 blank · 0 comment · 12 complexity · 0f5a139ea536f019e98a116f5d88c5d4 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using BHEL.PUMPSDAS.Datatypes;
  5. using System.Data.Odbc;
  6. using DasCoreUtilities;
  7. namespace DasCoreLib
  8. {
  9. public class DataManager
  10. {
  11. DatabaseManager _database;
  12. #region Queries
  13. string qry_insertNewTestMeasurements = "insert into testmeasurements "+
  14. "(fk_machinecode,fk_projectcode,fk_machinenumber, fk_testreference, paramname, paramvalue, displayindex, date, time, pointnum, noise1, noise2 ) "+
  15. "values({0},{1},'{2}','{3}','{4}',{5},{6},'{7}','{8}',{9},'{10}','{11}')";
  16. string qry_insertNewTestMeasurements_act = "insert into testmeasurements_act " +
  17. "(fk_machinecode,fk_projectcode,fk_machinenumber, fk_testreference, paramname, paramvalue, displayindex, date, time, pointnum, noise1, noise2 ) " +
  18. "values({0},{1},'{2}','{3}','{4}',{5},{6},'{7}','{8}',{9},'{10}','{11}')";
  19. string qry_insertNewTestResults = "insert into testresults " +
  20. "(fk_machinecode,fk_projectcode,fk_machinenumber, fk_testreference, paramname, paramvalue, displayindex, date, time, pointnum ) " +
  21. "values({0},{1},'{2}','{3}','{4}',{5},{6},'{7}','{8}',{9})";
  22. string qry_insertNewTestResults_act = "insert into testresults_act " +
  23. "(fk_machinecode,fk_projectcode,fk_machinenumber, fk_testreference, paramname, paramvalue, displayindex, date, time, pointnum ) " +
  24. "values({0},{1},'{2}','{3}','{4}',{5},{6},'{7}','{8}',{9})";
  25. string qry_maxRecPoint = "select max(pointnum) as pointnum from testmeasurements where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}'";
  26. string qry_getMeasurementDataPoint = "select paramname, paramvalue, displayindex, to_char(date,'yyyy-mm-dd') as date, time, noise1, noise2 from testmeasurements " +
  27. "where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}' and pointnum={4} order by displayindex";
  28. string qry_getActMeasurementDataPoint = "select paramname, paramvalue, displayindex, to_char(date,'yyyy-mm-dd') as date, time, noise1, noise2 from testmeasurements_act " +
  29. "where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}' and pointnum={4} order by displayindex";
  30. string qry_getResultDataPoint = "select paramname, paramvalue, displayindex, to_char(date,'yyyy-mm-dd') as date, time from testresults " +
  31. "where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}' and pointnum={4} order by displayindex";
  32. string qry_getActResultDataPoint = "select paramname, paramvalue, displayindex, to_char(date,'yyyy-mm-dd') as date, time from testresults_act " +
  33. "where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}' and pointnum={4} order by displayindex";
  34. string qry_deleteTestMeasurementData = "delete from testmeasurements where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}'";
  35. string qry_deleteActTestMeasurementData = "delete from testmeasurements_act where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}'";
  36. string qry_deleteTestResultData = "delete from testresults where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}'";
  37. string qry_deleteActTestResultData = "delete from testresults_act where fk_machinecode={0} and fk_projectcode={1} and fk_machinenumber='{2}' and fk_testreference='{3}'";
  38. #endregion
  39. public DataManager(DatabaseManager _database)
  40. {
  41. this._database = _database;
  42. }
  43. public void RecordData(int mc, int projc, string mnum, string tref,
  44. List<ObjectData> testmeasurement, List<ObjectData> testresult,
  45. DateTime dt, int pointnum, string noise1, string noise2, bool isActual)
  46. {
  47. string qryM, qryR, queries="";
  48. string date, time;
  49. if (isActual)
  50. {
  51. qryM = qry_insertNewTestMeasurements_act;
  52. qryR = qry_insertNewTestResults_act;
  53. }
  54. else
  55. {
  56. qryM = qry_insertNewTestMeasurements;
  57. qryR = qry_insertNewTestResults;
  58. }
  59. for (int i = 0; i < testmeasurement.Count; i++)
  60. {
  61. date = dt.Month + "/" + dt.Day + "/" + dt.Year;
  62. time = dt.Hour + ":" + dt.Minute + ":" + dt.Second;
  63. queries += string.Format(qryM, mc, projc, mnum, tref,
  64. testmeasurement[i].pname, testmeasurement[i].pvalue, testmeasurement[i].pindex,
  65. date, time, pointnum, noise1, noise2) + ";";
  66. }
  67. for (int i = 0; i < testresult.Count; i++)
  68. {
  69. date = dt.Month + "/" + dt.Day + "/" + dt.Year;
  70. time = dt.Hour + ":" + dt.Minute + ":" + dt.Second;
  71. queries += string.Format(qryR, mc, projc, mnum, tref,
  72. testresult[i].pname, testresult[i].pvalue, testresult[i].pindex,
  73. date, time, pointnum) + ";";
  74. }
  75. _database.ExecuteInsertQuery(queries);
  76. }
  77. public int GetNumberOfRecordedPoints(int mc, int projc, string mnum, string tref)
  78. {
  79. OdbcDataReader reader;
  80. string qry = string.Format(qry_maxRecPoint, mc, projc, mnum, tref);
  81. string data;
  82. reader = _database.ExecuteSelectQuery(qry);
  83. if (reader.HasRows)
  84. {
  85. reader.Read();
  86. data = reader["pointnum"].ToString();
  87. if (data == "")
  88. return -1;
  89. else
  90. return int.Parse(reader["pointnum"].ToString());
  91. }
  92. return -1;
  93. }
  94. public bool GetMeasurementDataPoint(int mc, int projc, string mnum, string tref, int pointnum, bool isActual,
  95. out List<ObjectData> measPt, out List<ObjectData> resultPt,
  96. out DateTime dt, out string noise1, out string noise2)
  97. {
  98. measPt = new List<ObjectData>();
  99. resultPt = new List<ObjectData>();
  100. dt = new DateTime();
  101. noise1 = "";
  102. noise2 = "";
  103. if (GetNumberOfRecordedPoints(mc, projc, mnum, tref) < pointnum)
  104. return false;
  105. OdbcDataReader reader;
  106. string qryM, qryR;
  107. string date, time;
  108. if (isActual)
  109. {
  110. qryM = qry_getActMeasurementDataPoint;
  111. qryR = qry_getActResultDataPoint;
  112. }
  113. else
  114. {
  115. qryM = qry_getMeasurementDataPoint;
  116. qryR = qry_getResultDataPoint;
  117. }
  118. qryM = string.Format(qryM, mc, projc, mnum, tref, pointnum);
  119. qryR = string.Format(qryR, mc, projc, mnum, tref, pointnum);
  120. reader = _database.ExecuteSelectQuery(qryM);
  121. if (reader.HasRows)
  122. {
  123. reader.Read();
  124. date = reader["date"].ToString();
  125. time = reader["time"].ToString();
  126. date += " " + time;
  127. dt = DateTime.ParseExact(date, "yyyy-MM-dd HH:mm:ss", null);
  128. noise1 = reader["noise1"].ToString();
  129. noise2 = reader["noise2"].ToString();
  130. ObjectData objData;
  131. do
  132. {
  133. objData = new ObjectData();
  134. objData.pname = reader["paramname"].ToString();
  135. objData.pvalue = reader["paramvalue"].ToString();
  136. objData.pindex = DefaultConversion.GetIntValue(reader["displayindex"].ToString());
  137. measPt.Add(objData);
  138. }
  139. while (reader.Read());
  140. }
  141. reader = _database.ExecuteSelectQuery(qryR);
  142. if (reader.HasRows)
  143. {
  144. reader.Read();
  145. ObjectData objData;
  146. do
  147. {
  148. objData = new ObjectData();
  149. objData.pname = reader["paramname"].ToString();
  150. objData.pvalue = reader["paramvalue"].ToString();
  151. objData.pindex = DefaultConversion.GetIntValue(reader["displayindex"].ToString());
  152. resultPt.Add(objData);
  153. }
  154. while (reader.Read());
  155. }
  156. return true;
  157. }
  158. public void DeleteTestData(int mc, int projc, string mnum, string tref)
  159. {
  160. string qry = "";
  161. qry += string.Format(qry_deleteTestMeasurementData, mc, projc, mnum, tref) + ";";
  162. qry += string.Format(qry_deleteActTestMeasurementData, mc, projc, mnum, tref)+";";
  163. qry += string.Format(qry_deleteTestResultData, mc, projc, mnum, tref)+";";
  164. qry += string.Format(qry_deleteActTestResultData, mc, projc, mnum, tref)+";";
  165. _database.ExecuteSystemQuery(qry);
  166. }
  167. }
  168. }