diff --git a/src/main/java/envoy/client/Client.java b/src/main/java/envoy/client/Client.java
index be0dd89..cfc894a 100644
--- a/src/main/java/envoy/client/Client.java
+++ b/src/main/java/envoy/client/Client.java
@@ -1,7 +1,9 @@
package envoy.client;
+import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
+import java.util.logging.Logger;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
@@ -11,6 +13,7 @@ import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
+import envoy.client.util.EnvoyLog;
import envoy.exception.EnvoyException;
import envoy.schema.ObjectFactory;
import envoy.schema.Sync;
@@ -20,7 +23,7 @@ import envoy.schema.User;
* Project: envoy-client
* File: Client.java
* Created: 28 Sep 2019
- *
+ *
* @author Kai S. K. Engelbart
* @author Maximilian Käfer
* @author Leon Hofmeister
@@ -33,10 +36,12 @@ public class Client {
private User sender, recipient;
private boolean online = false;
+ private static final Logger logger = EnvoyLog.getLogger(Client.class.getSimpleName());
+
/**
* Initializes the client. At this state, the client user has yet to be
* initialized, which can be done by calling {@link Client#onlineInit(String)}.
- *
+ *
* @param config The {@link Config} instance to use in this client
* @since Envoy v0.2-alpha
*/
@@ -44,7 +49,7 @@ public class Client {
/**
* Enters the online mode by acquiring a user ID from the server.
- *
+ *
* @param userName the name of the client user
* @throws EnvoyException if the online mode could not be entered or the request
* failed for some other reason
@@ -88,7 +93,7 @@ public class Client {
/**
* Returns a {@link User} with a specific id by name.
- *
+ *
* @param name - the name of the {@link User}
* @return a {@link User} with the specified name
* @throws EnvoyException if the server does not return the requested ID
@@ -146,7 +151,7 @@ public class Client {
* Users:
* Updating UserStatus of all users in LocalDB. (Server sends all users with
* their updated UserStatus to the client.)
- *
+ *
* @param userId the id of the {@link Client} who sends the {@link Sync}
* @param sync the sync object (yet to be converted from java class to
* sync.xml)
@@ -163,7 +168,9 @@ public class Client {
jc = JAXBContext.newInstance("envoy.schema");
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
- m.marshal(sync, System.out);
+ StringWriter stringWriter = new StringWriter();
+ m.marshal(sync, stringWriter);
+ logger.fine("Sending sync:\n" + stringWriter.toString());
} catch (JAXBException e) {
e.printStackTrace();
}
@@ -180,7 +187,7 @@ public class Client {
/**
* Sets the client user which is used to send messages.
- *
+ *
* @param sender the client user to set
* @since Envoy v0.2-alpha
*/
@@ -194,7 +201,7 @@ public class Client {
/**
* Sets the recipient.
- *
+ *
* @param recipient the recipient to set
* @since Envoy v0.1-alpha
*/
diff --git a/src/main/java/envoy/client/Config.java b/src/main/java/envoy/client/Config.java
index 3e511f9..17da0d8 100644
--- a/src/main/java/envoy/client/Config.java
+++ b/src/main/java/envoy/client/Config.java
@@ -32,7 +32,8 @@ public class Config {
items.put("port", new ConfigItem<>("port", "p", (input) -> Integer.parseInt(input), null));
items.put("localDB", new ConfigItem<>("localDB", "db", (input) -> new File(input), new File("localDB")));
items.put("syncTimeout", new ConfigItem<>("syncTimeout", "st", (input) -> Integer.parseInt(input), 1000));
- items.put("homeDirectory", new ConfigItem<>("homeDirectory", "h", (input) -> new File(input), new File(System.getProperty("user.home"), ".envoy")));
+ items.put("homeDirectory",
+ new ConfigItem<>("homeDirectory", "h", (input) -> new File(input), new File(System.getProperty("user.home"), ".envoy")));
items.put("fileLevelBarrier", new ConfigItem<>("fileLevelBarrier", "fb", (input) -> Level.parse(input), Level.CONFIG));
items.put("consoleLevelBarrier", new ConfigItem<>("consoleLevelBarrier", "cb", (input) -> Level.parse(input), Level.FINEST));
}
@@ -130,13 +131,13 @@ public class Config {
* @since Envoy v0.2-alpha
*/
public File getHomeDirectory() { return (File) items.get("homeDirectory").get(); }
-
+
/**
* @return the minimal {@link Level} to log inside the log file
* @since Envoy v0.2-alpha
*/
public Level getFileLevelBarrier() { return (Level) items.get("fileLevelBarrier").get(); }
-
+
/**
* @return the minimal {@link Level} to log inside the console
* @since Envoy v0.2-alpha
diff --git a/src/main/java/envoy/client/LocalDB.java b/src/main/java/envoy/client/LocalDB.java
index 8c6a40b..dcc8b12 100644
--- a/src/main/java/envoy/client/LocalDB.java
+++ b/src/main/java/envoy/client/LocalDB.java
@@ -1,16 +1,8 @@
package envoy.client;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
+import java.io.*;
import java.time.Instant;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.logging.Logger;
import javax.xml.datatype.DatatypeConfigurationException;
@@ -20,11 +12,8 @@ import envoy.client.event.EventBus;
import envoy.client.event.MessageCreationEvent;
import envoy.client.util.EnvoyLog;
import envoy.exception.EnvoyException;
-import envoy.schema.Message;
+import envoy.schema.*;
import envoy.schema.Message.Metadata.MessageState;
-import envoy.schema.ObjectFactory;
-import envoy.schema.Sync;
-import envoy.schema.User;
/**
* Project: envoy-client
@@ -249,10 +238,8 @@ public class LocalDB {
// Updating UserStatus of all users in LocalDB
for (User user : returnSync.getUsers())
for (Chat chat : getChats())
- if (user.getID() == chat.getRecipient().getID()) {
+ if (user.getID() == chat.getRecipient().getID())
chat.getRecipient().setStatus(user.getStatus());
- logger.info(chat.getRecipient().getStatus().toString());
- }
sync.getMessages().clear();
sync.getUsers().clear();
diff --git a/src/main/java/envoy/client/ui/Startup.java b/src/main/java/envoy/client/ui/Startup.java
index 21e4cf0..db9644a 100644
--- a/src/main/java/envoy/client/ui/Startup.java
+++ b/src/main/java/envoy/client/ui/Startup.java
@@ -59,7 +59,7 @@ public class Startup {
System.exit(1);
e.printStackTrace();
}
-
+
// Set new logger levels loaded from config
EnvoyLog.setFileLevelBarrier(config.getFileLevelBarrier());
EnvoyLog.setConsoleLevelBarrier(config.getConsoleLevelBarrier());
diff --git a/src/main/java/envoy/client/util/EnvoyLog.java b/src/main/java/envoy/client/util/EnvoyLog.java
index 282e1b4..b59b714 100644
--- a/src/main/java/envoy/client/util/EnvoyLog.java
+++ b/src/main/java/envoy/client/util/EnvoyLog.java
@@ -10,7 +10,7 @@ import envoy.client.Config;
* Project: envoy-client
* File: EnvoyLogger.java
* Created: 14 Dec 2019
- *
+ *
* @author Leon Hofmeister
* @author Kai S. K. Engelbart
* @since Envoy v0.2-alpha
@@ -18,11 +18,18 @@ import envoy.client.Config;
public class EnvoyLog {
private static FileHandler fileHandler;
- private static ConsoleHandler consoleHandler;
+ private static StreamHandler consoleHandler;
static {
+ // Remove default console handler
+ LogManager.getLogManager().reset();
+
+ // Configure log file
File logFile = new File(Config.getInstance().getHomeDirectory(), "log/envoy_user.log");
logFile.getParentFile().mkdirs();
+
+ // Configure formatting
+ System.setProperty("java.util.logging.SimpleFormatter.format", "[%1$tF %1$tT] [%4$-7s] [%3$s] %5$s %n");
SimpleFormatter formatter = new SimpleFormatter();
try {
@@ -32,7 +39,7 @@ public class EnvoyLog {
} catch (SecurityException | IOException e) {
e.printStackTrace();
}
- consoleHandler = new ConsoleHandler();
+ consoleHandler = new StreamHandler(System.out, formatter);
consoleHandler.setLevel(Config.getInstance().getConsoleLevelBarrier());
consoleHandler.setFormatter(formatter);
}
@@ -41,7 +48,7 @@ public class EnvoyLog {
/**
* Creates a {@link Logger} with a specified name
- *
+ *
* @param name the name of the {@link Logger} to create
* @return the created {@link Logger}
* @since Envoy v0.2-alpha