diff --git a/src/main/java/envoy/client/Client.java b/src/main/java/envoy/client/Client.java index f302a39..51ee5c0 100644 --- a/src/main/java/envoy/client/Client.java +++ b/src/main/java/envoy/client/Client.java @@ -17,6 +17,7 @@ import envoy.schema.Message; import envoy.schema.Message.MetaData.MessageState; import envoy.schema.Messages; import envoy.schema.ObjectFactory; +import envoy.schema.User; import envoy.schema.Users; /** @@ -26,6 +27,7 @@ import envoy.schema.Users; * * @author Kai S. K. Engelbart * @author Maximilian Käfer + * @author Leon Hofmeister * @since Envoy 0.1 */ @@ -34,14 +36,17 @@ public class Client { private ObjectFactory objectFactory = new ObjectFactory(); private DatatypeFactory datatypeFactory; private Config config; + private User user; - public Client(Config config) { + public Client(Config config, String username) { this.config = config; try { datatypeFactory = DatatypeFactory.newInstance(); } catch (DatatypeConfigurationException e) { e.printStackTrace(); } + user = getUser(username); + System.out.printf("Mein Name ist %s und ich habe die ID %d%n", user.getName(), user.getID()); } /** @@ -124,4 +129,23 @@ public class Client { client.close(); return users; } + + /** + * Returns the user by name. + * + * @param name - the name of the user + * @return an user object + * @since Envoy 0.1 + */ + private User getUser(String name) { + javax.ws.rs.client.Client client = ClientBuilder.newClient(); + WebTarget target = client + .target(String.format("%s:%d/envoy-server/rest/user/sender?name=" + name, config.getServer(), config.getPort())); + Response response = target.request("application/xml").get(); + Users users = response.readEntity(Users.class); + System.out.println("Response code: " + response.getStatus()); + response.close(); + client.close(); + return users.getUser().get(0); + } } \ No newline at end of file diff --git a/src/main/java/envoy/client/ui/ChatWindow.java b/src/main/java/envoy/client/ui/ChatWindow.java index 6e4891d..8f71776 100644 --- a/src/main/java/envoy/client/ui/ChatWindow.java +++ b/src/main/java/envoy/client/ui/ChatWindow.java @@ -35,6 +35,7 @@ import envoy.schema.Users; * * @author Kai S. K. Engelbart * @author Maximilian Käfer + * @author Leon Hofmeister * @since Envoy 0.1 */ public class ChatWindow extends JFrame { @@ -44,11 +45,13 @@ public class ChatWindow extends JFrame { private long recipientID = 0; private JPanel contentPane = new JPanel(); - private static Client client; + private Client client; private DefaultListModel messageListModel = new DefaultListModel<>(); - public ChatWindow() { + public ChatWindow(Client client) { + this.client = client; + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); setTitle("Envoy"); @@ -212,35 +215,4 @@ public class ChatWindow extends JFrame { + getFirstTextContent(message) + ""); } - public static void main(String[] args) { - Config config = new Config(); - if (args.length > 0) { - config.load(args); - } else { - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - try { - Properties configProperties = new Properties(); - configProperties.load(loader.getResourceAsStream("server.properties")); - config.load(configProperties); - } catch (IOException e) { - e.printStackTrace(); - } - } - - if(!config.isInitialized()) { - System.err.println("Server or port are not defined. Exiting..."); - System.exit(1); - } - - client = new Client(config); - - EventQueue.invokeLater(() -> { - try { - ChatWindow frame = new ChatWindow(); - frame.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - }); - } } \ No newline at end of file diff --git a/src/main/java/envoy/client/ui/Startup.java b/src/main/java/envoy/client/ui/Startup.java new file mode 100644 index 0000000..d2848a9 --- /dev/null +++ b/src/main/java/envoy/client/ui/Startup.java @@ -0,0 +1,63 @@ +package envoy.client.ui; + +import java.awt.EventQueue; +import java.io.IOException; +import java.util.Properties; + +import javax.swing.JOptionPane; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.Response; + +import envoy.client.Client; +import envoy.client.Config; + +/** + * Starts Envoy and sets a user. + * + * Project: envoy-client
+ * File: Startup.java
+ * Created: 12 Oct 2019
+ * + * @author Leon Hofmeister + * @author Maximilian Käfer + * @since Envoy 0.1 + */ +public class Startup { + + private static String userName; + + public static void main(String[] args) { + Config config = new Config(); + if (args.length > 0) { + config.load(args); + } else { + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + try { + Properties configProperties = new Properties(); + configProperties.load(loader.getResourceAsStream("server.properties")); + config.load(configProperties); + } catch (IOException e) { + e.printStackTrace(); + } + } + + if(!config.isInitialized()) { + System.err.println("Server or port are not defined. Exiting..."); + System.exit(1); + } + + userName = JOptionPane.showInputDialog("Please enter your username"); + + Client client = new Client(config, userName); + + EventQueue.invokeLater(() -> { + try { + ChatWindow frame = new ChatWindow(client); + frame.setVisible(true); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } +}