package art.servers.transactionsserver.model.vms; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import art.library.interop.InteropParameters; import art.library.interop.InteropResponse; import art.library.interop.serialization.SerializationException; import art.library.model.devices.Device; import art.library.model.devices.vms.general.VmsGeneral; import art.library.model.devices.vms.general.commands.VmsGeneralCommandsMessage; import art.library.model.devices.vms.general.commands.VmsGeneralCommandsMessageImage; import art.library.model.devices.vms.general.commands.VmsGeneralCommandsMessagePersistence; import art.servers.ServerException; import art.servers.transactionsserver.Shared; import java.sql.ResultSet; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.imageio.ImageIO; public class ModelVmsMessagesLibrary { public ModelVmsMessagesLibrary() { } public InteropResponse addVmsGeneralCommandsMessages(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); boolean success = true; try { VmsGeneralCommandsMessage lvmsGeneralCommandsMessage[] = parameters.getBodyContentValue(VmsGeneralCommandsMessage[].class); for (VmsGeneralCommandsMessage vmsGeneralCommandsMessage : lvmsGeneralCommandsMessage) { try { if (vmsGeneralCommandsMessage.folder == null){vmsGeneralCommandsMessage.folder = "";} Shared.controllerDatabase.getTimelessPersistance().get(0).updateOrAddObject(new VmsGeneralCommandsMessagePersistence(vmsGeneralCommandsMessage)); } catch (Exception ex) { success = false; ex.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } return new InteropResponse(new Boolean(success)); } public InteropResponse removeVmsGeneralCommandsMessages(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); boolean success = true; try { VmsGeneralCommandsMessage lvmsGeneralCommandsMessage[] = parameters.getBodyContentValue(VmsGeneralCommandsMessage[].class); for (VmsGeneralCommandsMessage vmsGeneralCommandsMessage : lvmsGeneralCommandsMessage) { try { if (vmsGeneralCommandsMessage.folder == null){vmsGeneralCommandsMessage.folder = "";} Shared.controllerDatabase.getTimelessPersistance().get(0).deleteObject(new VmsGeneralCommandsMessagePersistence(vmsGeneralCommandsMessage)); } catch (Exception ex) { success = false; ex.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } return new InteropResponse(new Boolean(success)); } @SuppressWarnings("unchecked") public InteropResponse getVmsGeneralCommandsMessages(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); List lvmsGeneralCommandsMessagePersistence = new ArrayList<>(); try { String folder = (parameters.hasParameter("folder") == true) ? (String) parameters.getParameterValue("folder") : null; String name = (parameters.hasParameter("name") == true) ? (String)parameters.getParameterValue("name") : null; String type = (parameters.hasParameter("type") == true) ? (String)parameters.getParameterValue("type") : null; if (folder != null || name != null || type != null) { String where = "true"; if (folder!=null) where+= " and folder='" + folder + "'"; if (type!=null) where+= " and type='" + type + "'"; if (name != null) where += " and name like '%" + name + "%'"; lvmsGeneralCommandsMessagePersistence = (List) (List) Shared.controllerDatabase.getTimelessPersistance().get(0).getObject(VmsGeneralCommandsMessagePersistence.class.getName(), where); } else { lvmsGeneralCommandsMessagePersistence = (List) (List) Shared.controllerDatabase.getTimelessPersistance().get(0).getObject(VmsGeneralCommandsMessagePersistence.class.getName()); } List lvmsGeneralCommandsMessage = lvmsGeneralCommandsMessagePersistence.stream().map(m -> m.message).collect(Collectors.toList()); return new InteropResponse(lvmsGeneralCommandsMessage.toArray(new VmsGeneralCommandsMessage[0])); } catch (Exception exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } } @SuppressWarnings("unchecked") public InteropResponse getVmsGeneralCommandsMessagesFolders(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); Set lfolder = new HashSet<>(); try { String type = (parameters.hasParameter("type") == true) ? (String)parameters.getParameterValue("type") : null; if (type != null) { List lvmsGeneralCommandsMessagePersistence = (List) (List) Shared.controllerDatabase.getTimelessPersistance().get(0).getObject(VmsGeneralCommandsMessagePersistence.class.getName(), "type='" + type + "'"); lfolder = lvmsGeneralCommandsMessagePersistence.stream().map(m -> m.message.folder).collect(Collectors.toSet()); } return new InteropResponse(lfolder.toArray(new String[0])); } catch (Exception exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } } @SuppressWarnings("unchecked") public InteropResponse getVmsGeneralCommandsMessagesFoldersDevice(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); Set lfolder = new HashSet<>(); try { String type = (parameters.hasParameter("type") == true) ? (String)parameters.getParameterValue("type") : null; String identifier = (parameters.hasParameter("identifier") == true) ? (String)parameters.getParameterValue("identifier") : null; if (identifier == null) { identifier = (parameters.hasParameter("device") == true) ? (String)parameters.getParameterValue("device") : null; } if (identifier != null) { Device device = Shared.model.getDeviceExternal(identifier); if (device == null) throw new ServerException("Device does not exist"); if (device instanceof VmsGeneral) { type = ((VmsGeneral)device).getDeviceInformation().getResolutionType(); } else { throw new ServerException("Device is not a VMS"); } } if (type != null) { List lvmsGeneralCommandsMessagePersistence = (List) (List) Shared.controllerDatabase.getTimelessPersistance().get(0).getObject(VmsGeneralCommandsMessagePersistence.class.getName(), "type='" + type + "'"); lfolder = lvmsGeneralCommandsMessagePersistence.stream().map(m -> m.message.folder).collect(Collectors.toSet()); } return new InteropResponse(lfolder.toArray(new String[0])); } catch (ServerException exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } catch (Exception exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } } @SuppressWarnings("unchecked") public InteropResponse getVmsGeneralCommandsMessagesDeviceFolder(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); List lvmsGeneralCommandsMessagePersistence = new ArrayList<>(); try { int width = (parameters.hasParameter("width") == true) ? Integer.parseInt((String)parameters.getParameterValue("width")) : 0; int height = (parameters.hasParameter("height") == true) ? Integer.parseInt((String)parameters.getParameterValue("height")) : 0; String folder = (parameters.hasParameter("folder") == true) ? (String)parameters.getParameterValue("folder") : null; String name = (parameters.hasParameter("name") == true) ? (String)parameters.getParameterValue("name") : null; String identifier = (parameters.hasParameter("identifier") == true) ? (String)parameters.getParameterValue("identifier") : null; if (identifier == null) { identifier = (parameters.hasParameter("device") == true) ? (String)parameters.getParameterValue("device") : null; } String type = null; if (identifier != null) { Device device = Shared.model.getDeviceExternal(identifier); if (device == null) throw new ServerException("Device does not exist"); if (device instanceof VmsGeneral) { type = ((VmsGeneral)device).getDeviceInformation().getResolutionType(); // if (width == 0) width = ((VmsGeneral)device).getDeviceInformation().width; // if (height == 0) height = ((VmsGeneral)device).getDeviceInformation().height; } else { throw new ServerException("Device is not a VMS"); } } if ((folder != null) || (type != null) || (name != null)) { String where = "true"; if (folder!=null) where+= " and folder='" + folder + "'"; if (type!=null) where+= " and type='" + type + "'"; if (name!=null) where+= " and name='" + name + "'"; lvmsGeneralCommandsMessagePersistence = (List) (List) Shared.controllerDatabase.getTimelessPersistance().get(0).getObject(VmsGeneralCommandsMessagePersistence.class.getName(), where); } else { lvmsGeneralCommandsMessagePersistence = (List) (List) Shared.controllerDatabase.getTimelessPersistance().get(0).getObject(VmsGeneralCommandsMessagePersistence.class.getName()); } List lvmsGeneralCommandsMessage = lvmsGeneralCommandsMessagePersistence.stream().map(m -> m.message).collect(Collectors.toList()); List lvmsGeneralCommandsMessageImage = new ArrayList(); for (VmsGeneralCommandsMessage message : lvmsGeneralCommandsMessage) { VmsGeneralCommandsMessageImage image = new VmsGeneralCommandsMessageImage(); image.folder = message.folder; image.name = message.name; image.priority = message.priority; image.time = message.time; image.type = message.type; image.imageType = "png"; BufferedImage bufImage = message.document.getRealisticImage(width, height, true); image.height = bufImage.getHeight(); image.width = bufImage.getWidth(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ImageIO.write(bufImage, "png", bos); bos.flush(); image.image = bos.toByteArray(); bos.close(); bos = null; lvmsGeneralCommandsMessageImage.add(image); } return new InteropResponse(lvmsGeneralCommandsMessageImage.toArray(new VmsGeneralCommandsMessageImage[0])); } catch (ServerException exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } catch (Exception exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } } @SuppressWarnings("unchecked") public InteropResponse renameVmsGeneralCommandsMessagesFolder(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); boolean success = true; try { String selectedPath = ((parameters.hasParameter("selectedPath") == true) && !((String) parameters.getParameterValue("selectedPath")).isEmpty()) ? (String) parameters.getParameterValue("selectedPath") : ""; String newPath = ((parameters.hasParameter("newPath") == true) && !((String) parameters.getParameterValue("newPath")).isEmpty()) ? (String) parameters.getParameterValue("newPath") : ""; String type = (parameters.hasParameter("type") == true) ? (String)parameters.getParameterValue("type") : null; String where = "(folder = '" + selectedPath + "' or folder like '" + selectedPath + "/%') and type='" + type + "'"; List lvmsGeneralCommandsMessagePersistence = (List) (List) Shared.controllerDatabase.getTimelessPersistance().get(0).getObject(VmsGeneralCommandsMessagePersistence.class.getName(), where); List lvmsGeneralCommandsMessage = lvmsGeneralCommandsMessagePersistence.stream().map(m -> m.message).collect(Collectors.toList()); for (VmsGeneralCommandsMessage vmsGeneralCommandsMessage : lvmsGeneralCommandsMessage) { try { Shared.controllerDatabase.getTimelessPersistance().get(0).deleteObject(new VmsGeneralCommandsMessagePersistence(vmsGeneralCommandsMessage)); vmsGeneralCommandsMessage.folder = newPath; Shared.controllerDatabase.getTimelessPersistance().get(0).addObject_asynchronous(new VmsGeneralCommandsMessagePersistence(vmsGeneralCommandsMessage)); } catch (Exception e) { success = false; } } return new InteropResponse(success); } catch (Exception exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } } @SuppressWarnings("unchecked") public InteropResponse getVmsGeneralCommandsMessageTypes(InteropParameters parameters) throws SerializationException { String language = (String) parameters.getParameterValue("language"); List ltype = new ArrayList<>(); try { ResultSet res = Shared.controllerDatabase.getTimelessPersistance().get(0).executeQuery("SELECT distinct(type) FROM vms_library"); while (res.next()) { ltype.add(res.getString(1)); } return new InteropResponse(ltype.toArray(new String[0])); } catch (Exception exception) { throw new SerializationException(Shared.getMessage(language, exception.getMessage()), exception); } } }