BatchResults.WaterMeters eliminated, Batch.WaterMeters are used instead ... many changes
This commit is contained in:
+70
-92
@@ -18,7 +18,6 @@ namespace Results
|
||||
|
||||
public Batch Batch;
|
||||
public int WMPositionsCount;
|
||||
public WaterMeter[] WaterMeters; /// Array length is WMPositionsCount
|
||||
|
||||
|
||||
[XmlIgnore]
|
||||
@@ -91,18 +90,24 @@ namespace Results
|
||||
/// Add watermeter to an array, array index is WM position.
|
||||
/// AddWaterMetersToBatch() has to be used before saving results.
|
||||
///
|
||||
d.WaterMeters = new WaterMeter[d.WMPositionsCount];
|
||||
for (int i = 0; i < d.WMPositionsCount; i++)
|
||||
for (int wmPos0 = 0; wmPos0 < d.WMPositionsCount; wmPos0++)
|
||||
{
|
||||
if (waterMeterDatas[i] == null) continue;
|
||||
WaterMeterData wmd = WaterMeterData.UpdateList(d.WaterMeterDataList, waterMeterDatas[i]);
|
||||
d.WaterMeters[i] = new WaterMeter()
|
||||
{
|
||||
Batch = d.Batch,
|
||||
WaterMeterData = wmd,
|
||||
WMPosition = i + 1,
|
||||
YearOfProduction = year,
|
||||
};
|
||||
if (waterMeterDatas[wmPos0] == null)
|
||||
{
|
||||
d.Batch.WaterMeters.Add(new WaterMeter() { Batch = d.Batch,
|
||||
WaterMeterData = null,
|
||||
WMPosition = wmPos0 + 1,
|
||||
YearOfProduction = year,
|
||||
Disabled = true, });
|
||||
}
|
||||
else
|
||||
{
|
||||
WaterMeterData wmd = WaterMeterData.UpdateList(d.WaterMeterDataList, waterMeterDatas[wmPos0]);
|
||||
d.Batch.WaterMeters.Add(new WaterMeter() { Batch = d.Batch,
|
||||
WaterMeterData = wmd,
|
||||
WMPosition = wmPos0 + 1,
|
||||
YearOfProduction = year, });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -120,32 +125,31 @@ namespace Results
|
||||
|
||||
for (int i = 0; i < d.WMPositionsCount; i++)
|
||||
{
|
||||
if (d.WaterMeters[i] == null) continue;
|
||||
|
||||
if (!t.IsPartCompatible(waterMeterParts[i])) continue;
|
||||
|
||||
///
|
||||
/// Create empty watermeter test results and add them to the list and to dictionaries
|
||||
///
|
||||
IList<MeterTestRslt> wmtrs = d.WaterMeters[i].MeterTestRslts;
|
||||
if (d.Batch.Compound)
|
||||
{
|
||||
/// Compound water meter
|
||||
wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundMain));
|
||||
wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundAux));
|
||||
wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Compound));
|
||||
}
|
||||
else if (d.Batch.HeatMeter)
|
||||
{
|
||||
/// Heat meter
|
||||
wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.HeatMeterVolume));
|
||||
wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.HeatMeterEnergy));
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Water meter
|
||||
wmtrs.Add(new MeterTestRslt(d.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Single));
|
||||
}
|
||||
if (!d.Batch.WaterMeters[i].Disabled && t.IsPartCompatible(waterMeterParts[i]))
|
||||
{
|
||||
///
|
||||
/// Create empty watermeter test results and add them to the list and to dictionaries
|
||||
///
|
||||
IList<MeterTestRslt> wmtrs = d.Batch.WaterMeters[i].MeterTestRslts;
|
||||
if (d.Batch.Compound)
|
||||
{
|
||||
/// Compound water meter
|
||||
wmtrs.Add(new MeterTestRslt(d.Batch.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundMain));
|
||||
wmtrs.Add(new MeterTestRslt(d.Batch.WaterMeters[i], tr, Config.Entities.CompoundMeterId.CompoundAux));
|
||||
wmtrs.Add(new MeterTestRslt(d.Batch.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Compound));
|
||||
}
|
||||
else if (d.Batch.HeatMeter)
|
||||
{
|
||||
/// Heat meter
|
||||
wmtrs.Add(new MeterTestRslt(d.Batch.WaterMeters[i], tr, Config.Entities.CompoundMeterId.HeatMeterVolume));
|
||||
wmtrs.Add(new MeterTestRslt(d.Batch.WaterMeters[i], tr, Config.Entities.CompoundMeterId.HeatMeterEnergy));
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Water meter
|
||||
wmtrs.Add(new MeterTestRslt(d.Batch.WaterMeters[i], tr, Config.Entities.CompoundMeterId.Single));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -163,11 +167,17 @@ namespace Results
|
||||
|
||||
BatchResults batchResults = new BatchResults(wmPosMax);
|
||||
batchResults.Batch = batch;
|
||||
batchResults.WaterMeters = new WaterMeter[wmPosMax];
|
||||
for (int i = 0; i < batch.WaterMeters.Count; i++)
|
||||
/// Insert missing disabled water meters
|
||||
for (int wmNr0 = 0; wmNr0 < wmPosMax; wmNr0++)
|
||||
{
|
||||
WaterMeter wm = batch.WaterMeters[i];
|
||||
batchResults.WaterMeters[wm.WMPosition - 1] = wm;
|
||||
if (batch.WaterMeters[wmNr0].WMPosition > wmNr0 + 1)
|
||||
{
|
||||
batch.WaterMeters.Insert(wmNr0, new WaterMeter() { Batch = batch,
|
||||
WaterMeterData = null,
|
||||
WMPosition = wmNr0 + 1,
|
||||
YearOfProduction = 0,
|
||||
Disabled = true, });
|
||||
}
|
||||
}
|
||||
|
||||
return batchResults;
|
||||
@@ -178,11 +188,11 @@ namespace Results
|
||||
return Batch.GetTestRslt(name, part);
|
||||
}
|
||||
|
||||
public MeterTestRslt GetMeterTestRslt(string name, int wmnr0, Config.Entities.CompoundMeterId meterId)
|
||||
public MeterTestRslt GetMeterTestRslt(string name, int wmNr0, Config.Entities.CompoundMeterId meterId)
|
||||
{
|
||||
if (WaterMeters[wmnr0] != null)
|
||||
if (Batch.WaterMeters != null && Batch.WaterMeters.Count > wmNr0 && !Batch.WaterMeters[wmNr0].Disabled)
|
||||
{
|
||||
return WaterMeters[wmnr0].GetMeterTestRslt(name, meterId);
|
||||
return Batch.WaterMeters[wmNr0].GetMeterTestRslt(name, meterId);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -194,11 +204,11 @@ namespace Results
|
||||
/// <returns>true = all tests done</returns>
|
||||
public bool AllTestsDone()
|
||||
{
|
||||
for (int i = 0; i < WMPositionsCount; i++)
|
||||
for (int wmNr0 = 0; wmNr0 < WMPositionsCount; wmNr0++)
|
||||
{
|
||||
if ((WaterMeters[i] != null) && !WaterMeters[i].Disabled)
|
||||
if (Batch.WaterMeters != null && Batch.WaterMeters.Count > wmNr0 && !Batch.WaterMeters[wmNr0].Disabled)
|
||||
{
|
||||
foreach (var mtr in WaterMeters[i].MeterTestRslts)
|
||||
foreach (var mtr in Batch.WaterMeters[wmNr0].MeterTestRslts)
|
||||
{
|
||||
if (!mtr.TestDone) return false;
|
||||
}
|
||||
@@ -208,44 +218,15 @@ namespace Results
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Adds non-null water meters from an array to a Batch water meters list.
|
||||
/// This method should be used when results are prepared and
|
||||
/// all disabled water meters are deleted.
|
||||
/// </summary>
|
||||
public void AddWaterMetersToBatch()
|
||||
{
|
||||
for (int i = 0; i < WMPositionsCount; i++)
|
||||
{
|
||||
if (WaterMeters[i] != null)
|
||||
{
|
||||
WaterMeters[i].Passed = WaterMeters[i].PassedFromTests();
|
||||
if (!WaterMeters[i].Disabled)
|
||||
{
|
||||
Batch.WaterMeters.Add(WaterMeters[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Save public fields of this class to the XML file.
|
||||
/// </summary>
|
||||
public void Save(string fileName)
|
||||
{
|
||||
try
|
||||
using (BinaryWriter writer = new BinaryWriter(File.OpenWrite(fileName)))
|
||||
{
|
||||
/// Write settings to an unencrypted file
|
||||
using (BinaryWriter writer = new BinaryWriter(File.OpenWrite(fileName)))
|
||||
{
|
||||
WriteBinary(writer);
|
||||
log.Warn("LocalSettings succesfully saved");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.ErrorFormat("Failed to save to '{0}': {1}", fileName, e.Message);
|
||||
WriteBinary(writer);
|
||||
log.Warn("LocalSettings succesfully saved");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -253,14 +234,17 @@ namespace Results
|
||||
{
|
||||
Batch.WriteBinary(writer);
|
||||
writer.Write(WMPositionsCount);
|
||||
writer.Write((WaterMeters != null) ? WaterMeters.Length : (int)0);
|
||||
if (WaterMeters != null)
|
||||
}
|
||||
|
||||
public static BatchResults Load(string fileName)
|
||||
{
|
||||
BatchResults br = new BatchResults();
|
||||
using (BinaryReader reader = new BinaryReader(File.OpenRead(fileName)))
|
||||
{
|
||||
for (int i = 0; i < WaterMeters.Length; i++)
|
||||
{
|
||||
WaterMeters[i].WriteBinary(writer);
|
||||
}
|
||||
br.ReadBinary(reader);
|
||||
log.Warn("LocalSettings succesfully saved");
|
||||
}
|
||||
return br;
|
||||
}
|
||||
|
||||
public virtual void ReadBinary(BinaryReader reader)
|
||||
@@ -269,12 +253,6 @@ namespace Results
|
||||
Batch.ReadBinary(reader);
|
||||
WMPositionsCount = reader.ReadInt32();
|
||||
int waterMetersLength = reader.ReadInt32();
|
||||
WaterMeters = new WaterMeter[waterMetersLength];
|
||||
for (int i = 0; i < waterMetersLength; i++)
|
||||
{
|
||||
WaterMeters[i] = new WaterMeter();
|
||||
WaterMeters[i].ReadBinary(reader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user