/// /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; using System.Collections.Generic; using System.Reflection; namespace Config.Entities { /// /// Helper class to assign descriptions to enum values /// public class Description : Attribute { public string Text; public Description(string t) { Text = t; } } public static class GetDescription { /// Extension method for enum-s public static string ToDescription(this Enum en) { Type type = en.GetType(); MemberInfo[] memInfo = type.GetMember(en.ToString()); if (memInfo != null && memInfo.Length > 0) { object[] attrs = memInfo[0].GetCustomAttributes(typeof(Description), false); if (attrs != null && attrs.Length > 0) return ((Description)attrs[0]).Text; } return en.ToString(); /// Return ToString() value in case there is no description } } /// Identifies the type of a database public enum DBType { MySql, /// MySQL database SQLite, /// SQLite DbTypesCount, } /// Identifies the database based on the content public enum DBKind { Config, Results, Count, } public enum ProcedureState { Active, History, Template, Count, } /// Kind of meters for the procedure / test public enum MetersKind { Single, Combined, HeatMeter, } public enum CompoundMeterId : byte { Single, CompoundMain, CompoundAux, Compound, HeatMeterVolume, HeatMeterEnergy, } public enum Medium { [Description("")] NotSpecified, ColdWater, HotWater, Count } public enum Mounting { #if LANG_DE [Description("")] NotSpecified, [Description("H")] H, /// horizontal [Description("V")] V, /// vertical [Description("STR")] S, /// standrohre [Description("F")] F, /// fall #else [Description("")] NotSpecified, [Description("H")] H, /// horizontal [Description("V")] V, /// vertical [Description("S")] S, /// steig [Description("F")] F, /// fall #endif Count } public enum TemperatureClass { [Description("")] NotSpecified, [Description("T30")] T30, [Description("T50")] T50, [Description("T70")] T70, [Description("T90")] T90, [Description("T130")] T130, [Description("T180")] T180, [Description("T30/70")] T30_70, [Description("T30/90")] T30_90, [Description("T30/130")] T30_130, [Description("T30/180")] T30_180, [Description("30")] t30, [Description("50")] t50, [Description("70")] t70, [Description("90")] t90, [Description("130")] t130, [Description("180")] t180, Count } public enum FlowProfileSensitivityClass { [Description("")] NotSpecified, [Description("U0")] U0, /// ? [Description("D0")] D0, /// ? Count } public enum PressureLossClass { [Description("")] NotSpecified, [Description("dp63")] dp63, /// 0.063 MPa = 0.63 bar, TODO: Change to "Δp63" [Description("dp40")] dp40, /// 0.040 MPa = 0.40 bar [Description("dp25")] dp25, /// 0.025 MPa = 0.25 bar [Description("dp16")] dp16, /// 0.016 MPa = 0.16 bar [Description("dp10")] dp10, /// 0.010 MPa = 0.10 bar Count } /// Maximum Admissible Pressure public enum MaxAdmissiblePressure { [Description("")] NotSpecified, [Description("MAP6")] MAP6, [Description("MAP10")] MAP10, [Description("MAP16")] MAP16, [Description("MAP25")] MAP25, [Description("MAP40")] MAP40, Count } /// Transition step is finished when this condition is fulfilled public enum StepCondition { None, Scale1Empty, Scale2Empty, Scale3Empty, AllScalesEmpty, Count } public enum Publish : sbyte { #if LANG_DE /// nemecky [Description("nie")] Never = 0, [Description("immer")] Always = 1, [Description("Bildschirm")] OnScreen = 2, [Description("intern")] Internal = 3, #elif LANG_CS /// cesky [Description("nikdy")] Never = 0, [Description("vždy")] Always = 1, [Description("na obrazovku")] OnScreen = 2, [Description("interně")] Internal = 3, #elif LANG_SK /// slovensky [Description("nikdy")] Never = 0, [Description("vždy")] Always = 1, [Description("na obrazovku")] OnScreen = 2, [Description("interne")] Internal = 3, #elif LANG_PL /// polsky [Description("nigdy")] Never = 0, [Description("zawsze")] Always = 1, [Description("na ekranie")] OnScreen = 2, [Description("wewnętrznie")] Internal = 3, #else [Description("Never")] Never = 0, [Description("Always")] Always = 1, [Description("On screen")] OnScreen = 2, [Description("Internal")] Internal = 3, #endif Count } public enum TestRedType { Fix, /// etc. Count, } public enum FQC1 { FQC1, FQP1, Count, } public enum Progress { JustStarted, TransitionBefore, SwitchingFlowDetection, FlowSetting, Test, TransitionAfter, Completed, Count, } public enum Device { Screen, Printer, Disk, } public enum PageOrientation { Portrait, Landscape, Count, } public enum UnitsVolume { Liter, CubicMtr, } /// Possible modes of operation of components and devices. public enum DebugMode { #if LANG_DE [Description("Erkennen-aus")] DetectedOff = -2, [Description("Erkennen-ein")] DetectedOn = -1, [Description("Normal")] Normal = 0, /// Normal operation [Description("Auto-erkennen")] AutoDetect, /// The component (device) will be auto-detected [Description("Fehler")] FailureDuringOperation, /// Failure during operation -> disabled [Description("Aus")] Off, /// The component is off [Description("Aufzeichnen")] Record, [Description("Reply")] Reply, [Description("Simuliert")] Simulate, /// Test bench simulation, this mode does not require any hardware [Description("Geerbt")] Inherit, #else [Description("Detected off")] DetectedOff = -2, [Description("Detected on")] DetectedOn = -1, [Description("normal")] Normal = 0, /// Normal operation [Description("Auto detect")] AutoDetect, /// The component (device) will be auto-detected [Description("Run-time error")] FailureDuringOperation, /// Failure during operation -> disabled [Description("Off")] Off, /// The component is off [Description("Record")] Record, [Description("Reply")] Reply, [Description("Simulate")] Simulate, /// Test bench simulation, this mode does not require any hardware [Description("Inherit")] Inherit, #endif Count, } public enum LogLevel { #if LANG_DE [Description("Aus")] Off, [Description("Schwerwiegend")] Fatal, [Description("Fehler")] Error, [Description("Warnung")] Warn, [Description("Info")] Info, [Description("Debug")] Debug, [Description("Alles")] All, #else [Description("Off")] Off, [Description("Fatal")] Fatal, [Description("Error")] Error, [Description("Warn")] Warn, [Description("Info")] Info, [Description("Debug")] Debug, [Description("All")] All, #endif Count, } /// Arrangement of tests public enum TestsArrangement { Rows, Columns, } /// Arrangement of meters public enum MetersArrangement { Vertically, Horizontally, } public enum Alignment { #if LANG_DE [Description("links")] Left, [Description("zentriert")] Center, [Description("rechts")] Right, [Description("angepasst")] Justified, #else [Description("Left")] Left, [Description("Center")] Center, [Description("Right")] Right, [Description("Justified")] Justified, #endif Count } public enum LoginMethod { UserName, /// = alias, abbreviation FullName, /// = description Number, Count } }