package art.servers.transactionsserver.model.alarms; import art.library.interop.InteropParameters; import art.library.interop.InteropResponse; import art.library.interop.serialization.Serialization; import art.library.interop.serialization.SerializationException; import art.library.model.devices.Device; import art.library.model.devices.deepblue.DeepblueSensor; import art.library.model.devices.deepblue.DeepblueSensorAlarms; import art.library.model.devices.geographicarea.GeographicArea; import art.library.model.devices.geographicarea.GeographicAreaAlarms; import art.library.model.devices.user.User; import art.library.model.devices.user.UserAlarmConfiguration; import art.library.model.devices.vehicle.Vehicle; import art.library.model.devices.vehicle.VehicleAlarms; import art.library.model.devices.vehicle.VehicleInformation; import art.library.model.devices.vehicle.VehiclePosition; import art.library.model.devices.vehicle.VehicleStatus; import art.library.model.transactions.alarms.AlarmInformation; import art.library.model.transactions.alarms.Alarms; import art.library.utils.resources.Resources; import art.servers.transactionsserver.Shared; import java.io.File; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; public class ModelAlarms { public ModelAlarms() throws Exception { } private List getDevicesSimulation() { List ldevice = new ArrayList<>(); Vehicle v = new Vehicle("0010000"); v.status = new VehicleStatus(); VehicleStatus status = v.getDeviceStatus(); VehicleInformation information = v.getDeviceInformation(); status.position = new VehiclePosition(); status.position.latitude = 41.5407268317586; status.position.longitude = 2.435527592897415; information.latitude = status.position.latitude; information.longitude = status.position.longitude; //v.setAlarm("alarm_offline", 0); information.ISSI = "0010000"; information.group = "Police"; information.type = "Vehicle"; information.symbol = "Police car"; information.mnemonic = information.ISSI; information.name = "Vehicle " + v.getIdentifier(); ldevice.add(v); v = new Vehicle("0010001"); v.status = new VehicleStatus(); status = v.getDeviceStatus(); information = v.getDeviceInformation(); status.position = new VehiclePosition(); status.position.latitude = 41.54072281657454; status.position.longitude = 2.4358856678009033; information.latitude = status.position.latitude; information.longitude = status.position.longitude; v.setAlarm("alarm_simulated", System.currentTimeMillis()); information.ISSI = "0010001"; information.group = "Police"; information.type = "Vehicle"; information.symbol = "Police car"; information.mnemonic = information.ISSI; information.name = "Vehicle " + v.getIdentifier(); ldevice.add(v); v = new Vehicle("0010002"); v.status = new VehicleStatus(); status = v.getDeviceStatus(); information = v.getDeviceInformation(); status.position = new VehiclePosition(); status.position.latitude = 41.55; status.position.longitude = 2.45; information.latitude = status.position.latitude; information.longitude = status.position.longitude; v.setAlarm("alarm_offline", 0); v.setAlarm("alarm_invalid", 0); information.ISSI = "0010002"; information.group = "Ambulance"; information.type = "Vehicle"; information.symbol = "Police car"; information.mnemonic = information.ISSI; information.name = "Vehicle " + v.getIdentifier(); ldevice.add(v); return ldevice; } public List getDeviceTypes() { List lDevice = new ArrayList<>(); Vehicle vehicle = new Vehicle(); vehicle.alarms = new VehicleAlarms(); lDevice.add(vehicle); GeographicArea geographicArea = new GeographicArea(); geographicArea.alarms = new GeographicAreaAlarms(); lDevice.add(geographicArea); DeepblueSensor deepblueSensor = new DeepblueSensor(); deepblueSensor.alarms = new DeepblueSensorAlarms(); lDevice.add(deepblueSensor); return lDevice; } public void generateAlarmsJson() throws Exception { List lAlarmInformation = new ArrayList<>(); //persistence.getObject(Device.class); //TODO GET DATABASE DEVICES List ldevice = getDeviceTypes(); for (Device device : ldevice) { List lfield = new ArrayList(); Alarms.getFields(device.getDeviceAlarms().getClass().getName(), lfield); for (Field field : lfield) { if (field.getName().startsWith("alarm")) { AlarmInformation alarm = new AlarmInformation(); alarm.clazz = device.getClassName(); alarm.alarmName = field.getName(); alarm.description = field.getName(); lAlarmInformation.add(alarm); } } } Serialization.serialize(lAlarmInformation, new File("data/" + Shared.getApplicationName() + ".alarms.json")); } // /** * @param parameters InteropParameters *

name: "language" class: String * @return InteropResponse * AlarmInformation[] * @throws SerializationException */ public InteropResponse getAlarmsInformation(InteropParameters parameters) throws SerializationException { String language = (String)parameters.getParameterValue("language"); try { AlarmInformation[] aAlarm = (AlarmInformation[])Serialization.deserialize(AlarmInformation[].class, Resources.getResourceStream("data/" + Shared.getApplicationName() + ".alarms.json")); for (AlarmInformation alarm : aAlarm) { alarm.description = Shared.configuration.getMessage(language, alarm.description); } return new InteropResponse(aAlarm); } catch (Exception e) { String msg = "error getting alarms"; throw new SerializationException(e.getMessage()); } } /** * @param parameters InteropParameters *

name: "language" class: String *

name: "lusername" class: String[] *

name: "timestamp" class: Long *OPTIONAL * @return InteropResponse * UserAlarmConfiguration[] * @throws SerializationException */ @SuppressWarnings("unchecked") public InteropResponse getAlarmsUserConfiguration(InteropParameters parameters) throws SerializationException { String language = (String)parameters.getParameterValue("language"); try { long timestamp = 0L; String username = (String)parameters.getParameterValue("username"); if (username == null) { String[] lusername = parameters.getBodyContentValue(String[].class); username = lusername[0]; } if (parameters.hasParameter("timestamp")) { timestamp = (Long)parameters.getParameterValue("timestamp"); } List lalarmConfiguration = new ArrayList<>(); User user = (User)Shared.getModel().getDevices(username, timestamp)[0]; lalarmConfiguration = user.getDeviceConfiguration().lalarmConfiguration; return new InteropResponse(lalarmConfiguration.toArray(new UserAlarmConfiguration[lalarmConfiguration.size()])); } catch (Exception e) { } return new InteropResponse(new UserAlarmConfiguration[0]); } // }