%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/old2/_music/diplomka/
Upload File :
Create Path :
Current File : /www/old2/_music/diplomka/datapoints_refactor.patch

Index: ConfigApp.Logic/Bus2DatapointHelper.cs
===================================================================
--- ConfigApp.Logic/Bus2DatapointHelper.cs	(revision 3381)
+++ ConfigApp.Logic/Bus2DatapointHelper.cs	(working copy)
@@ -1,129 +0,0 @@
-using System.Linq;
-using Honeywell.MBEMEA.ConfigApp.Data;
-
-namespace Honeywell.MBEMEA.ConfigApp.Logic
-{
-    public static class Bus2DatapointHelper
-    {
-        private const string Bus2DeviceType = "BUS2DEVICE";
-        private const string Bus2IoType = "BUS2IO";
-
-        /// <summary>
-        /// Method for saving BUS2 devices datapoint information
-        /// </summary>
-        public static void SaveBus2Devices()
-        {
-            //SaveBus22RelaisModules();
-            SaveBus2HwDevices();
-        }
-
-        /// <summary>
-        /// Helper method for defining base datapoint number of device
-        /// </summary>
-        /// <param name="busNumber">Number of BUS2 controller</param>
-        /// <param name="deviceAddress">Adderee of device on controller</param>
-        /// <returns>Datapoint number for device</returns>
-        private static int GetBaseDatapoint(int busNumber, int deviceAddress)
-        {
-            // Formula by Karsten Stock
-            return 10000 + ((busNumber - 1)*(17*64)) + (17*deviceAddress);
-        }
-
-        /// <summary>
-        /// Method for saving BUS2 2-Relay module
-        /// </summary>
-        private static void SaveBus22RelaisModules()
-        {
-            foreach (var device in InternalDataStore.DataSet.HWBus22RelaisInputModule)
-            {
-                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
-                var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.HardwareDeviceRow.ParentDeviceUID);
-                if (parent != null)
-                {
-                    int baseDataPoint = GetBaseDatapoint(parent.BusNumber,
-                                                         device.HardwareDeviceRow.Address);
-                    row.ItemType = "Bus2Device";
-                    row.ItemUID = device.UID;
-                    row.Name = device.HardwareDeviceRow.Name;
-                    row.DatapointNumber = baseDataPoint;
-                    row.DatapointType = Bus2DeviceType;
-                    InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
-                
-                    // Inputs && outputs
-                    InsertInputs(device.UID, baseDataPoint);
-                    InsertOutputs(device.UID, baseDataPoint);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Experimental method for saving all BUS2 hardware devices the same way
-        /// </summary>
-        private static void SaveBus2HwDevices()
-        {
-            var controllers = from p in InternalDataStore.DataSet.HWBus2BusController select p.UID;
-            var devices = InternalDataStore.DataSet.HardwareDevice.Where(p => !p.IsParentDeviceUIDNull() && controllers.Contains(p.ParentDeviceUID));
-            foreach (var device in devices)
-            {
-                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
-                var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.ParentDeviceUID);
-                if (parent != null)
-                {
-                    int baseDataPoint = GetBaseDatapoint(parent.BusNumber,
-                                                         device.Address);
-                    row.ItemType = "Bus2Device";
-                    row.ItemUID = device.UID;
-                    row.Name = device.Name;
-                    row.DatapointNumber = baseDataPoint;
-                    row.DatapointType = Bus2DeviceType;
-                    InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
-
-                    // Inputs && outputs
-                    InsertInputs(device.UID, baseDataPoint);
-                    InsertOutputs(device.UID, baseDataPoint);
-                }
-            }
-        }
-
-        private static void InsertOutputs(uint deviceUid, int baseDataPoint)
-        {
-            var outputs =
-                InternalDataStore.DataSet.LogicalDevice.Where(
-                    p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusOutput");
-            foreach (var output in outputs)
-            {
-                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
-                row.ItemType = "Bus2IO";
-                row.ItemUID = output.UID;
-                row.Name = output.Name;
-                row.DatapointNumber = baseDataPoint + 5 + output.Number;
-                row.DatapointType = Bus2IoType;
-
-                // Separate LEDs
-                if (row.Name.ToUpper().IndexOf("LED", System.StringComparison.Ordinal) >= 0)
-                {
-                    row.DatapointNumber += 5;
-                }
-
-                InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
-            }
-        }
-
-        private static void InsertInputs(uint deviceUid, int baseDataPoint)
-        {
-            var inputs =
-                InternalDataStore.DataSet.LogicalDevice.Where(
-                    p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusInput");
-            foreach (var input in inputs)
-            {
-                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
-                row.ItemType = "Bus2IO";
-                row.ItemUID = input.UID;
-                row.Name = input.Name;
-                row.DatapointNumber = baseDataPoint + input.Number;
-                row.DatapointType = Bus2IoType;
-                InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
-            }
-        }
-    }
-}
Index: ConfigApp.Logic/ConfigApp.Logic.csproj
===================================================================
--- ConfigApp.Logic/ConfigApp.Logic.csproj	(revision 3381)
+++ ConfigApp.Logic/ConfigApp.Logic.csproj	(working copy)
@@ -93,9 +93,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Bus2DatapointHelper.cs" />
+    <Compile Include="Datapoints\Bus2DatapointHelper.cs" />
     <Compile Include="DataLoader.cs" />
-    <Compile Include="DatapointNumberHelper.cs" />
+    <Compile Include="Datapoints\DatapointNumberHelper.cs" />
     <Compile Include="DataTemplateManager.cs" />
     <Compile Include="DataTemplateNames.cs" />
     <Compile Include="DeviceCatalogue.cs" />
Index: ConfigApp.Logic/DataLoader.cs
===================================================================
--- ConfigApp.Logic/DataLoader.cs	(revision 3381)
+++ ConfigApp.Logic/DataLoader.cs	(working copy)
@@ -13,6 +13,7 @@
 using Honeywell.MBEMEA.Common.Interfaces;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 using Honeywell.MBEMEA.ServiceReferences;
 using Honeywell.MBEMEA.Common.DataManagers;
 using DevExpress.XtraEditors;
@@ -299,7 +300,7 @@
                 row.ItemType = "Partition";
                 row.DatapointNumber = partition.DatapointNumber;
                 row.Name = partition.Name;
-                row.DatapointType = "NA";
+                row.DatapointType = "300070000";
                 InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
             }
             
@@ -312,7 +313,7 @@
                 row.ItemType = "DetectorGroup";
                 row.DatapointNumber = detectorGroup.DatapointNumber;
                 row.Name = detectorGroup.PartitionMemberRow.Name;
-                row.DatapointType = "NA";
+                row.DatapointType = "300070001";
                 InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
             }
 
@@ -325,7 +326,7 @@
                 row.ItemType = "Macro";
                 row.DatapointNumber = macroRow.DatapointNumber;
                 row.Name = macroRow.Name;
-                row.DatapointType = "NA";
+                row.DatapointType = "300070003";
                 InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
             }
 
@@ -338,7 +339,7 @@
                 row.ItemType = "Door";
                 row.DatapointNumber = doorGuard.DoorDatapointNumber;
                 row.Name = doorGuard.HardwareDeviceRow.Name;
-                row.DatapointType = "NA";
+                row.DatapointType = "300070002";
                 InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
             }
             var identkeys = InternalDataStore.DataSet.HWBus2Identkey3.Where(p => !p.IsDoorDatapointNumberNull());
@@ -349,7 +350,7 @@
                 row.ItemType = "Door";
                 row.DatapointNumber = identkey.DoorDatapointNumber;
                 row.Name = identkey.HardwareDeviceRow.Name;
-                row.DatapointType = "NA";
+                row.DatapointType = "300070002";
                 InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
             }
             var doorControllerModules = InternalDataStore.DataSet.HWBus2DoorControllerModule.Where(p => !p.IsDoorDatapointNumberNull());
@@ -360,7 +361,7 @@
                 row.ItemType = "Door";
                 row.DatapointNumber = doorControllerModule.DoorDatapointNumber;
                 row.Name = doorControllerModule.HardwareDeviceRow.Name;
-                row.DatapointType = "NA";
+                row.DatapointType = "300070002";
                 InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
             }
             var rfDevices =
Index: ConfigApp.Logic/DatapointNumberHelper.cs
===================================================================
--- ConfigApp.Logic/DatapointNumberHelper.cs	(revision 3381)
+++ ConfigApp.Logic/DatapointNumberHelper.cs	(working copy)
@@ -1,139 +0,0 @@
-using Honeywell.MBEMEA.ConfigApp.Data;
-using System.Linq;
-
-namespace Honeywell.MBEMEA.ConfigApp.Logic
-{
-    public static class DatapointNumberHelper
-    {
-        public const int PartitionStart = 1000;
-        public const int PartitionEnd = 1511;
-        public const int DetectorGroupStart = 1512;
-        public const int DetectorGroupEnd = 5607;
-        public const int DoorStart = 5608;
-        public const int DoorEnd = 6631;
-        public const int MacroStart = 6632;
-        public const int MacroEnd = 8631;
-        public const int WirelessDeviceBaseStart = 8640;
-        public const int WirelessDeviceBaseEnd = 9982; // 9999 - 17 because we need entire range for last device
-
-        public static int GetPartitionNumber(int number = 0)
-        {
-            int retVal = PartitionStart;
-            if (number != 0 && IsPartitionNumberAvailable(number))
-            {
-                return number;
-            }
-            while (!IsPartitionNumberAvailable(retVal) && retVal <= PartitionEnd)
-            {
-                retVal++;
-            }
-            return retVal;
-        }
-
-        public static int GetDetectorGroupNumber(int number = 0)
-        {
-            int retVal = DetectorGroupStart;
-            if (number != 0 && IsDetectorGroupNumberAvailable(number))
-            {
-                return number;
-            }
-            while (!IsDetectorGroupNumberAvailable(retVal) && retVal <= DetectorGroupEnd)
-            {
-                retVal++;
-            }
-            return retVal;
-        }
-
-        public static int GetMacroNumber(int number = 0)
-        {
-            int retVal = MacroStart;
-            if (number != 0 && IsMacroNumberAvailable(number))
-            {
-                return number;
-            }
-            while (!IsMacroNumberAvailable(retVal) && retVal <= MacroEnd)
-            {
-                retVal++;
-            }
-            return retVal;
-        }
-
-        public static int GetDoorNumber(int number = 0)
-        {
-            int retVal = DoorStart;
-            if (number != 0 && IsDoorNumberAvailable(number))
-            {
-                return number;
-            }
-            while (!IsDoorNumberAvailable(retVal) && retVal <= DoorEnd)
-            {
-                retVal++;
-            }
-            return retVal;
-        }
-
-        public static int GetWirelessDeviceBaseNumber(int number = 0)
-        {
-            int retVal = WirelessDeviceBaseStart;
-            if (number != 0 && IsWirelessDeviceBaseNumberAvailable(number))
-            {
-                return number;
-            }
-            while (!IsWirelessDeviceBaseNumberAvailable(retVal) && retVal <= WirelessDeviceBaseEnd)
-            {
-                retVal += 17;
-            }
-            return retVal;
-        }
-
-
-
-        private static bool IsWirelessDeviceBaseNumberAvailable(int number)
-        {
-            bool retVal =
-                (InternalDataStore.DataSet.HWBus2Wireless4IOModule.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) +
-                 InternalDataStore.DataSet.HWBus2WirelessSmokeDetector.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) +
-                 InternalDataStore.DataSet.HWBus2WirelessViewguard.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number)
-                ) == 0
-                && number >= WirelessDeviceBaseStart && number <= WirelessDeviceBaseEnd && (number - WirelessDeviceBaseStart) % 17 == 0;
-            return retVal;
-        }
-
-        private static bool IsPartitionNumberAvailable(int number)
-        {
-            bool retVal =
-                InternalDataStore.DataSet.Partition.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 
-                && number >= PartitionStart && number <= PartitionEnd;
-            return retVal;
-        }
-
-        private static bool IsDetectorGroupNumberAvailable(int number)
-        {
-            bool retVal =
-                InternalDataStore.DataSet.DetectorGroup.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0
-                && number >= DetectorGroupStart && number <= DetectorGroupEnd;
-            return retVal;
-        }
-
-        private static bool IsMacroNumberAvailable(int number)
-        {
-            bool retVal =
-                InternalDataStore.DataSet.Macro.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0
-                && number >= MacroStart && number <= MacroEnd;
-            return retVal;
-        }
-
-        private static bool IsDoorNumberAvailable(int number)
-        {
-            bool retVal =
-                (
-                 InternalDataStore.DataSet.HWBus2DoorGuard.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) +
-                 InternalDataStore.DataSet.HWBus2DoorControllerModule.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) +
-                 InternalDataStore.DataSet.HWBus2Identkey3.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number)
-                ) == 0
-                && number >= DoorStart && number <= DoorEnd;
-            return retVal;
-        }
-
-    }
-}
Index: ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs
===================================================================
--- ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs	(revision 0)
+++ ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs	(working copy)
@@ -0,0 +1,129 @@
+using System.Linq;
+using Honeywell.MBEMEA.ConfigApp.Data;
+
+namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints
+{
+    public static class Bus2DatapointHelper
+    {
+        private const string Bus2DeviceType = "BUS2DEVICE";
+        private const string Bus2IoType = "BUS2IO";
+
+        /// <summary>
+        /// Method for saving BUS2 devices datapoint information
+        /// </summary>
+        public static void SaveBus2Devices()
+        {
+            //SaveBus22RelaisModules();
+            SaveBus2HwDevices();
+        }
+
+        /// <summary>
+        /// Helper method for defining base datapoint number of device
+        /// </summary>
+        /// <param name="busNumber">Number of BUS2 controller</param>
+        /// <param name="deviceAddress">Adderee of device on controller</param>
+        /// <returns>Datapoint number for device</returns>
+        private static int GetBaseDatapoint(int busNumber, int deviceAddress)
+        {
+            // Formula by Karsten Stock
+            return 10000 + ((busNumber - 1)*(17*64)) + (17*deviceAddress);
+        }
+
+        /// <summary>
+        /// Method for saving BUS2 2-Relay module
+        /// </summary>
+        private static void SaveBus22RelaisModules()
+        {
+            foreach (var device in InternalDataStore.DataSet.HWBus22RelaisInputModule)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.HardwareDeviceRow.ParentDeviceUID);
+                if (parent != null)
+                {
+                    int baseDataPoint = GetBaseDatapoint(parent.BusNumber,
+                                                         device.HardwareDeviceRow.Address);
+                    row.ItemType = "Bus2Device";
+                    row.ItemUID = device.UID;
+                    row.Name = device.HardwareDeviceRow.Name;
+                    row.DatapointNumber = baseDataPoint;
+                    row.DatapointType = Bus2DeviceType;
+                    InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+                
+                    // Inputs && outputs
+                    InsertInputs(device.UID, baseDataPoint);
+                    InsertOutputs(device.UID, baseDataPoint);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Experimental method for saving all BUS2 hardware devices the same way
+        /// </summary>
+        private static void SaveBus2HwDevices()
+        {
+            var controllers = from p in InternalDataStore.DataSet.HWBus2BusController select p.UID;
+            var devices = InternalDataStore.DataSet.HardwareDevice.Where(p => !p.IsParentDeviceUIDNull() && controllers.Contains(p.ParentDeviceUID));
+            foreach (var device in devices)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.ParentDeviceUID);
+                if (parent != null)
+                {
+                    int baseDataPoint = GetBaseDatapoint(parent.BusNumber,
+                                                         device.Address);
+                    row.ItemType = "Bus2Device";
+                    row.ItemUID = device.UID;
+                    row.Name = device.Name;
+                    row.DatapointNumber = baseDataPoint;
+                    row.DatapointType = Bus2DeviceType;
+                    InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+
+                    // Inputs && outputs
+                    InsertInputs(device.UID, baseDataPoint);
+                    InsertOutputs(device.UID, baseDataPoint);
+                }
+            }
+        }
+
+        private static void InsertOutputs(uint deviceUid, int baseDataPoint)
+        {
+            var outputs =
+                InternalDataStore.DataSet.LogicalDevice.Where(
+                    p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusOutput");
+            foreach (var output in outputs)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                row.ItemType = "Bus2IO";
+                row.ItemUID = output.UID;
+                row.Name = output.Name;
+                row.DatapointNumber = baseDataPoint + 5 + output.Number;
+                row.DatapointType = Bus2IoType;
+
+                // Separate LEDs
+                if (row.Name.ToUpper().IndexOf("LED", System.StringComparison.Ordinal) >= 0)
+                {
+                    row.DatapointNumber += 5;
+                }
+
+                InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+            }
+        }
+
+        private static void InsertInputs(uint deviceUid, int baseDataPoint)
+        {
+            var inputs =
+                InternalDataStore.DataSet.LogicalDevice.Where(
+                    p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusInput");
+            foreach (var input in inputs)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                row.ItemType = "Bus2IO";
+                row.ItemUID = input.UID;
+                row.Name = input.Name;
+                row.DatapointNumber = baseDataPoint + input.Number;
+                row.DatapointType = Bus2IoType;
+                InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+            }
+        }
+    }
+}
Index: ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs
===================================================================
--- ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs	(revision 0)
+++ ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs	(working copy)
@@ -0,0 +1,139 @@
+using Honeywell.MBEMEA.ConfigApp.Data;
+using System.Linq;
+
+namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints
+{
+    public static class DatapointNumberHelper
+    {
+        public const int PartitionStart = 1000;
+        public const int PartitionEnd = 1511;
+        public const int DetectorGroupStart = 1512;
+        public const int DetectorGroupEnd = 5607;
+        public const int DoorStart = 5608;
+        public const int DoorEnd = 6631;
+        public const int MacroStart = 6632;
+        public const int MacroEnd = 8631;
+        public const int WirelessDeviceBaseStart = 8640;
+        public const int WirelessDeviceBaseEnd = 9982; // 9999 - 17 because we need entire range for last device
+
+        public static int GetPartitionNumber(int number = 0)
+        {
+            int retVal = PartitionStart;
+            if (number != 0 && IsPartitionNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsPartitionNumberAvailable(retVal) && retVal <= PartitionEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetDetectorGroupNumber(int number = 0)
+        {
+            int retVal = DetectorGroupStart;
+            if (number != 0 && IsDetectorGroupNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsDetectorGroupNumberAvailable(retVal) && retVal <= DetectorGroupEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetMacroNumber(int number = 0)
+        {
+            int retVal = MacroStart;
+            if (number != 0 && IsMacroNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsMacroNumberAvailable(retVal) && retVal <= MacroEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetDoorNumber(int number = 0)
+        {
+            int retVal = DoorStart;
+            if (number != 0 && IsDoorNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsDoorNumberAvailable(retVal) && retVal <= DoorEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetWirelessDeviceBaseNumber(int number = 0)
+        {
+            int retVal = WirelessDeviceBaseStart;
+            if (number != 0 && IsWirelessDeviceBaseNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsWirelessDeviceBaseNumberAvailable(retVal) && retVal <= WirelessDeviceBaseEnd)
+            {
+                retVal += 17;
+            }
+            return retVal;
+        }
+
+
+
+        private static bool IsWirelessDeviceBaseNumberAvailable(int number)
+        {
+            bool retVal =
+                (InternalDataStore.DataSet.HWBus2Wireless4IOModule.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2WirelessSmokeDetector.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2WirelessViewguard.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number)
+                ) == 0
+                && number >= WirelessDeviceBaseStart && number <= WirelessDeviceBaseEnd && (number - WirelessDeviceBaseStart) % 17 == 0;
+            return retVal;
+        }
+
+        private static bool IsPartitionNumberAvailable(int number)
+        {
+            bool retVal =
+                InternalDataStore.DataSet.Partition.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 
+                && number >= PartitionStart && number <= PartitionEnd;
+            return retVal;
+        }
+
+        private static bool IsDetectorGroupNumberAvailable(int number)
+        {
+            bool retVal =
+                InternalDataStore.DataSet.DetectorGroup.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0
+                && number >= DetectorGroupStart && number <= DetectorGroupEnd;
+            return retVal;
+        }
+
+        private static bool IsMacroNumberAvailable(int number)
+        {
+            bool retVal =
+                InternalDataStore.DataSet.Macro.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0
+                && number >= MacroStart && number <= MacroEnd;
+            return retVal;
+        }
+
+        private static bool IsDoorNumberAvailable(int number)
+        {
+            bool retVal =
+                (
+                 InternalDataStore.DataSet.HWBus2DoorGuard.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2DoorControllerModule.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2Identkey3.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number)
+                ) == 0
+                && number >= DoorStart && number <= DoorEnd;
+            return retVal;
+        }
+
+    }
+}
Index: ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs
===================================================================
--- ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs	(revision 0)
+++ ConfigApp.Logic/Datapoints/Bus2DatapointHelper.cs	(working copy)
@@ -0,0 +1,129 @@
+using System.Linq;
+using Honeywell.MBEMEA.ConfigApp.Data;
+
+namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints
+{
+    public static class Bus2DatapointHelper
+    {
+        private const string Bus2DeviceType = "BUS2DEVICE";
+        private const string Bus2IoType = "BUS2IO";
+
+        /// <summary>
+        /// Method for saving BUS2 devices datapoint information
+        /// </summary>
+        public static void SaveBus2Devices()
+        {
+            //SaveBus22RelaisModules();
+            SaveBus2HwDevices();
+        }
+
+        /// <summary>
+        /// Helper method for defining base datapoint number of device
+        /// </summary>
+        /// <param name="busNumber">Number of BUS2 controller</param>
+        /// <param name="deviceAddress">Adderee of device on controller</param>
+        /// <returns>Datapoint number for device</returns>
+        private static int GetBaseDatapoint(int busNumber, int deviceAddress)
+        {
+            // Formula by Karsten Stock
+            return 10000 + ((busNumber - 1)*(17*64)) + (17*deviceAddress);
+        }
+
+        /// <summary>
+        /// Method for saving BUS2 2-Relay module
+        /// </summary>
+        private static void SaveBus22RelaisModules()
+        {
+            foreach (var device in InternalDataStore.DataSet.HWBus22RelaisInputModule)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.HardwareDeviceRow.ParentDeviceUID);
+                if (parent != null)
+                {
+                    int baseDataPoint = GetBaseDatapoint(parent.BusNumber,
+                                                         device.HardwareDeviceRow.Address);
+                    row.ItemType = "Bus2Device";
+                    row.ItemUID = device.UID;
+                    row.Name = device.HardwareDeviceRow.Name;
+                    row.DatapointNumber = baseDataPoint;
+                    row.DatapointType = Bus2DeviceType;
+                    InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+                
+                    // Inputs && outputs
+                    InsertInputs(device.UID, baseDataPoint);
+                    InsertOutputs(device.UID, baseDataPoint);
+                }
+            }
+        }
+
+        /// <summary>
+        /// Experimental method for saving all BUS2 hardware devices the same way
+        /// </summary>
+        private static void SaveBus2HwDevices()
+        {
+            var controllers = from p in InternalDataStore.DataSet.HWBus2BusController select p.UID;
+            var devices = InternalDataStore.DataSet.HardwareDevice.Where(p => !p.IsParentDeviceUIDNull() && controllers.Contains(p.ParentDeviceUID));
+            foreach (var device in devices)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                var parent = InternalDataStore.DataSet.HWBus2BusController.FirstOrDefault(p => p.UID == device.ParentDeviceUID);
+                if (parent != null)
+                {
+                    int baseDataPoint = GetBaseDatapoint(parent.BusNumber,
+                                                         device.Address);
+                    row.ItemType = "Bus2Device";
+                    row.ItemUID = device.UID;
+                    row.Name = device.Name;
+                    row.DatapointNumber = baseDataPoint;
+                    row.DatapointType = Bus2DeviceType;
+                    InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+
+                    // Inputs && outputs
+                    InsertInputs(device.UID, baseDataPoint);
+                    InsertOutputs(device.UID, baseDataPoint);
+                }
+            }
+        }
+
+        private static void InsertOutputs(uint deviceUid, int baseDataPoint)
+        {
+            var outputs =
+                InternalDataStore.DataSet.LogicalDevice.Where(
+                    p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusOutput");
+            foreach (var output in outputs)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                row.ItemType = "Bus2IO";
+                row.ItemUID = output.UID;
+                row.Name = output.Name;
+                row.DatapointNumber = baseDataPoint + 5 + output.Number;
+                row.DatapointType = Bus2IoType;
+
+                // Separate LEDs
+                if (row.Name.ToUpper().IndexOf("LED", System.StringComparison.Ordinal) >= 0)
+                {
+                    row.DatapointNumber += 5;
+                }
+
+                InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+            }
+        }
+
+        private static void InsertInputs(uint deviceUid, int baseDataPoint)
+        {
+            var inputs =
+                InternalDataStore.DataSet.LogicalDevice.Where(
+                    p => !p.IsClassTypeNull() && p.HardwareDeviceUID == deviceUid && p.ClassType == "ccBusInput");
+            foreach (var input in inputs)
+            {
+                var row = InternalDataStore.DataSet.DatapointNumbers.NewDatapointNumbersRow();
+                row.ItemType = "Bus2IO";
+                row.ItemUID = input.UID;
+                row.Name = input.Name;
+                row.DatapointNumber = baseDataPoint + input.Number;
+                row.DatapointType = Bus2IoType;
+                InternalDataStore.DataSet.DatapointNumbers.AddDatapointNumbersRow(row);
+            }
+        }
+    }
+}
Index: ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs
===================================================================
--- ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs	(revision 0)
+++ ConfigApp.Logic/Datapoints/DatapointNumberHelper.cs	(working copy)
@@ -0,0 +1,139 @@
+using Honeywell.MBEMEA.ConfigApp.Data;
+using System.Linq;
+
+namespace Honeywell.MBEMEA.ConfigApp.Logic.Datapoints
+{
+    public static class DatapointNumberHelper
+    {
+        public const int PartitionStart = 1000;
+        public const int PartitionEnd = 1511;
+        public const int DetectorGroupStart = 1512;
+        public const int DetectorGroupEnd = 5607;
+        public const int DoorStart = 5608;
+        public const int DoorEnd = 6631;
+        public const int MacroStart = 6632;
+        public const int MacroEnd = 8631;
+        public const int WirelessDeviceBaseStart = 8640;
+        public const int WirelessDeviceBaseEnd = 9982; // 9999 - 17 because we need entire range for last device
+
+        public static int GetPartitionNumber(int number = 0)
+        {
+            int retVal = PartitionStart;
+            if (number != 0 && IsPartitionNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsPartitionNumberAvailable(retVal) && retVal <= PartitionEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetDetectorGroupNumber(int number = 0)
+        {
+            int retVal = DetectorGroupStart;
+            if (number != 0 && IsDetectorGroupNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsDetectorGroupNumberAvailable(retVal) && retVal <= DetectorGroupEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetMacroNumber(int number = 0)
+        {
+            int retVal = MacroStart;
+            if (number != 0 && IsMacroNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsMacroNumberAvailable(retVal) && retVal <= MacroEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetDoorNumber(int number = 0)
+        {
+            int retVal = DoorStart;
+            if (number != 0 && IsDoorNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsDoorNumberAvailable(retVal) && retVal <= DoorEnd)
+            {
+                retVal++;
+            }
+            return retVal;
+        }
+
+        public static int GetWirelessDeviceBaseNumber(int number = 0)
+        {
+            int retVal = WirelessDeviceBaseStart;
+            if (number != 0 && IsWirelessDeviceBaseNumberAvailable(number))
+            {
+                return number;
+            }
+            while (!IsWirelessDeviceBaseNumberAvailable(retVal) && retVal <= WirelessDeviceBaseEnd)
+            {
+                retVal += 17;
+            }
+            return retVal;
+        }
+
+
+
+        private static bool IsWirelessDeviceBaseNumberAvailable(int number)
+        {
+            bool retVal =
+                (InternalDataStore.DataSet.HWBus2Wireless4IOModule.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2WirelessSmokeDetector.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2WirelessViewguard.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number)
+                ) == 0
+                && number >= WirelessDeviceBaseStart && number <= WirelessDeviceBaseEnd && (number - WirelessDeviceBaseStart) % 17 == 0;
+            return retVal;
+        }
+
+        private static bool IsPartitionNumberAvailable(int number)
+        {
+            bool retVal =
+                InternalDataStore.DataSet.Partition.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0 
+                && number >= PartitionStart && number <= PartitionEnd;
+            return retVal;
+        }
+
+        private static bool IsDetectorGroupNumberAvailable(int number)
+        {
+            bool retVal =
+                InternalDataStore.DataSet.DetectorGroup.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0
+                && number >= DetectorGroupStart && number <= DetectorGroupEnd;
+            return retVal;
+        }
+
+        private static bool IsMacroNumberAvailable(int number)
+        {
+            bool retVal =
+                InternalDataStore.DataSet.Macro.Count(p => !p.IsDatapointNumberNull() && p.DatapointNumber == number) == 0
+                && number >= MacroStart && number <= MacroEnd;
+            return retVal;
+        }
+
+        private static bool IsDoorNumberAvailable(int number)
+        {
+            bool retVal =
+                (
+                 InternalDataStore.DataSet.HWBus2DoorGuard.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2DoorControllerModule.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number) +
+                 InternalDataStore.DataSet.HWBus2Identkey3.Count(p => !p.IsDoorDatapointNumberNull() && p.DoorDatapointNumber == number)
+                ) == 0
+                && number >= DoorStart && number <= DoorEnd;
+            return retVal;
+        }
+
+    }
+}
Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorControllerModuleDetail.cs
===================================================================
--- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorControllerModuleDetail.cs	(revision 3381)
+++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorControllerModuleDetail.cs	(working copy)
@@ -3,6 +3,7 @@
 using DevExpress.XtraEditors.Controls;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 
 namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices
 {
Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorGuardDetail.cs
===================================================================
--- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorGuardDetail.cs	(revision 3381)
+++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2DoorGuardDetail.cs	(working copy)
@@ -3,6 +3,7 @@
 using DevExpress.XtraEditors.Controls;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 using Honeywell.MBEMEA.ConfigApp.Properties;
 
 namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices
Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2IdentKey3Detail.cs
===================================================================
--- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2IdentKey3Detail.cs	(revision 3381)
+++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2IdentKey3Detail.cs	(working copy)
@@ -3,6 +3,7 @@
 using DevExpress.XtraEditors.Controls;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 
 namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices
 {
Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2Wireless4IOModuleDetail.cs
===================================================================
--- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2Wireless4IOModuleDetail.cs	(revision 3381)
+++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2Wireless4IOModuleDetail.cs	(working copy)
@@ -8,6 +8,7 @@
 using DevExpress.XtraEditors;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 using Honeywell.MBEMEA.ConfigApp.Templates;
 using System.Diagnostics;
 
Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessSmokeDetectorDetail.cs
===================================================================
--- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessSmokeDetectorDetail.cs	(revision 3381)
+++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessSmokeDetectorDetail.cs	(working copy)
@@ -8,6 +8,7 @@
 using DevExpress.XtraEditors;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 using Honeywell.MBEMEA.ConfigApp.Templates;
 using System.Diagnostics;
 
Index: ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessViewguardDetail.cs
===================================================================
--- ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessViewguardDetail.cs	(revision 3381)
+++ ConfigApp/Views/Hardware/HardwareTreeDetails/HardwareDevices/Bus2WirelessViewguardDetail.cs	(working copy)
@@ -6,6 +6,7 @@
 using System.Diagnostics;
 using DevExpress.XtraEditors.Repository;
 using DevExpress.XtraEditors.Controls;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 
 namespace Honeywell.MBEMEA.ConfigApp.Views.Hardware.HardwareTreeDetails.HardwareDevices
 {
Index: ConfigApp/Views/SystemData/Macros/MacroViewNew.cs
===================================================================
--- ConfigApp/Views/SystemData/Macros/MacroViewNew.cs	(revision 3381)
+++ ConfigApp/Views/SystemData/Macros/MacroViewNew.cs	(working copy)
@@ -3,6 +3,7 @@
 using DevExpress.XtraLayout.Utils;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 using Honeywell.MBEMEA.ConfigApp.Templates;
 using System;
 using System.Collections.Generic;
Index: ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/DetectorGroupDetail.cs
===================================================================
--- ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/DetectorGroupDetail.cs	(revision 3381)
+++ ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/DetectorGroupDetail.cs	(working copy)
@@ -3,6 +3,7 @@
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Helper;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 using Honeywell.MBEMEA.ConfigApp.Templates;
 using System;
 using System.Data;
Index: ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/PartitionDetail.cs
===================================================================
--- ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/PartitionDetail.cs	(revision 3381)
+++ ConfigApp/Views/SystemData/Partitions/PartitionTreeDetails/PartitionDetail.cs	(working copy)
@@ -9,6 +9,7 @@
 using Honeywell.MBEMEA.Common;
 using Honeywell.MBEMEA.ConfigApp.Data;
 using Honeywell.MBEMEA.ConfigApp.Logic;
+using Honeywell.MBEMEA.ConfigApp.Logic.Datapoints;
 using Honeywell.MBEMEA.ConfigApp.Templates;
 
 namespace Honeywell.MBEMEA.ConfigApp.Views.SystemData.Partitions.PartitionTreeDetails

Zerion Mini Shell 1.0