package AAAMain; import AAAMain.SvgDeviceStatusTest.SvgMocker; import AccessEnforcement.mockers.AccessEnforcementMockerMap; import Asf.mockers.AsfMockerAspectCommands; import Asf.mockers.AsfMockerAspectStatus; import Asf.mockers.AsfMockerMap; import Bollard.Mockers.BollardMockerAspectCommands; import Bollard.Mockers.BollardMockerAspectStatus; import Bollard.Mockers.BollardMockerMap; import Citilux.Mockers.CitiluxMockerMap; import Colors.Mockers.ColorsMocker; import Colors.Mockers.ColorsMockerGoa; import Colors.Mockers.ColorsMockerHide; import Colors.Mockers.ColorsMockerKielce; import Customs.mockers.CustomsMocker; import LightStuds.Mockers.LightStudsMockerAspectStatus; import LightStuds.Mockers.LightStudsMockerMap; import Meteo.Mockers.MeteoMockerMap; import Mocker.IDeviceMocker; import ParkingEquinsa.mockers.ParkingEquinsaMockerMap; import Pvv.mockers.PvvMockerAspectCommands; import Pvv.mockers.PvvMockerAspectStatus; import Pvv.mockers.PvvMockerMap; import RedEnforcement.mockers.RedEnforcementMockerMap; import Rotapanel.mockers.RotapanelActionMocker; import Rotapanel.mockers.RotapanelAspectMocker; import Rtz.mockers.RtzMockerMap; import Rtz.mockers.RtzMockerMapComplex; import Rtz.mockers.RtzMockerMapMiddle; import Rtz.mockers.RtzMockerSchematic; import SpeedEnforcement.mockers.SpeedEnforcementMockerMap; import VMSGeneral.mockers.VmsGeneralKielseMockerStatus; import Vehicle.mockers.VehicleMockerMapPaintedBorder; import Vehicle.mockers.VehicleMockerMapWhiteBorder; import VentilationZone.mockers.VentilationZoneMocker; import VentilationZone.mockers.VentilationZoneMockerHide; import art.library.gui.FlatGUI; import java.awt.Dimension; import java.awt.HeadlessException; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.util.Calendar; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import svgdevicestest.maps.SVG.PanelScaleVectorGraphics; import svgdevicestest.mock.DeviceMocker; public class SvgDeviceStatusTest { private static final SvgMocker SELECTED_MOCKER = SvgMocker.ParkingEquinsa; public static String mapPath; enum SvgMocker { AccessEnforcementMap(AccessEnforcementMockerMap.class), AsfMap(AsfMockerMap.class), AsfCommands(AsfMockerAspectCommands.class), AsfStatus(AsfMockerAspectStatus.class), BollardCommands(BollardMockerAspectCommands.class), BollardStatus(BollardMockerAspectStatus.class), BollardMap(BollardMockerMap.class), CitiluxMap(CitiluxMockerMap.class), ColorsKielce(ColorsMockerKielce.class), ColorsGoa(ColorsMockerGoa.class), ColorsMapHide(ColorsMockerHide.class), ColorsMapNoHide(ColorsMocker.class), CustomsMap(CustomsMocker.class), MeteoMap(MeteoMockerMap.class), PvvMap(PvvMockerMap.class), PvvStatus(PvvMockerAspectStatus.class), PvvCommands(PvvMockerAspectCommands.class), LightStudsStatus(LightStudsMockerAspectStatus.class), LightStudsMap(LightStudsMockerMap.class), ParkingEquinsa(ParkingEquinsaMockerMap.class), RedEnforcement(RedEnforcementMockerMap.class), RotapanelStatus(RotapanelAspectMocker.class), RotapanelCommands(RotapanelActionMocker.class), RTZMap(RtzMockerMap.class), RTZMapComplex(RtzMockerMapComplex.class), RTZMapMiddle(RtzMockerMapMiddle.class), RTZMockerSchematic(RtzMockerSchematic.class), SpeedEnforcementMap(SpeedEnforcementMockerMap.class), VehicleMapPaintedBorder(VehicleMockerMapPaintedBorder.class), VehicleMapWhiteBorder(VehicleMockerMapWhiteBorder.class), VentilationZoneNoHide(VentilationZoneMocker.class), VentilationZoneHide(VentilationZoneMockerHide.class), VMSGeneralKielse(VmsGeneralKielseMockerStatus.class); final Class clazz; SvgMocker(Class clazz) { this.clazz = clazz; } public DeviceMocker getMocker() { try { return (DeviceMocker) clazz.getConstructor().newInstance(); } catch (Exception ex) { throw new Error("Error instantiating class [" + clazz.getName() + "] | " + ex.getMessage()); } } } public static svgdevicestest.maps.SVG.MyPanelDeviceStatusSvg panelDeviceStatusGeneralSvg; public static svgdevicestest.maps.SVG.MyPanelDeviceCommandsSvg panelDeviceCommandsGeneralSvg; public static PanelScaleVectorGraphics panelScaleVectorGraphics; public static DeviceMocker deviceMocker; public static byte[] data; public static Class scriptClass = null; public static String getValue(String[] args, String parameter) { for (int i = 0; i < args.length; i++) { if (args[i].equalsIgnoreCase(parameter)) { return args[i + 1]; } } return null; } static File file = null; public static void main(String[] args) { try { try { mapPath = args[0]; } catch (Exception ex) { System.out.println("SVG path argument not found"); } initialise(); setupMockerFromEnum(); try{ initSvgPanel();} catch (Exception e){ e.printStackTrace(); } } catch (Exception e){ e.printStackTrace();} } private static void initSvgPanel() throws HeadlessException { panelDeviceStatusGeneralSvg = new svgdevicestest.maps.SVG.MyPanelDeviceStatusSvg(deviceMocker.device); panelDeviceCommandsGeneralSvg = new svgdevicestest.maps.SVG.MyPanelDeviceCommandsSvg(deviceMocker.device,deviceMocker.commands); JFrame frame = new JFrame(); if (deviceMocker instanceof IDeviceMocker) { frame.getContentPane().add(((IDeviceMocker) deviceMocker).isStatusMode() ? panelDeviceStatusGeneralSvg : panelDeviceCommandsGeneralSvg); } else { frame.getContentPane().add(panelDeviceStatusGeneralSvg); } frame.setSize(new Dimension(1024, 768)); frame.setVisible(true); Timer timer = new Timer(); timer.scheduleAtFixedRate(new MyTimerTask(deviceMocker), 0, 1000); } private static void initialise() throws IllegalAccessException, Exception, UnsupportedLookAndFeelException, ClassNotFoundException, InstantiationException { Calendar calendar1 = Calendar.getInstance(); calendar1.set(Calendar.HOUR_OF_DAY, 0); calendar1.set(Calendar.MINUTE, 0); calendar1.set(Calendar.SECOND, 0); calendar1.set(Calendar.MILLISECOND, 0); calendar1.add(Calendar.DATE, 1); UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); FlatGUI.initialise(); } public static void setupMockerFromEnum() { deviceMocker = SELECTED_MOCKER.getMocker(); setupFiles(deviceMocker); } private static void setupFiles(DeviceMocker mocker) { IDeviceMocker deviceMocker = (IDeviceMocker) mocker; scriptClass = deviceMocker.getScriptClass(); file = deviceMocker.getFile(); try { data = Files.readAllBytes(file.toPath()); } catch (Exception ex) { } } private static class MyTimerTask extends TimerTask { private DeviceMocker deviceMocker; private boolean active = false; public MyTimerTask(DeviceMocker deviceMocker) { this.deviceMocker = deviceMocker; } public void run() { try { data = Files.readAllBytes(file.toPath()); deviceMocker.updateDevice(!active); if (panelDeviceStatusGeneralSvg != null) { panelDeviceStatusGeneralSvg.reload(data); if (scriptClass != null) panelDeviceStatusGeneralSvg.reload(scriptClass); panelDeviceStatusGeneralSvg.reload(); } if (panelDeviceCommandsGeneralSvg != null) { panelDeviceCommandsGeneralSvg.reload(data); if (scriptClass != null) panelDeviceCommandsGeneralSvg.reload(scriptClass); panelDeviceCommandsGeneralSvg.reload(); } active = !active; } catch (IOException ex) { ex.printStackTrace(); } } } }