diff --git a/src/main/java/envoy/server/Startup.java b/src/main/java/envoy/server/Startup.java index 8991667..0edcfed 100755 --- a/src/main/java/envoy/server/Startup.java +++ b/src/main/java/envoy/server/Startup.java @@ -40,7 +40,7 @@ public class Startup { /** * Initializes the logger with a new config instance. - * + * * @since Envoy Server Standalone v0.1-beta */ private static void initLogging() { @@ -60,14 +60,15 @@ public class Startup { /** * Starts the server. * - * @param args the run configuration. Currently unused. + * @param args the run configuration. If it is "no-enter-to-stop" at position 0, + * no command to read in an enter press will be generated * @throws IOException if the server crashes * @since Envoy Server Standalone v0.1-alpha */ public static void main(String[] args) throws IOException { initLogging(); - Server server = new Server(8080, ObjectMessageReader::new, + final Server server = new Server(8080, ObjectMessageReader::new, new ObjectMessageProcessor(Set.of(new LoginCredentialProcessor(), new MessageProcessor(), new GroupMessageProcessor(), @@ -80,16 +81,18 @@ public class Startup { new ContactOperationProcessor()))); // Initialize the current message ID - PersistenceManager persistenceManager = PersistenceManager.getInstance(); + final PersistenceManager persistenceManager = PersistenceManager.getInstance(); if (persistenceManager.getConfigItemByID("currentMessageId") == null) persistenceManager.addConfigItem(new envoy.server.data.ConfigItem("currentMessageId", "0")); server.start(); server.getSocketProcessor().registerSocketIdListener(ConnectionManager.getInstance()); - System.out.println("Press the return key to stop the server..."); - System.in.read(); - System.out.println("Stopped"); - System.exit(0); + if (args.length == 0 || !args[0].equalsIgnoreCase("no-enter-to-stop")) { + System.out.println("Press the return key to stop the server..."); + System.in.read(); + System.out.println("Stopped"); + System.exit(0); + } } } diff --git a/src/main/java/envoy/server/data/GroupMessage.java b/src/main/java/envoy/server/data/GroupMessage.java index 0cba412..28965ec 100644 --- a/src/main/java/envoy/server/data/GroupMessage.java +++ b/src/main/java/envoy/server/data/GroupMessage.java @@ -11,7 +11,7 @@ import javax.persistence.NamedQuery; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import envoy.data.MessageBuilder; +import envoy.data.Group; /** * Project: envoy-server-standalone
@@ -71,15 +71,7 @@ public class GroupMessage extends Message { */ @Override public envoy.data.GroupMessage toCommon() { - // TODO: Attachment - envoy.data.GroupMessage groupMessage = new MessageBuilder(sender.getID(), recipient.getID(), id).setCreationDate(creationDate) - .setForwarded(forwarded) - .setStatus(status) - .setText(text) - .buildGroupMessage((envoy.data.Group) recipient.toCommon(), new HashMap<>(memberMessageStatus)); - groupMessage.setReceivedDate(receivedDate); - groupMessage.setReadDate(readDate); - return groupMessage; + return prepareBuilder().buildGroupMessage((Group) recipient.toCommon(), new HashMap<>(memberMessageStatus)); } /** diff --git a/src/main/java/envoy/server/data/Message.java b/src/main/java/envoy/server/data/Message.java index 7127832..afe66c7 100755 --- a/src/main/java/envoy/server/data/Message.java +++ b/src/main/java/envoy/server/data/Message.java @@ -6,6 +6,8 @@ import java.time.LocalDateTime; import javax.persistence.*; +import envoy.data.Attachment; +import envoy.data.Attachment.AttachmentType; import envoy.data.Message.MessageStatus; import envoy.data.MessageBuilder; @@ -63,6 +65,7 @@ public class Message { protected String text; protected envoy.data.Message.MessageStatus status; + protected AttachmentType attachmentType; protected byte[] attachment; protected boolean forwarded; @@ -91,7 +94,10 @@ public class Message { sender = persistenceManager.getUserByID(message.getSenderID()); recipient = persistenceManager.getContactByID(message.getRecipientID()); forwarded = message.isForwarded(); - // TODO: Attachment + if (message.hasAttachment()) { + attachment = message.getAttachment().getData(); + attachmentType = message.getAttachment().getType(); + } } /** @@ -102,15 +108,23 @@ public class Message { * @since Envoy Server Standalone v0.1-alpha */ public envoy.data.Message toCommon() { - // TODO: Attachment - envoy.data.Message message = new MessageBuilder(sender.getID(), recipient.getID(), id).setText(text) + return prepareBuilder().build(); + } + + /** + * @return a message builder containing the state of this message + * @since Envoy Server Standalone v0.1-beta + */ + MessageBuilder prepareBuilder() { + var builder = new MessageBuilder(sender.getID(), recipient.getID(), id).setText( + text) .setCreationDate(creationDate) + .setReceivedDate(receivedDate) + .setReadDate(readDate) .setStatus(status) - .setForwarded(forwarded) - .build(); - message.setReceivedDate(receivedDate); - message.setReadDate(readDate); - return message; + .setForwarded(forwarded); + if (attachment != null) builder.setAttachment(new Attachment(attachment, attachmentType)); + return builder; } /** @@ -250,6 +264,18 @@ public class Message { */ public void setAttachment(byte[] attachment) { this.attachment = attachment; } + /** + * @return the attachmentType + * @since Envoy Server Standalone v0.1-beta + */ + public AttachmentType getAttachmentType() { return attachmentType; } + + /** + * @param attachmentType the attachmentType to set + * @since Envoy Server Standalone v0.1-beta + */ + public void setAttachmentType(AttachmentType attachmentType) { this.attachmentType = attachmentType; } + /** * @return whether this message is a forwarded message * @since Envoy Server Standalone v0.1-alpha diff --git a/src/main/java/envoy/server/processors/LoginCredentialProcessor.java b/src/main/java/envoy/server/processors/LoginCredentialProcessor.java index b562950..fc43207 100755 --- a/src/main/java/envoy/server/processors/LoginCredentialProcessor.java +++ b/src/main/java/envoy/server/processors/LoginCredentialProcessor.java @@ -16,7 +16,6 @@ import java.util.logging.Logger; import javax.persistence.NoResultException; -import enovy.server.util.VersionUtils; import envoy.data.LoginCredentials; import envoy.data.Message.MessageStatus; import envoy.event.GroupMessageStatusChange; @@ -27,6 +26,7 @@ import envoy.server.data.PersistenceManager; import envoy.server.data.User; import envoy.server.net.ConnectionManager; import envoy.server.net.ObjectWriteProxy; +import envoy.server.util.VersionUtils; import envoy.util.Bounds; import envoy.util.EnvoyLog; diff --git a/src/main/java/enovy/server/util/VersionUtils.java b/src/main/java/envoy/server/util/VersionUtils.java similarity index 99% rename from src/main/java/enovy/server/util/VersionUtils.java rename to src/main/java/envoy/server/util/VersionUtils.java index ab96890..db4a845 100644 --- a/src/main/java/enovy/server/util/VersionUtils.java +++ b/src/main/java/envoy/server/util/VersionUtils.java @@ -1,4 +1,4 @@ -package enovy.server.util; +package envoy.server.util; import java.util.regex.Pattern; diff --git a/src/main/java/enovy/server/util/package-info.java b/src/main/java/envoy/server/util/package-info.java similarity index 91% rename from src/main/java/enovy/server/util/package-info.java rename to src/main/java/envoy/server/util/package-info.java index f256f4c..f052882 100644 --- a/src/main/java/enovy/server/util/package-info.java +++ b/src/main/java/envoy/server/util/package-info.java @@ -8,4 +8,4 @@ * @author Kai S. K. Engelbart * @since Envoy Server Standalone v0.1-beta */ -package enovy.server.util; +package envoy.server.util;