From 09dba0fa4f57ff5687562200dbc520b7ed113a6a Mon Sep 17 00:00:00 2001 From: Maxi Date: Mon, 7 Oct 2019 16:14:14 +0200 Subject: [PATCH] Added user list download --- src/main/java/envoy/client/EnvoyClient.java | 63 +++++++++++ src/main/java/envoy/client/ui/ChatWindow.java | 105 +++++++++++++----- 2 files changed, 139 insertions(+), 29 deletions(-) diff --git a/src/main/java/envoy/client/EnvoyClient.java b/src/main/java/envoy/client/EnvoyClient.java index c659c4e..5380aed 100644 --- a/src/main/java/envoy/client/EnvoyClient.java +++ b/src/main/java/envoy/client/EnvoyClient.java @@ -1,8 +1,12 @@ package envoy.client; +import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringReader; import java.time.Instant; import java.util.Arrays; +import java.util.List; import java.util.Properties; import javax.ws.rs.client.Client; @@ -15,9 +19,27 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.util.EntityUtils; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; + +import envoy.client.ui.ChatWindow; import envoy.schema.Message; import envoy.schema.Messages; +import envoy.schema.User; +import envoy.schema.Users; import envoy.schema.ObjectFactory; /** @@ -29,6 +51,7 @@ import envoy.schema.ObjectFactory; public class EnvoyClient { + ChatWindow chatWindow = new ChatWindow(); private ObjectFactory objectFactory = new ObjectFactory(); private DatatypeFactory datatypeFactory; @@ -120,4 +143,44 @@ public class EnvoyClient { wrapper.getMessage().addAll(Arrays.asList(messages)); return wrapper; } + + public void getUsersListXml () throws ClientProtocolException, IOException, SAXException, ParserConfigurationException { + + /*HttpClient client = new DefaultHttpClient(); + HttpGet request = new HttpGet(String.format("%s:%s/envoy-server/rest/user", + serverProps.getProperty("server"), + serverProps.getProperty("port"))); + HttpResponse response = client.execute(request); + + BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); + System.out.println(rd.readLine()); + + String inputLine; + StringBuffer response1 = new StringBuffer(); + while((inputLine = rd.readLine()) != null) { + response1.append(inputLine); + } + */ + + Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder() + .parse(String.format("%s:%s/envoy-server/rest/user", + serverProps.getProperty("server"), + serverProps.getProperty("port"))); + NodeList errNodes = doc.getElementsByTagName("User"); + + for (int i = 0; i < errNodes.getLength(); i++) { + if(errNodes.getLength() > 0) { + Element err = (Element)errNodes.item(i); + //System.out.println("Name: " + err.getElementsByTagName("Name").item(0).getTextContent()); + //System.out.println("Id: " + err.getElementsByTagName("ID").item(0).getTextContent()); + User user = new User(); + user.setName(err.getElementsByTagName("Name").item(0).getTextContent()); + user.setID(Long.parseLong(err.getElementsByTagName("ID").item(0).getTextContent())); + chatWindow.addUserToList(user); + + } + } + chatWindow.printUserListElements(); + chatWindow.loadUserJList(); + } } \ 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 8fb801e..056a4c5 100644 --- a/src/main/java/envoy/client/ui/ChatWindow.java +++ b/src/main/java/envoy/client/ui/ChatWindow.java @@ -7,6 +7,9 @@ import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; +import java.awt.List; +import java.io.IOException; +import java.util.ArrayList; import javax.swing.DefaultListModel; import javax.swing.JButton; @@ -17,9 +20,14 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.border.EmptyBorder; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.http.client.ClientProtocolException; +import org.xml.sax.SAXException; import envoy.client.EnvoyClient; import envoy.schema.Message; +import envoy.schema.User; /** * Project: envoy-client
@@ -31,11 +39,13 @@ public class ChatWindow extends JFrame { private static final long serialVersionUID = 6865098428255463649L; - private JPanel contentPane = new JPanel(); - private EnvoyClient envoyClient = new EnvoyClient(); + private JPanel contentPane = new JPanel(); + private static EnvoyClient envoyClient = new EnvoyClient(); public DefaultListModel listModel = new DefaultListModel<>(); + public ArrayList userList = new ArrayList(); + public ChatWindow() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); @@ -47,10 +57,10 @@ public class ChatWindow extends JFrame { contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); GridBagLayout gbl_contentPane = new GridBagLayout(); - gbl_contentPane.columnWidths = new int[] { 1, 1, 1 }; - gbl_contentPane.rowHeights = new int[] { 1, 1, 1 }; - gbl_contentPane.columnWeights = new double[] { 0.3, 1.0, 0.1 }; - gbl_contentPane.rowWeights = new double[] { 0.05, 1, 0.07 }; + gbl_contentPane.columnWidths = new int[] { 1, 1, 1 }; + gbl_contentPane.rowHeights = new int[] { 1, 1, 1 }; + gbl_contentPane.columnWeights = new double[] { 0.3, 1.0, 0.1 }; + gbl_contentPane.rowWeights = new double[] { 0.05, 1, 0.07 }; contentPane.setLayout(gbl_contentPane); JList elementList = new JList<>(); @@ -74,10 +84,10 @@ public class ChatWindow extends JFrame { scrollPane.setBorder(null); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); - gbc_scrollPane.fill = GridBagConstraints.BOTH; - gbc_scrollPane.gridwidth = 2; - gbc_scrollPane.gridx = 1; - gbc_scrollPane.gridy = 1; + gbc_scrollPane.fill = GridBagConstraints.BOTH; + gbc_scrollPane.gridwidth = 2; + gbc_scrollPane.gridx = 1; + gbc_scrollPane.gridy = 1; gbc_scrollPane.insets = new Insets(10, 10, 10, 10); @@ -94,9 +104,9 @@ public class ChatWindow extends JFrame { messageEnterTextfield.setBorder(new EmptyBorder(5, 5, 5, 5)); GridBagConstraints gbc_moveSelectionMessageEnterTextfield = new GridBagConstraints(); - gbc_moveSelectionMessageEnterTextfield.fill = GridBagConstraints.BOTH; - gbc_moveSelectionMessageEnterTextfield.gridx = 1; - gbc_moveSelectionMessageEnterTextfield.gridy = 2; + gbc_moveSelectionMessageEnterTextfield.fill = GridBagConstraints.BOTH; + gbc_moveSelectionMessageEnterTextfield.gridx = 1; + gbc_moveSelectionMessageEnterTextfield.gridy = 2; gbc_moveSelectionMessageEnterTextfield.insets = new Insets(10, 10, 10, 10); @@ -110,28 +120,50 @@ public class ChatWindow extends JFrame { GridBagConstraints gbc_moveSelectionPostButton = new GridBagConstraints(); - gbc_moveSelectionPostButton.fill = GridBagConstraints.BOTH; - gbc_moveSelectionPostButton.gridx = 2; - gbc_moveSelectionPostButton.gridy = 2; + gbc_moveSelectionPostButton.fill = GridBagConstraints.BOTH; + gbc_moveSelectionPostButton.gridx = 2; + gbc_moveSelectionPostButton.gridy = 2; gbc_moveSelectionPostButton.insets = new Insets(10, 10, 10, 10); contentPane.add(postButton, gbc_moveSelectionPostButton); postButton.addActionListener((evt) -> { - if (!messageEnterTextfield.getText().isEmpty()) try { - final Message message = envoyClient.createMessage("Kai", "Maxi", messageEnterTextfield.getText()); - envoyClient.sendMessage(message); - appendMessageToChat(message); - messageEnterTextfield.setText(""); - } catch (Exception e) { - JOptionPane.showMessageDialog(this, - "An exception occured while sending a message. See the log for more details.", - "Exception occured", - JOptionPane.ERROR_MESSAGE); - e.printStackTrace(); - } + if (!messageEnterTextfield.getText().isEmpty()) + try { + final Message message = envoyClient.createMessage("Kai", "Maxi", messageEnterTextfield.getText()); + envoyClient.sendMessage(message); + appendMessageToChat(message); + messageEnterTextfield.setText(""); + } catch (Exception e) { + JOptionPane.showMessageDialog(this, + "An exception occured while sending a message. See the log for more details.", + "Exception occured", JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } }); + + } + + public void loadUserJList() { + // User List + JList userJList = new JList<>(); + DefaultListModel userJListModel = new DefaultListModel<>(); + for (int i = 0; i < userList.size(); i++) { + userJListModel.addElement(userList.get(i)); + } + userJList.setModel(userJListModel); + + GridBagConstraints gbc_userList = new GridBagConstraints(); + gbc_userList.fill = GridBagConstraints.BOTH; + gbc_userList.gridx = 0; + gbc_userList.gridy = 1; + + // gbc_userList.insets = new Insets(10, 10, 10, 10); + System.out.println(userJListModel.getSize()); + System.out.println("test"); + + contentPane.add(userJList, gbc_userList); } /** @@ -155,7 +187,20 @@ public class ChatWindow extends JFrame { + ""); } - public static void main(String[] args) { + public void addUserToList(User user) { + userList.add(user); + + } + + public void printUserListElements() { + for (int i = 0; i < userList.size(); i++) { + System.out.println(userList.get(i).getName()); + System.out.println(userList.get(i).getID()); + } + } + + public static void main(String[] args) + throws ClientProtocolException, IOException, SAXException, ParserConfigurationException { EventQueue.invokeLater(() -> { try { ChatWindow frame = new ChatWindow(); @@ -164,5 +209,7 @@ public class ChatWindow extends JFrame { e.printStackTrace(); } }); + envoyClient.getUsersListXml(); + System.out.println("asd"); } } \ No newline at end of file