213 lines
8.7 KiB
C#
213 lines
8.7 KiB
C#
///
|
|
/// Copyright (c) 2015-2020 Sensus Slovensko a.s.
|
|
///
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.IO;
|
|
|
|
namespace Results.Entities
|
|
{
|
|
public class WaterMeterData
|
|
{
|
|
public virtual int Id { get; protected set; }
|
|
public virtual string ProductName { get; set; }
|
|
public virtual string Producer { get; set; }
|
|
|
|
public virtual double DN { get; set; } /// [mm]
|
|
public virtual double L { get; set; } /// [mm]
|
|
public virtual Config.Entities.Mounting Mounting { get; set; } /// H / V / S / F
|
|
|
|
public virtual bool NewQnames { get; set; } /// Yes = Q3... No = Qn...
|
|
public virtual double Q4_Qmax { get; set; } /// [m3/h]
|
|
public virtual double Q3_Qn { get; set; } /// [m3/h]
|
|
public virtual double Q2_Qt { get; set; } /// [m3/h]
|
|
public virtual double Q1_Qmin { get; set; } /// [m3/h]
|
|
|
|
public virtual string MetrologicalClass { get; set; }
|
|
public virtual Config.Entities.TemperatureClass TemperatureClass { get; set; }
|
|
public virtual Config.Entities.PressureLossClass PressureLossClass { get; set; }
|
|
public virtual Config.Entities.MaxAdmissiblePressure MaxAdmissiblePressure { get; set; }
|
|
public virtual Config.Entities.FlowProfileSensitivityClass FlowProfileSensitivityClass { get; set; }
|
|
|
|
public virtual string ApprovalInfo { get; set; }
|
|
public virtual string Certificate { get; set; }
|
|
|
|
public virtual double PulsesPerLtr { get; set; }
|
|
|
|
/// Concerns compound water meters
|
|
public virtual string ProducerAux { get; set; }
|
|
public virtual double Q3_Qn_Aux { get; set; } /// [m3/h]
|
|
public virtual string MetrologicalClassAux { get; set; }
|
|
public virtual string ApprovalInfoAux { get; set; }
|
|
|
|
public virtual Config.Entities.Medium Medium { get; set; }
|
|
|
|
public virtual string Text1 { get; set; }
|
|
public virtual string Text2 { get; set; }
|
|
public virtual string Text3 { get; set; }
|
|
public virtual string Text4 { get; set; }
|
|
public virtual string Text5 { get; set; }
|
|
|
|
public virtual bool Compound { get; set; }
|
|
public virtual bool HeatMeter { get; set; }
|
|
|
|
#if ORACLE_DB
|
|
public virtual int WMTypeId { get; set; }
|
|
#endif
|
|
|
|
public WaterMeterData()
|
|
{
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Method to compare the content of two entities
|
|
/// </summary>
|
|
/// <param name="wmd">Second entity to compare with</param>
|
|
/// <returns>first = two entities are equal (except of Id)</returns>
|
|
public virtual bool Equals(WaterMeterData wmd)
|
|
{
|
|
if (!ProductName.Equals(wmd.ProductName)) return false;
|
|
if (!Producer.Equals(wmd.Producer)) return false;
|
|
|
|
if (DN != wmd.DN) return false;
|
|
if (L != wmd.L) return false;
|
|
if (Mounting != wmd.Mounting) return false;
|
|
|
|
if (NewQnames != wmd.NewQnames) return false;
|
|
if (Q4_Qmax != wmd.Q4_Qmax) return false;
|
|
if (Q3_Qn != wmd.Q3_Qn) return false;
|
|
if (Q2_Qt != wmd.Q2_Qt) return false;
|
|
if (Q1_Qmin != wmd.Q1_Qmin) return false;
|
|
|
|
if (!MetrologicalClass.Equals(wmd.MetrologicalClass)) return false;
|
|
if (!TemperatureClass.Equals(wmd.TemperatureClass)) return false;
|
|
if (!PressureLossClass.Equals(wmd.PressureLossClass)) return false;
|
|
if (!MaxAdmissiblePressure.Equals(wmd.MaxAdmissiblePressure)) return false;
|
|
if (!FlowProfileSensitivityClass.Equals(wmd.FlowProfileSensitivityClass)) return false;
|
|
|
|
if (!ApprovalInfo.Equals(wmd.ApprovalInfo)) return false;
|
|
if (Certificate != wmd.Certificate) return false;
|
|
|
|
if (PulsesPerLtr != wmd.PulsesPerLtr) return false;
|
|
|
|
if (ProducerAux != wmd.ProducerAux) return false;
|
|
if (Q3_Qn_Aux != wmd.Q3_Qn_Aux) return false;
|
|
if (MetrologicalClassAux != wmd.MetrologicalClassAux) return false;
|
|
if (ApprovalInfoAux != wmd.ApprovalInfoAux) return false;
|
|
|
|
if (Medium != wmd.Medium) return false;
|
|
|
|
if (Text1 != wmd.Text1) return false;
|
|
if (Text2 != wmd.Text2) return false;
|
|
if (Text3 != wmd.Text3) return false;
|
|
if (Text4 != wmd.Text4) return false;
|
|
if (Text5 != wmd.Text5) return false;
|
|
|
|
if (Compound != wmd.Compound) return false;
|
|
if (HeatMeter != wmd.HeatMeter) return false;
|
|
|
|
#if ORACLE_DB
|
|
if (WMTypeId != wmd.WMTypeId) return false;
|
|
#endif
|
|
return true;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Adds an item to the list if it does not occur there
|
|
/// </summary>
|
|
/// <param name="list">List of items</param>
|
|
/// <param name="item">Item to add to the list or find there</param>
|
|
/// <returns>Item from the list (existing or added)</returns>
|
|
public static WaterMeterData UpdateList(IList<WaterMeterData> list, WaterMeterData item)
|
|
{
|
|
if (item == null) return null; /// Null item is not stored in the list
|
|
|
|
WaterMeterData found = list.FirstOrDefault<WaterMeterData>(x => x.Equals(item));
|
|
|
|
if (found != null) return found; /// The same item found in the list, The found item returned
|
|
|
|
list.Add(item); /// Item not fund in the list, it is added to the list
|
|
return item;
|
|
}
|
|
|
|
public virtual void WriteBinary(BinaryWriter writer)
|
|
{
|
|
writer.Write(Id);
|
|
writer.Write((ProductName != null) ? ProductName : string.Empty);
|
|
writer.Write((Producer != null) ? Producer : string.Empty);
|
|
writer.Write(DN);
|
|
writer.Write(L);
|
|
writer.Write((int)Mounting);
|
|
writer.Write(NewQnames);
|
|
writer.Write(Q4_Qmax);
|
|
writer.Write(Q3_Qn);
|
|
writer.Write(Q2_Qt);
|
|
writer.Write(Q1_Qmin);
|
|
writer.Write((MetrologicalClass != null) ? MetrologicalClass : string.Empty);
|
|
writer.Write((int)TemperatureClass);
|
|
writer.Write((int)PressureLossClass);
|
|
writer.Write((int)MaxAdmissiblePressure);
|
|
writer.Write((int)FlowProfileSensitivityClass);
|
|
writer.Write((ApprovalInfo != null) ? ApprovalInfo : string.Empty);
|
|
writer.Write((Certificate != null) ? Certificate : string.Empty);
|
|
writer.Write(PulsesPerLtr);
|
|
writer.Write((ProducerAux != null) ? ProducerAux : string.Empty);
|
|
writer.Write(Q3_Qn_Aux);
|
|
writer.Write((MetrologicalClassAux != null) ? MetrologicalClassAux : string.Empty);
|
|
writer.Write((ApprovalInfoAux != null) ? ApprovalInfoAux : string.Empty);
|
|
writer.Write((int)Medium);
|
|
writer.Write((Text1 != null) ? Text1 : string.Empty);
|
|
writer.Write((Text2 != null) ? Text2 : string.Empty);
|
|
writer.Write((Text3 != null) ? Text3 : string.Empty);
|
|
writer.Write((Text4 != null) ? Text4 : string.Empty);
|
|
writer.Write((Text5 != null) ? Text5 : string.Empty);
|
|
writer.Write(Compound);
|
|
writer.Write(HeatMeter);
|
|
#if ORACLE_DB
|
|
writer.Write(WMTypeId);
|
|
#endif
|
|
}
|
|
|
|
public virtual void ReadBinary(BinaryReader reader)
|
|
{
|
|
Id = reader.ReadInt32();
|
|
ProductName = reader.ReadString();
|
|
Producer = reader.ReadString();
|
|
DN = reader.ReadDouble();
|
|
L = reader.ReadDouble();
|
|
Mounting = (Config.Entities.Mounting)reader.ReadInt32();
|
|
NewQnames = reader.ReadBoolean();
|
|
Q4_Qmax = reader.ReadDouble();
|
|
Q3_Qn = reader.ReadDouble();
|
|
Q2_Qt = reader.ReadDouble();
|
|
Q1_Qmin = reader.ReadDouble();
|
|
MetrologicalClass = reader.ReadString();
|
|
TemperatureClass = (Config.Entities.TemperatureClass)reader.ReadInt32();
|
|
PressureLossClass = (Config.Entities.PressureLossClass)reader.ReadInt32();
|
|
MaxAdmissiblePressure = (Config.Entities.MaxAdmissiblePressure)reader.ReadInt32();
|
|
FlowProfileSensitivityClass = (Config.Entities.FlowProfileSensitivityClass)reader.ReadInt32();
|
|
ApprovalInfo = reader.ReadString();
|
|
Certificate = reader.ReadString();
|
|
PulsesPerLtr = reader.ReadDouble();
|
|
ProducerAux = reader.ReadString();
|
|
Q3_Qn_Aux = reader.ReadDouble();
|
|
MetrologicalClassAux = reader.ReadString();
|
|
ApprovalInfoAux = reader.ReadString();
|
|
Medium = (Config.Entities.Medium)reader.ReadInt32();
|
|
Text1 = reader.ReadString();
|
|
Text2 = reader.ReadString();
|
|
Text3 = reader.ReadString();
|
|
Text4 = reader.ReadString();
|
|
Text5 = reader.ReadString();
|
|
Compound = reader.ReadBoolean();
|
|
HeatMeter = reader.ReadBoolean();
|
|
#if ORACLE_DB
|
|
WMTypeId = reader.ReadInt32();
|
|
#endif
|
|
}
|
|
}
|
|
}
|