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<Device> getDevicesSimulation()
|
{
|
List<Device> 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<Device> getDeviceTypes()
|
{
|
List<Device> 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<AlarmInformation> lAlarmInformation = new ArrayList<>();
|
//persistence.getObject(Device.class);
|
//TODO GET DATABASE DEVICES
|
List<Device> ldevice = getDeviceTypes();
|
|
for (Device device : ldevice)
|
{
|
List<Field> lfield = new ArrayList<Field>();
|
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"));
|
}
|
|
//<editor-fold defaultstate="collapsed" desc="Alarms">
|
/**
|
* @param parameters <code>InteropParameters</code>
|
* <p>name: "language" class: <code>String</code>
|
* @return <code>InteropResponse</code>
|
* <code>AlarmInformation[]</code>
|
* @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 <code>InteropParameters</code>
|
* <p>name: "language" class: <code>String</code>
|
* <p>name: "lusername" class: <code>String[]</code>
|
* <p>name: "timestamp" class: <code>Long</code> *OPTIONAL
|
* @return <code>InteropResponse</code>
|
* <code>UserAlarmConfiguration[]</code>
|
* @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<UserAlarmConfiguration> 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]);
|
}
|
|
//</editor-fold>
|
}
|