From 26319e4c5bfbee722c15b8e7ccca9b6127bb1cb8 Mon Sep 17 00:00:00 2001
From: Alejandro Acuña <alejandro.acuna@aluvisagrupo.com>
Date: Wed, 12 Mar 2025 13:54:13 +0000
Subject: [PATCH] ghy

---
 svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$SvgMocker.class      |    0 
 svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerBig.class |    0 
 svgDevicesTest/src/M_Controller/M_ControllerBig.java                          |  585 ++++++++++++++++++++++++++++++++++++
 svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerMap.class |    0 
 svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class                |    0 
 svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerBig.java            |   68 ++++
 svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$MyTimerTask.class    |    0 
 svgDevicesTest/build/classes/M_Controller/M_ControllerMap.class               |    0 
 svgDevicesTest/build/classes/M_Controller/M_ControllerBig.class               |    0 
 svgDevicesTest/src/M_Controller/M_ControllerMap.java                          |  219 +++++++++++++
 svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java                           |    6 
 svgDevicesTest/build/built-jar.properties                                     |    2 
 svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerMap.java            |   68 ++++
 13 files changed, 946 insertions(+), 2 deletions(-)

diff --git a/svgDevicesTest/build/built-jar.properties b/svgDevicesTest/build/built-jar.properties
index f5b593d..2848ab2 100644
--- a/svgDevicesTest/build/built-jar.properties
+++ b/svgDevicesTest/build/built-jar.properties
@@ -1,4 +1,4 @@
-#Wed, 08 Jan 2025 09:32:04 +0100
+#Wed, 26 Feb 2025 13:30:34 +0100
 
 
 D\:\\LocalBackup\\svgDevicesTest=
diff --git a/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$MyTimerTask.class b/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$MyTimerTask.class
index 0b423dd..0ebb13b 100644
--- a/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$MyTimerTask.class
+++ b/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$MyTimerTask.class
Binary files differ
diff --git a/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$SvgMocker.class b/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$SvgMocker.class
index 96dd8d3..b12b55d 100644
--- a/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$SvgMocker.class
+++ b/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$SvgMocker.class
Binary files differ
diff --git a/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class b/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class
index 20b9fcc..ed781a8 100644
--- a/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class
+++ b/svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class
Binary files differ
diff --git a/svgDevicesTest/build/classes/M_Controller/M_ControllerBig.class b/svgDevicesTest/build/classes/M_Controller/M_ControllerBig.class
new file mode 100644
index 0000000..a1e3958
--- /dev/null
+++ b/svgDevicesTest/build/classes/M_Controller/M_ControllerBig.class
Binary files differ
diff --git a/svgDevicesTest/build/classes/M_Controller/M_ControllerMap.class b/svgDevicesTest/build/classes/M_Controller/M_ControllerMap.class
new file mode 100644
index 0000000..5c4ed3d
--- /dev/null
+++ b/svgDevicesTest/build/classes/M_Controller/M_ControllerMap.class
Binary files differ
diff --git a/svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerBig.class b/svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerBig.class
new file mode 100644
index 0000000..5bb8492
--- /dev/null
+++ b/svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerBig.class
Binary files differ
diff --git a/svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerMap.class b/svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerMap.class
new file mode 100644
index 0000000..c4c739c
--- /dev/null
+++ b/svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerMap.class
Binary files differ
diff --git a/svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java b/svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java
index bb3441f..01903c4 100644
--- a/svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java
+++ b/svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java
@@ -16,6 +16,8 @@
 import Customs.mockers.CustomsMocker;
 import LightStuds.Mockers.LightStudsMockerAspectStatus;
 import LightStuds.Mockers.LightStudsMockerMap;
+import M_Controller.mockers.M_ControllerMockerBig;
+import M_Controller.mockers.M_ControllerMockerMap;
 import Meteo.Mockers.MeteoMockerMap;
 import Mocker.IDeviceMocker;
 import ParkingEquinsa.mockers.ParkingEquinsaMockerMap;
@@ -54,7 +56,7 @@
 public class SvgDeviceStatusTest
 {
     
-    private static final SvgMocker SELECTED_MOCKER = SvgMocker.RTZMapComplex;
+    private static final SvgMocker SELECTED_MOCKER = SvgMocker.M_Controller;
     
     public static String mapPath;
     
@@ -74,6 +76,8 @@
         ColorsMapNoHide(ColorsMocker.class),
         CustomsMap(CustomsMocker.class),
         MeteoMap(MeteoMockerMap.class),
+        M_Controller(M_ControllerMockerMap.class),
+        M_Controller_BIG(M_ControllerMockerBig.class),
         PvvMap(PvvMockerMap.class),
         PvvStatus(PvvMockerAspectStatus.class),
         PvvCommands(PvvMockerAspectCommands.class),
diff --git a/svgDevicesTest/src/M_Controller/M_ControllerBig.java b/svgDevicesTest/src/M_Controller/M_ControllerBig.java
new file mode 100644
index 0000000..9c17681
--- /dev/null
+++ b/svgDevicesTest/src/M_Controller/M_ControllerBig.java
@@ -0,0 +1,585 @@
+package M_Controller;
+
+
+import art.library.model.devices.DeviceCommands;
+import art.library.model.devices.DeviceGraphicsRuntime;
+import art.library.model.devices.DeviceStatus;
+import com.kitfox.svg.SVGDiagram;
+import com.kitfox.svg.SVGElement;
+
+public class M_ControllerBig extends DeviceGraphicsRuntime
+{
+
+    public M_ControllerBig(art.library.model.devices.Device device, SVGDiagram diagram)
+    {
+        super(device, diagram);
+    }
+
+    public M_ControllerBig(art.library.model.devices.Device device, art.library.model.devices.DeviceCommands commands, SVGDiagram diagram)
+    {
+        super(device, commands, diagram);
+    }
+
+    public void status()
+    {
+        try
+        {
+            art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();
+            art.library.model.devices.colors.controller.M.M_ControllerStatus controllerStatus = controller.getDeviceStatus();
+            if (controllerStatus.lsubcontroller.size() < 1)
+            {
+                paintNoStatusAvailable();
+            }
+            /* Subcontrollers */ for (int i = 0; i < controllerStatus.lsubcontroller.size(); i++)
+            {
+                try
+                {
+                    statusSubcontroller(controllerStatus.lsubcontroller.get(i).number);
+                } catch (Exception ex)
+                {
+                }
+            }
+        } catch (Exception e)
+        {
+        }
+    }
+
+    public void statusSubcontroller(int subcontroller)
+    {
+        art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();
+        art.library.model.devices.colors.controller.M.M_ControllerStatus controllerStatus = controller.getDeviceStatus();
+        art.library.model.devices.colors.controller.M.M_ControllerInformation controllerInformation = controller.getDeviceInformation();
+        art.library.model.devices.colors.controller.M.M_ControllerAlarms controllerAlarms = controller.getDeviceAlarms();
+        art.library.model.devices.colors.controller.M.M_ControllerRealtime controllerRealtime = controller.getDeviceRealtime();
+        art.library.model.devices.colors.controller.M.M_ControllerConfiguration controllerConfiguration = controller.getDeviceConfiguration();
+        art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller subcontrollerStatus = null;
+        art.library.model.devices.colors.controller.M.realtime.M_ControllerRealtimeSubcontroller subcontrollerRealtime = null;
+        art.library.model.devices.colors.controller.M.M_SubcontrollerConfiguration subcontrollerConfiguration = null;
+        if (controller.status != null)
+        {
+            subcontrollerStatus = controller.getDeviceStatus().getStatusSubcontroller(subcontroller);
+        }
+        if (controller.realtime != null)
+        {
+            subcontrollerRealtime = controller.getDeviceRealtime().getRealtimeSubcontroller(subcontroller);
+        }
+        if (controller.configuration != null)
+        {
+            subcontrollerConfiguration = controller.getDeviceConfiguration().getSubcontroller(subcontroller);
+        }
+        SVGElement thunderbolt = getElement("Thunderbolt");
+        SVGElement emergency = getElement("Emergency");
+        SVGElement lock = getElement("Lock");
+        SVGElement calendar = getElement("Calendar");
+        SVGElement run = getElement("Run");
+        SVGElement remote = getElement("Remote");
+        SVGElement background = getElement("Background");
+        SVGElement border = getElement("Border");
+        SVGElement ribbon = getElement("Ribbon");
+        SVGElement elapsed1 = getElement("Elapsed1");
+        SVGElement elapsed2 = getElement("Elapsed2");
+        /* Initialise */ setAttribute(thunderbolt, "fill-opacity", "1.0", 999);
+        setAttribute(emergency, "fill-opacity", "1.0", 999);
+        setAttribute(lock, "fill-opacity", "1.0", 999);
+        setAttribute(calendar, "fill-opacity", "1.0", 999);
+        setAttribute(run, "fill-opacity", "1.0", 999);
+        setAttribute(remote, "fill-opacity", "1.0", 999);
+        setAttribute(thunderbolt, "fill", "#804080", 999);
+        setAttribute(emergency, "fill", "#804080", 999);
+        setAttribute(lock, "fill", "#804080", 999);
+        setAttribute(calendar, "fill", "#804080", 999);
+        setAttribute(run, "fill", "#804080", 999);
+        setAttribute(remote, "fill", "#804080", 999);
+        setText("Text number", String.format("%05d", controllerInformation.number));
+        setText("Text information", "");
+        setText("Text offset", "");
+        setText("Text cycle", "");
+        setText("Text elapsed", "");
+        setAttribute(elapsed1, "display", "none");
+        setAttribute(elapsed2, "display", "none");
+        setAttribute(border, "stroke", "#800080");
+        setAttribute(border, "display", "inline");
+        setAttribute(border, "stroke-width", 6.5);
+        setAttribute(border, "stroke-opacity", 0.75);
+        setAttribute(ribbon, "stroke-opacity", 0.50);
+        setAttribute(ribbon, "stroke", "#FF80FF");
+        setAttribute(background, "fill", "#FF80FF");
+        switch (controllerStatus.status)
+        {
+            case DeviceStatus.STATUS_ONLINE:
+                break;
+            case DeviceStatus.STATUS_WARNING:
+                break;
+            case DeviceStatus.STATUS_ALARM:
+                break;
+            case DeviceStatus.STATUS_DISABLE:
+                setAttribute(background, "fill", "#404040");
+                setAttribute(ribbon, "stroke", "#404040");
+                setAttribute(border, "stroke", "#808080");
+                setAttribute(border, "display", "inline");
+                setAttribute(border, "stroke-width", 6.5);
+                setAttribute(border, "stroke-opacity", 1.0);
+                setAttribute(thunderbolt, "fill-opacity", "0.0", 999);
+                setAttribute(emergency, "fill-opacity", "0.0", 999);
+                setAttribute(lock, "fill-opacity", "0.0", 999);
+                setAttribute(calendar, "fill-opacity", "0.0", 999);
+                setAttribute(run, "fill-opacity", "0.0", 999);
+                setAttribute(remote, "fill-opacity", "0.0", 999);
+                return;
+            case DeviceStatus.STATUS_SIMULATION:
+                setAttribute(background, "fill", "#0000FF");
+                setAttribute(ribbon, "stroke", "#0000FF");
+                setAttribute(border, "stroke", "#000080");
+                setAttribute(border, "display", "inline");
+                setAttribute(border, "stroke-width", 6.5);
+                setAttribute(border, "stroke-opacity", 1.0);
+                break;
+            case DeviceStatus.STATUS_INVALID:
+            case DeviceStatus.STATUS_OFFLINE:
+            case DeviceStatus.STATUS_UNKNOWN:
+                setAttribute(background, "fill", "#FF00FF");
+                setAttribute(ribbon, "stroke", "#FF00FF");
+                setAttribute(border, "stroke", "#FF00FF");
+                setAttribute(border, "display", "inline");
+                setAttribute(border, "stroke-width", 6.5);
+                setAttribute(border, "stroke-opacity", 1.0);
+                return;
+        }
+        /* User control */ if ((subcontrollerStatus.userControlPlan == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES))
+        {
+            setAttribute(thunderbolt, "fill-opacity", "1.0", 999);
+            setAttribute(thunderbolt, "fill", "#0000FF", 999);
+        } else
+        {
+            setAttribute(thunderbolt, "fill-opacity", "0.15", 999);
+            setAttribute(thunderbolt, "fill", "#808080", 999);
+        }
+        /* Manual control */ if (subcontrollerStatus.localControl == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES)
+        {
+            setAttribute(lock, "fill-opacity", "1.0", 999);
+            setAttribute(lock, "fill", "#FF0000", 999);
+        } else if (subcontrollerStatus.localControl == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.NO)
+        {
+            setAttribute(lock, "fill-opacity", "0.15", 999);
+            setAttribute(lock, "fill", "#808080", 999);
+        }
+        /* Emergency */ if (subcontrollerStatus.emergency == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES)
+        {
+            setAttribute(emergency, "fill-opacity", "1.0", 999);
+            setAttribute(thunderbolt, "fill", "#FF0000", 999);
+        } else if (subcontrollerStatus.emergency == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.NO)
+        {
+            setAttribute(emergency, "fill-opacity", "0.15", 999);
+            setAttribute(emergency, "fill", "#808080", 999);
+        }
+        /* Plan selection */ switch (subcontrollerStatus.planSelection)
+        {
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER:
+            {
+                setAttribute(calendar, "fill-opacity", "0.15", 999);
+                setAttribute(calendar, "fill", "#808080", 999);
+                break;
+            }
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_TIMETABLE:
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_EXTERNAL_PLANS:
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_ICF:
+            {
+                setAttribute(calendar, "fill-opacity", "1.0", 999);
+                setAttribute(calendar, "fill", "#0000FF", 999);
+                break;
+            }
+        }
+        /* Computer */ if ((subcontrollerStatus.planSelection == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER) || (subcontrollerStatus.centralizedMode == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES))
+        {
+            setAttribute(remote, "fill-opacity", "1.0", 999);
+            setAttribute(remote, "fill", "#0000FF", 999);
+        } else if ((subcontrollerStatus.planSelection != art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER) && (subcontrollerStatus.centralizedMode != art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES))
+        {
+            setAttribute(remote, "fill-opacity", "0.15", 999);
+            setAttribute(remote, "fill", "#808080", 999);
+        }
+        /* Running */ if ((controllerStatus.groupsRealtime == art.library.model.devices.colors.controller.M.M_ControllerStatus.YES) || (controllerStatus.detectorsRealtime == art.library.model.devices.colors.controller.M.M_ControllerStatus.YES))
+        {
+            setAttribute(run, "fill-opacity", "1.0", 999);
+            setAttribute(run, "fill", "#0000FF", 999);
+        } else if ((controllerStatus.groupsRealtime == art.library.model.devices.colors.controller.M.M_ControllerStatus.NO) && (controllerStatus.detectorsRealtime == art.library.model.devices.colors.controller.M.M_ControllerStatus.NO))
+        {
+            setAttribute(run, "fill-opacity", "0.15", 999);
+            setAttribute(run, "fill", "#808080", 999);
+        }
+        /* Alarm */ double strokeopacity = Math.pow(2, controller.getDeviceAlarms().getServerityAlarm()) / 32;
+        if (controller.getDeviceAlarms().getServerityAlarm() > 0)
+        {
+            setAttribute(border, "display", "inline");
+            setAttribute(border, "stroke", "#FF0000");
+            setAttribute(border, "stroke-opacity", strokeopacity);
+            setAttribute(border, "stroke-width", 6.5 + (6.5 * strokeopacity));
+        } else
+        {
+            setAttribute(border, "stroke", "#808080");
+            setAttribute(border, "display", "inline");
+            setAttribute(border, "stroke-width", 6.5);
+            setAttribute(border, "stroke-opacity", 1.0);
+        }
+        /* Status */ switch (subcontrollerStatus.colorsMode)
+        {
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.COLORS_OFF:
+                setAttribute(background, "fill", "#808080");
+                setAttribute(ribbon, "stroke", "#808080");
+                setAttribute(elapsed2, "fill", "#808080");
+                setText("Text information", "OFF");
+                return;
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.COLORS_FLASHING:
+                java.util.Calendar calendardate = java.util.Calendar.getInstance();
+                calendardate.set(java.util.Calendar.MILLISECOND, 0);
+                long seconds = calendardate.getTimeInMillis() / 1000;
+                if ((seconds % 2) == 0)
+                {
+                    setAttribute(background, "fill", "#FFFF00");
+                    setAttribute(ribbon, "stroke", "#FFFF00");
+                    setAttribute(elapsed2, "fill", "#FFFF00");
+                } else
+                {
+                    setAttribute(background, "fill", "#808000");
+                    setAttribute(ribbon, "stroke", "#808000");
+                    setAttribute(elapsed2, "fill", "#808000");
+                }
+                setText("Text information", "Y^");
+                return;
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.COLORS_COLORS:
+                if (subcontrollerStatus.emergency == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES)
+                {
+                    setAttribute(background, "fill", "#FF8000");
+                    setAttribute(ribbon, "stroke", "#FF8000");
+                    setAttribute(elapsed2, "fill", "#FF8000");
+                } else if ((subcontrollerStatus.userControlManual == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES))
+                {
+                    setAttribute(background, "fill", "#0000FF");
+                    setAttribute(ribbon, "stroke", "#0000FF");
+                    setAttribute(elapsed2, "fill", "#0000FF");
+                } else if (subcontrollerStatus.localControl == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES)
+                {
+                    setAttribute(background, "fill", "#0000FF");
+                    setAttribute(ribbon, "stroke", "#0000FF");
+                    setAttribute(elapsed2, "fill", "#0000FF");
+                } else
+                {
+                    setAttribute(background, "fill", "#00FF00");
+                    setAttribute(ribbon, "stroke", "#00FF00");
+                    setAttribute(elapsed2, "fill", "#00FF00");
+                }
+                break;
+        }
+        /* State, cycle */ art.library.model.devices.colors.controller.M.configuration.M_Plan plan = null;
+        if (subcontrollerStatus.plan > 0)
+        {
+            try
+            {
+                plan = subcontrollerConfiguration.getMPlan(subcontrollerRealtime.plan);
+            } catch (Exception e)
+            {
+            }
+        } else
+        {
+            plan = subcontrollerStatus.recordablePlan;
+        }
+        if (plan != null)
+        {
+            String information = "";
+            switch (subcontrollerStatus.operationMode)
+            {
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.OPERATIONMODE_FIXED:
+                    information = "F";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.OPERATIONMODE_SEMIACTUATED:
+                    information = "S";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.OPERATIONMODE_ACTUATED:
+                    information = "A";
+                    break;
+            }
+            information = information + plan.number;
+            switch (subcontrollerStatus.planSelection)
+            {
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_TIMETABLE:
+                    information = information + "t";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_EXTERNAL_PLANS:
+                    information = information + "e";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_ICF:
+                    information = information + "i";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER:
+                    information = information + "c";
+                    break;
+            }
+            switch (subcontrollerStatus.planSelectionComputer)
+            {
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_MACRO:
+                    information = information + "";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_PLAN_SELECTION:
+                    information = information + "+";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_PLAN_GENERATION:
+                    information = information + "+";
+                    break;
+                case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.PLANSELECTION_COMPUTER_ADAPTATIVE:
+                    information = information + "+";
+                    break;
+            }
+            setText("Text information", information);
+            if (plan.offset > 0)
+            {
+                setText("Text offset", "" + plan.offset);
+            } else
+            {
+                setText("Text offset", "");
+            }
+            setText("Text cycle", "" + plan.cycleTime);
+            if (subcontrollerRealtime != null)
+            {
+                try
+                {
+                    String text = subcontrollerRealtime.phase + ":" + subcontrollerRealtime.cycle;
+                    switch (subcontrollerRealtime.adjust)
+                    {
+                        case art.library.model.devices.colors.controller.M.realtime.M_ControllerRealtimeSubcontroller.ADJUST_POSITIVE:
+                            text = text + "+";
+                            break;
+                        case art.library.model.devices.colors.controller.M.realtime.M_ControllerRealtimeSubcontroller.ADJUST_NEGATIVE:
+                            text = text + "-";
+                            break;
+                    }
+                    setText("Text elapsed", text);
+                    setAttribute(elapsed1, "display", "inline");
+                    setAttribute(elapsed2, "display", "inline");
+                    int elapsedWidth = getAttributeInteger(elapsed1, "width") - 2;
+                    float ratio = (float) subcontrollerRealtime.cycle / (float) plan.cycleTime;
+                    setAttribute(elapsed2, "width", (elapsedWidth * Math.min(1.0f, ratio)));
+                    update(elapsed2);
+                } catch (Exception ex)
+                {
+                }
+            }
+            
+           
+        }
+        
+         if (subcontrollerStatus.userControlPlan > 0)
+            {
+                setAttribute(border, "stroke", "#0000FF");
+                  setAttribute(border, "stroke-width", 10.5);
+            }
+    }
+
+    public void paintNoStatusAvailable()
+    {
+        art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();
+        SVGElement thunderbolt = getElement("Thunderbolt");
+        SVGElement emergency = getElement("Emergency");
+        SVGElement lock = getElement("Lock");
+        SVGElement calendar = getElement("Calendar");
+        SVGElement run = getElement("Run");
+        SVGElement remote = getElement("Remote");
+        SVGElement background = getElement("Background");
+        SVGElement border = getElement("Border");
+        SVGElement ribbon = getElement("Ribbon");
+        SVGElement elapsed1 = getElement("Elapsed1");
+        SVGElement elapsed2 = getElement("Elapsed2");
+        /* Initialise */ setAttribute(thunderbolt, "fill-opacity", "1.0", 999);
+        setAttribute(emergency, "fill-opacity", "1.0", 999);
+        setAttribute(lock, "fill-opacity", "1.0", 999);
+        setAttribute(calendar, "fill-opacity", "1.0", 999);
+        setAttribute(run, "fill-opacity", "1.0", 999);
+        setAttribute(remote, "fill-opacity", "1.0", 999);
+        setAttribute(thunderbolt, "fill", "#804080", 999);
+        setAttribute(emergency, "fill", "#804080", 999);
+        setAttribute(lock, "fill", "#804080", 999);
+        setAttribute(calendar, "fill", "#804080", 999);
+        setAttribute(run, "fill", "#804080", 999);
+        setAttribute(remote, "fill", "#804080", 999);
+        setText("Text number", String.format("%05d", controller.getDeviceInformation().number));
+        setText("Text information", "");
+        setText("Text offset", "");
+        setText("Text cycle", "");
+        setText("Text elapsed", "");
+        setAttribute(elapsed1, "display", "none");
+        setAttribute(elapsed2, "display", "none");
+        setAttribute(ribbon, "stroke-opacity", 0.50);
+        setAttribute(background, "fill", "#FF00FF");
+        setAttribute(ribbon, "stroke", "#FF00FF");
+        setAttribute(border, "stroke", "#FF00FF");
+        setAttribute(border, "display", "inline");
+        setAttribute(border, "stroke-width", 6.5);
+        setAttribute(border, "stroke-opacity", 1.0);
+    }
+
+    public void commands()
+    {
+        SVGElement thunderbolt = getElement("Thunderbolt");
+        SVGElement emergency = getElement("Emergency");
+        SVGElement lock = getElement("Lock");
+        SVGElement calendar = getElement("Calendar");
+        SVGElement run = getElement("Run");
+        SVGElement remote = getElement("Remote");
+        SVGElement background = getElement("Background");
+        SVGElement border = getElement("Border");
+        SVGElement ribbon = getElement("Ribbon");
+        SVGElement elapsed1 = getElement("Elapsed1");
+        SVGElement elapsed2 = getElement("Elapsed2");
+        try
+        {
+            setAttribute(thunderbolt, "display", "none");
+            setAttribute(emergency, "display", "none");
+            setAttribute(lock, "display", "none");
+            setAttribute(calendar, "display", "none");
+            setAttribute(run, "display", "none");
+            setAttribute(remote, "display", "none");
+            setAttribute(ribbon, "display", "none");
+            setAttribute(elapsed1, "display", "none");
+            setAttribute(elapsed2, "display", "none");
+            setText("Text number", "");
+            setText("Text information", "");
+            setText("Text offset", "");
+            setText("Text cycle", "");
+            setText("Text elapsed", "");
+            DeviceCommands deviceCommands = getDeviceCommands();
+            art.library.model.devices.colors.controller.M.M_ControllerCommands commands = (art.library.model.devices.colors.controller.M.M_ControllerCommands) deviceCommands;
+            art.library.model.devices.colors.controller.M.M_ControllerInformation controllerInformation = (art.library.model.devices.colors.controller.M.M_ControllerInformation) getDevice().getDeviceInformation();
+            String color = "#0000FF";
+            if (!deviceCommands.isEmpty())
+            {
+                setText("Text number", String.format("%05d", controllerInformation.number));
+                String textInformation = "";
+                switch (commands.colorsMode)
+                {
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.COLORS_OFF:
+                        color = "#808080";
+                        setAttribute(background, "fill", "#808080");
+                        setAttribute(border, "stroke", "#606060");
+                        setAttribute(ribbon, "stroke", "#808080");
+                        setAttribute("Text information", "fill", "#606060");
+                        break;
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.COLORS_FLASHING:
+                        color = "#7C7C00";
+                        setAttribute(background, "fill", "#FFFF00");
+                        setAttribute(border, "stroke", "#7C7C00");
+                        setAttribute(ribbon, "stroke", "#FFFF00");
+                        setAttribute("Text information", "fill", "#7C7C00");
+                        break;
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.COLORS_COLORS:
+                        color = "#007C00";
+                        setAttribute(background, "fill", "#00FF00");
+                        setAttribute(border, "stroke", "#007C00");
+                        setAttribute(ribbon, "stroke", "#00FF00");
+                        setAttribute("Text information", "fill", "#007C00");
+                        break;
+                    default:
+                        color = "#007C00";
+                        setAttribute(background, "fill", "#00FF00");
+                        setAttribute(border, "stroke", "#007C00");
+                        setAttribute(ribbon, "stroke", "#00FF00");
+                        setAttribute("Text information", "fill", "#007C00");
+                        break;
+                }
+                switch (commands.operationMode)
+                {
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.OPERATIONMODE_FIXED:
+                        textInformation = textInformation + "F";
+                        break;
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.OPERATIONMODE_ACTUATED:
+                        textInformation = textInformation + "A";
+                        break;
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.OPERATIONMODE_SEMIACTUATED:
+                        textInformation = textInformation + "S";
+                        break;
+                }
+                if (commands.userControlPlan == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_YES)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(thunderbolt, "display", "inline");
+                    setAttribute(thunderbolt, "fill-opacity", "1.0", 999);
+                    setAttribute(thunderbolt, "fill", color, 999);
+                } else if (commands.userControlPlan == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_NO)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(thunderbolt, "display", "inline");
+                    setAttribute(thunderbolt, "fill-opacity", "1.0", 999);
+                    setAttribute(thunderbolt, "fill", "#808080", 999);
+                }
+                if (commands.localPlan > 0)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(calendar, "display", "inline");
+                    setAttribute(calendar, "fill-opacity", "1.0", 999);
+                    setAttribute(calendar, "fill", color, 999);
+                }
+                if (commands.emergency == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_YES)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(emergency, "display", "inline");
+                    setAttribute(emergency, "fill-opacity", "1.0", 999);
+                    setAttribute(emergency, "fill", color, 999);
+                } else if (commands.emergency == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_NO)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(emergency, "display", "inline");
+                    setAttribute(emergency, "fill-opacity", "1.0", 999);
+                    setAttribute(emergency, "fill", "#808080", 999);
+                }
+                if (commands.realtime == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_ENABLED)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(run, "display", "inline");
+                    setAttribute(run, "fill-opacity", "1.0", 999);
+                    setAttribute(run, "fill", color, 999);
+                } else if (commands.realtime == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_DISABLED)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(run, "display", "inline");
+                    setAttribute(run, "fill-opacity", "1.0", 999);
+                    setAttribute(run, "fill", "#808080", 999);
+                }
+                if (commands.userControlManual == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_YES)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(lock, "display", "inline");
+                    setAttribute(lock, "fill-opacity", "1.0", 999);
+                    setAttribute(lock, "fill", color, 999);
+                } else if (commands.userControlManual == art.library.model.devices.colors.controller.M.M_ControllerCommands.CONDITION_NO)
+                {
+                    setAttribute(ribbon, "display", "inline");
+                    setAttribute(lock, "display", "inline");
+                    setAttribute(lock, "fill-opacity", "1.0", 999);
+                    setAttribute(lock, "fill", "#808080", 999);
+                }
+                if (commands.localPlan > 0)
+                {
+                    textInformation = textInformation + "P" + commands.localPlan;
+                }
+                if (commands.recordablePlan != null)
+                {
+                    textInformation = textInformation + "P0St" + commands.recordablePlan.structure;
+                    setText("Text offset", "" + commands.recordablePlan.offset);
+                    setText("Text cycle", "" + commands.recordablePlan.getCycleTime());
+                }
+                setText("Text information", textInformation);
+            } else
+            {
+                setText("Text information", String.format("%05d", controllerInformation.number));
+                setAttribute("Text information", "fill", "#00007C");
+                setAttribute(background, "fill", "#0000FF");
+                setAttribute(border, "stroke", "#00007C");
+            }
+        } catch (Exception e)
+        {
+            setText("Text information", String.format("%05d", device.getDeviceInformation().number));
+            setAttribute("Text information", "fill", "#00007C");
+            setAttribute(background, "fill", "#0000FF");
+            setAttribute(border, "stroke", "#00007C");
+        }
+    }
+}
+ 
\ No newline at end of file
diff --git a/svgDevicesTest/src/M_Controller/M_ControllerMap.java b/svgDevicesTest/src/M_Controller/M_ControllerMap.java
new file mode 100644
index 0000000..f17b24c
--- /dev/null
+++ b/svgDevicesTest/src/M_Controller/M_ControllerMap.java
@@ -0,0 +1,219 @@
+package M_Controller;
+
+
+import art.library.model.devices.DeviceCommands;
+import art.library.model.devices.DeviceGraphicsRuntime;
+import art.library.model.devices.DeviceStatus;
+import com.kitfox.svg.SVGDiagram;
+import com.kitfox.svg.SVGElement;
+
+public class M_ControllerMap extends DeviceGraphicsRuntime
+{
+
+    public M_ControllerMap(art.library.model.devices.Device device, SVGDiagram diagram)
+    {
+        super(device, diagram);
+    }
+
+    public M_ControllerMap(art.library.model.devices.Device device, art.library.model.devices.DeviceCommands commands, SVGDiagram diagram)
+    {
+        super(device, commands, diagram);
+    }
+
+    public void status()
+    {
+        try
+        {
+            art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();
+            art.library.model.devices.colors.controller.M.M_ControllerInformation controllerInformation = controller.getDeviceInformation();
+            SVGElement background = getElement("Background");
+            SVGElement border = getElement("Border");
+            SVGElement alarm = getElement("Alarm");
+            SVGElement icon = getElement("Icon");
+            /* Initialise */ setText("Text number", String.format("%05d", controllerInformation.number));
+            setAttribute(background, "fill", "#00FF00");
+            setAttribute(border, "stroke", "#008000");
+            setAttribute(alarm, "display", "none");
+            setAttribute(icon, "fill", "#008000", 999);
+            /* Alarm */ art.library.model.devices.colors.controller.M.M_ControllerStatus controllerStatus = controller.getDeviceStatus();
+            if (controllerStatus.lsubcontroller.size() < 1)
+            {
+                paintNoStatusAvailable();
+            }
+            /* Subcontrollers */ for (int i = 0; i < controllerStatus.lsubcontroller.size(); i++)
+            {
+                statusSubcontroller(controllerStatus.lsubcontroller.get(i).number);
+            }
+        } catch (Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    public void statusSubcontroller(int subcontroller)
+    {
+        art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();
+        art.library.model.devices.colors.controller.M.M_ControllerInformation controllerInformation = controller.getDeviceInformation();
+        art.library.model.devices.colors.controller.M.M_ControllerStatus controllerStatus = controller.getDeviceStatus();
+        art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller subcontrollerStatus = null;
+        art.library.model.devices.colors.controller.M.realtime.M_ControllerRealtimeSubcontroller subcontrollerRealtime = null;
+        art.library.model.devices.colors.controller.M.M_SubcontrollerConfiguration subcontrollerConfiguration = null;
+        if (controller.status != null)
+        {
+            subcontrollerStatus = controller.getDeviceStatus().getStatusSubcontroller(subcontroller);
+        }
+        if (controller.realtime != null)
+        {
+            subcontrollerRealtime = controller.getDeviceRealtime().getRealtimeSubcontroller(subcontroller);
+        }
+        if (controller.configuration != null)
+        {
+            subcontrollerConfiguration = controller.getDeviceConfiguration().getSubcontroller(subcontroller);
+        }
+        SVGElement background = getElement("Background");
+        SVGElement border = getElement("Border");
+        SVGElement alarm = getElement("Alarm");
+        SVGElement icon = getElement("Icon");
+        /* Initialise */ setText("Text number", String.format("%05d", controllerInformation.number));
+        setAttribute(background, "fill", "#FF00FF");
+        setAttribute(border, "stroke", "#800080");
+        setAttribute(border, "stroke-width", 0.75);
+        setAttribute(alarm, "display", "none");
+        setAttribute(icon, "fill", "#800080", 999);
+        /* Alarm */ double strokeopacity = Math.pow(2, controller.getDeviceAlarms().getServerityAlarm()) / 32;
+        if (controller.getDeviceAlarms().getServerityAlarm() > 0)
+        {
+            setAttribute(alarm, "stroke", "#FF0000");
+            setAttribute(alarm, "stroke-opacity", strokeopacity);
+            setAttribute(alarm, "display", "inline");
+        }
+        /* Status */ switch (subcontrollerStatus.colorsMode)
+        {
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.COLORS_OFF:
+                setAttribute(background, "fill", "#808080");
+                setAttribute(icon, "fill", "#404040");
+                setAttribute(border, "stroke", "#404040");
+                return;
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.COLORS_FLASHING:
+                setAttribute(background, "fill", "#FFFF00");
+                setAttribute(icon, "fill", "#808000");
+                setAttribute(border, "stroke", "#808000");
+                return;
+            case art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.COLORS_COLORS:
+                if (subcontrollerStatus.emergency == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES)
+                {
+                    setAttribute(background, "fill", "#FF8000");
+                    setAttribute(icon, "fill", "#804000");
+                    setAttribute(border, "stroke", "#804000");
+                } else if ((subcontrollerStatus.userControlManual == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES))
+                {
+                    setAttribute(background, "fill", "#0000FF");
+                    setAttribute(icon, "fill", "#000080");
+                    setAttribute(border, "stroke", "#000080");
+                } else if (subcontrollerStatus.localControl == art.library.model.devices.colors.controller.M.M_ControllerStatusSubcontroller.YES)
+                {
+                    setAttribute(background, "fill", "#0000FF");
+                    setAttribute(icon, "fill", "#000080");
+                    setAttribute(border, "stroke", "#000080");
+                } else
+                {
+                    setAttribute(background, "fill", "#00FF00");
+                    setAttribute(icon, "fill", "#008000");
+                    setAttribute(border, "stroke", "#008000");
+                }
+                break;
+        }
+        
+        if(subcontrollerStatus.userControlPlan > 0)
+        {
+               setAttribute(border, "stroke", "#0000FF");
+                setAttribute(border, "stroke-width", 1.5);
+        }
+       
+        if (controller.getStatus() == DeviceStatus.STATUS_OFFLINE)
+        {
+            setAttribute(background, "fill", "#FF00FF");
+            setAttribute(icon, "fill", "#7C007C");
+            setAttribute(border, "stroke", "#7C007C");
+            setAttribute(alarm, "display", "none");
+        } else if (controller.getStatus() == DeviceStatus.STATUS_DISABLE)
+        {
+            setAttribute(background, "fill", "#404040");
+            setAttribute(icon, "fill", "#404040");
+            setAttribute(border, "stroke", "#808080");
+            setAttribute(alarm, "display", "none");
+        }
+    }
+
+    public void paintNoStatusAvailable()
+    {
+        SVGElement background = getElement("Background");
+        SVGElement border = getElement("Border");
+        SVGElement alarm = getElement("Alarm");
+        SVGElement icon = getElement("Icon");
+        setText("Text number", String.format("%05d", getDevice().getDeviceInformation().number));
+        setAttribute(background, "fill", "#FF00FF");
+        setAttribute(alarm, "display", "none");
+        setAttribute(icon, "fill", "#7C007C");
+        setAttribute(border, "stroke", "#7C007C");
+    }
+
+    public void commands()
+    {
+        SVGElement background = getElement("Background");
+        SVGElement border = getElement("Border");
+        SVGElement alarm = getElement("Alarm");
+        SVGElement icon = getElement("Icon");
+        try
+        {
+            art.library.model.devices.colors.controller.M.M_Controller controller = (art.library.model.devices.colors.controller.M.M_Controller) getDevice();
+            art.library.model.devices.colors.controller.M.M_ControllerInformation controllerInformation = controller.getDeviceInformation();
+            art.library.model.devices.colors.controller.M.M_ControllerCommands commands = (art.library.model.devices.colors.controller.M.M_ControllerCommands) getDeviceCommands();
+            setAttribute(background, "fill", "#FF00FF");
+            setAttribute(border, "stroke", "#800080");
+            setAttribute(alarm, "display", "none");
+            setAttribute(icon, "fill", "#800080", 999);
+            setText("Text number", String.format("%05d", controllerInformation.number));
+            DeviceCommands deviceCommands = getDeviceCommands();
+            if (!deviceCommands.isEmpty())
+            {
+                switch (commands.colorsMode)
+                {
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.COLORS_OFF:
+                        setAttribute(background, "fill", "#808080");
+                        setAttribute(icon, "fill", "#404040");
+                        setAttribute(border, "stroke", "#404040");
+                        break;
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.COLORS_FLASHING:
+                        setAttribute(background, "fill", "#FFFF00");
+                        setAttribute(icon, "fill", "#808000");
+                        setAttribute(border, "stroke", "#808000");
+                        break;
+                    case art.library.model.devices.colors.controller.M.M_ControllerCommands.COLORS_COLORS:
+                        setAttribute(background, "fill", "#00FF00");
+                        setAttribute(icon, "fill", "#008000");
+                        setAttribute(border, "stroke", "#008000");
+                        break;
+                    default:
+                        setAttribute(background, "fill", "#00FF00");
+                        setAttribute(icon, "fill", "#008000");
+                        setAttribute(border, "stroke", "#008000");
+                        break;
+                }
+            } else
+            {
+                setAttribute(background, "fill", "#0000FF");
+                setAttribute(icon, "fill", "#000080");
+                setAttribute(border, "stroke", "#000080");
+            }
+        } catch (Exception e)
+        {
+            setAttribute(background, "fill", "#0000FF");
+            setAttribute(border, "stroke", "#000080");
+            setAttribute(alarm, "display", "none");
+            setAttribute(icon, "fill", "#000080", 999);
+            setText("Text number", String.format("%05d", device.getDeviceInformation().number));
+        }
+    }
+}
+ 
\ No newline at end of file
diff --git a/svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerBig.java b/svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerBig.java
new file mode 100644
index 0000000..a92ed27
--- /dev/null
+++ b/svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerBig.java
@@ -0,0 +1,68 @@
+package M_Controller.mockers;
+
+import M_Controller.M_ControllerBig;
+import Mocker.IDeviceMocker;
+import art.library.interop.serialization.Serialization;
+import art.library.interop.serialization.SerializationException;
+import art.library.model.devices.colors.controller.M.M_Controller;
+import java.io.File;
+import svgdevicestest.mock.*;
+
+public class M_ControllerMockerBig extends DeviceMocker implements IDeviceMocker
+{
+
+   public M_ControllerMockerBig() throws SerializationException 
+    {
+        super(new M_Controller());
+    }
+
+    public M_ControllerMockerBig getMocker() 
+    {
+        return this;
+    }
+
+    @Override
+    public void updateDevice(boolean active) 
+    {
+        M_Controller controller = (M_Controller)device;
+        
+       try
+       {
+           M_Controller mock = (M_Controller)Serialization.deserialize(M_Controller.class, new File("C:\\Users\\Konstantin\\Desktop\\junction.txt"));
+           int i = 0;
+           
+           controller.status = mock.status;
+           controller.information = mock.information;
+           controller.alarms = mock.alarms;
+           controller.realtime = mock.realtime;
+           controller.graphics = mock.graphics;
+           controller.configuration = mock.configuration;
+           
+           controller.getDeviceStatus().getStatusSubcontroller().userControlPlan = 1;
+       
+       } 
+       catch (SerializationException ex)
+       {
+           int i = 0;
+       }
+        
+    }
+
+    @Override
+    public String getFilePath() 
+    {
+        return "C:\\Users\\Konstantin\\Desktop\\controller\\Controller_big.svg";
+    }
+
+    @Override
+    public boolean isStatusMode()
+    {
+        return true;
+    }
+
+    @Override
+    public Class getScriptClass()
+    {
+        return M_ControllerBig.class;
+    }
+}
diff --git a/svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerMap.java b/svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerMap.java
new file mode 100644
index 0000000..9a89ec2
--- /dev/null
+++ b/svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerMap.java
@@ -0,0 +1,68 @@
+package M_Controller.mockers;
+
+import M_Controller.M_ControllerMap;
+import Mocker.IDeviceMocker;
+import art.library.interop.serialization.Serialization;
+import art.library.interop.serialization.SerializationException;
+import art.library.model.devices.colors.controller.M.M_Controller;
+import java.io.File;
+import svgdevicestest.mock.*;
+
+public class M_ControllerMockerMap extends DeviceMocker implements IDeviceMocker
+{
+
+   public M_ControllerMockerMap() throws SerializationException 
+    {
+        super(new M_Controller());
+    }
+
+    public M_ControllerMockerMap getMocker() 
+    {
+        return this;
+    }
+
+    @Override
+    public void updateDevice(boolean active) 
+    {
+        M_Controller controller = (M_Controller)device;
+        
+       try
+       {
+           M_Controller mock = (M_Controller)Serialization.deserialize(M_Controller.class, new File("C:\\Users\\Konstantin\\Desktop\\junction.txt"));
+           int i = 0;
+           
+           controller.status = mock.status;
+           controller.information = mock.information;
+           controller.alarms = mock.alarms;
+           controller.realtime = mock.realtime;
+           controller.graphics = mock.graphics;
+           controller.configuration = mock.configuration;
+           
+           controller.getDeviceStatus().getStatusSubcontroller().userControlPlan = 1;
+       
+       } 
+       catch (SerializationException ex)
+       {
+           int i = 0;
+       }
+        
+    }
+
+    @Override
+    public String getFilePath() 
+    {
+        return "C:\\Users\\Konstantin\\Desktop\\Controller.svg";
+    }
+
+    @Override
+    public boolean isStatusMode()
+    {
+        return true;
+    }
+
+    @Override
+    public Class getScriptClass()
+    {
+        return M_ControllerMap.class;
+    }
+}

--
Gitblit v1.10.0