ghy
Alejandro Acuña
2025-03-12 26319e4c5bfbee722c15b8e7ccca9b6127bb1cb8
ghy
8 files added
5 files modified
948 ■■■■■ changed files
svgDevicesTest/build/built-jar.properties 2 ●●● patch | view | raw | blame | history
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$MyTimerTask.class patch | view | raw | blame | history
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$SvgMocker.class patch | view | raw | blame | history
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class patch | view | raw | blame | history
svgDevicesTest/build/classes/M_Controller/M_ControllerBig.class patch | view | raw | blame | history
svgDevicesTest/build/classes/M_Controller/M_ControllerMap.class patch | view | raw | blame | history
svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerBig.class patch | view | raw | blame | history
svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerMap.class patch | view | raw | blame | history
svgDevicesTest/src/AAAMain/SvgDeviceStatusTest.java 6 ●●●● patch | view | raw | blame | history
svgDevicesTest/src/M_Controller/M_ControllerBig.java 585 ●●●●● patch | view | raw | blame | history
svgDevicesTest/src/M_Controller/M_ControllerMap.java 219 ●●●●● patch | view | raw | blame | history
svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerBig.java 68 ●●●●● patch | view | raw | blame | history
svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerMap.java 68 ●●●●● patch | view | raw | blame | history
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=
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$MyTimerTask.class
Binary files differ
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest$SvgMocker.class
Binary files differ
svgDevicesTest/build/classes/AAAMain/SvgDeviceStatusTest.class
Binary files differ
svgDevicesTest/build/classes/M_Controller/M_ControllerBig.class
Binary files differ
svgDevicesTest/build/classes/M_Controller/M_ControllerMap.class
Binary files differ
svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerBig.class
Binary files differ
svgDevicesTest/build/classes/M_Controller/mockers/M_ControllerMockerMap.class
Binary files differ
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),
svgDevicesTest/src/M_Controller/M_ControllerBig.java
New file
@@ -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");
        }
    }
}
svgDevicesTest/src/M_Controller/M_ControllerMap.java
New file
@@ -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));
        }
    }
}
svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerBig.java
New file
@@ -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;
    }
}
svgDevicesTest/src/M_Controller/mockers/M_ControllerMockerMap.java
New file
@@ -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;
    }
}