ProcessData (aka BatchResults) serialization part 2

This commit is contained in:
Milan Hanajik
2020-02-05 13:03:52 +01:00
parent 61747166ae
commit 12c9e72d0c
14 changed files with 537 additions and 131 deletions
+42 -6
View File
@@ -233,6 +233,7 @@ namespace Results.Entities
public virtual void WriteBinary(BinaryWriter writer)
{
writer.Write(ProgramVersion);
writer.Write(Id);
writer.Write(BatchNr);
writer.Write(TestBenchId);
@@ -242,7 +243,6 @@ namespace Results.Entities
writer.Write(Address3);
writer.Write(Address4);
writer.Write(Address5);
writer.Write(ProgramVersion);
writer.Write(UserName);
writer.Write(UserNumber);
writer.Write(ProcedureName);
@@ -267,11 +267,28 @@ namespace Results.Entities
writer.Write(Compound);
writer.Write(HeatMeter);
/// TODO: Write lists
IList<TestData> savedTestDatas = new List<TestData>(); /// Initially empty
writer.Write(TestRslts.Count);
for (int i = 0; i < TestRslts.Count; i++)
{
TestRslts[i].WriteBinary(writer, savedTestDatas);
}
IList<WaterMeterData> savedWMDatas = new List<WaterMeterData>(); /// Initially empty
writer.Write(WaterMeters.Count);
for (int i = 0; i < WaterMeters.Count; i++)
{
WaterMeters[i].WriteBinary(writer, savedWMDatas);
}
}
public virtual void ReadBinary(BinaryReader reader)
public virtual void ReadBinary(BinaryReader reader, string expectedProgramVersion)
{
ProgramVersion = reader.ReadString();
if (expectedProgramVersion != null && ProgramVersion != expectedProgramVersion)
{
throw new Exception(string.Format("Process data were stored by TBF v.{0}", ProgramVersion));
}
Id = reader.ReadInt32();
BatchNr = reader.ReadInt32();
TestBenchId = reader.ReadInt32();
@@ -281,7 +298,6 @@ namespace Results.Entities
Address3 = reader.ReadString();
Address4 = reader.ReadString();
Address5 = reader.ReadString();
ProgramVersion = reader.ReadString();
UserName = reader.ReadString();
UserNumber = reader.ReadInt32();
ProcedureName = reader.ReadString();
@@ -306,7 +322,27 @@ namespace Results.Entities
Compound = reader.ReadBoolean();
HeatMeter = reader.ReadBoolean();
/// TODO: Read lists
}
Tests = new List<TestData>(); /// Initially empty
int testRsltsCount = reader.ReadInt32();
TestRslts = new List<TestRslt>();
for (int i = 0; i < testRsltsCount; i++)
{
TestRslts.Add(new TestRslt());
TestRslts[i].ReadBinary(reader, Tests);
TestRslts[i].Batch = this;
}
IList<WaterMeterData> wmDatasRetirevedSoFar = new List<WaterMeterData>(); /// Initially empty
int waterMetersCount = reader.ReadInt32();
WaterMeters = new List<WaterMeter>();
for (int i = 0; i < waterMetersCount; i++)
{
WaterMeters.Add(new WaterMeter());
WaterMeters[i].ReadBinary(reader, wmDatasRetirevedSoFar, TestRslts);
WaterMeters[i].Batch = this;
}
}
}
}