diff options
author | cirakg <ciraboxkg@gmail.com> | 2022-12-30 04:32:03 +0100 |
---|---|---|
committer | cirakg <ciraboxkg@gmail.com> | 2022-12-30 04:32:03 +0100 |
commit | 110a2354cff010f88b59dbb302192fce0cc6a9ac (patch) | |
tree | 0742a34829c7be0f5d68fa70b6e2c7342dcb9922 /src/main | |
parent | 336af3217840237bba99935d63631d199d5c0e3e (diff) |
Omogucen prikaz online korisnika.
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/database/Database.java | 26 | ||||
-rw-r--r-- | src/main/java/models/ComboBoxUser.java | 16 | ||||
-rw-r--r-- | src/main/java/models/User.java | 28 | ||||
-rw-r--r-- | src/main/java/models/UserListWrapper.java | 45 | ||||
-rw-r--r-- | src/main/java/pokemon/IService.java | 1 | ||||
-rw-r--r-- | src/main/java/pokemon/Server.java | 70 | ||||
-rw-r--r-- | src/main/java/pokemon/Service.java | 6 | ||||
-rw-r--r-- | src/main/java/ui/ChooseOpponentPanel.java | 66 | ||||
-rw-r--r-- | src/main/java/ui/LoginPanel.java | 4 | ||||
-rw-r--r-- | src/main/java/ui/MainFrame.java | 13 |
10 files changed, 210 insertions, 65 deletions
diff --git a/src/main/java/database/Database.java b/src/main/java/database/Database.java index e5e52e6..80d195c 100644 --- a/src/main/java/database/Database.java +++ b/src/main/java/database/Database.java @@ -301,5 +301,31 @@ public class Database { e.printStackTrace(); } } + public User getUserById(long id){ + User user=null; + try { + String sql="SELECT * FROM user WHERE id=?"; + PreparedStatement statement = conn.prepareStatement(sql); + statement.setLong(1, id); + ResultSet res=statement.executeQuery(); + if(res.next()) { + user=new User(); + user.setId(res.getLong("id")); + user.setAdmin(res.getBoolean("admin")); + user.setUsername(res.getString("username")); + if(res.getObject("pokemonId")!=null) + user.setmonsterId(res.getLong("pokemonId")); + else + user.setmonsterId(-1); + } + + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return user; + + } } diff --git a/src/main/java/models/ComboBoxUser.java b/src/main/java/models/ComboBoxUser.java new file mode 100644 index 0000000..562f882 --- /dev/null +++ b/src/main/java/models/ComboBoxUser.java @@ -0,0 +1,16 @@ +package models; + +public class ComboBoxUser { + User user; + @Override + public String toString() { + return user.getUsername(); + } + public ComboBoxUser() { + + } + public ComboBoxUser(User user) { + this.user=user; + } + +} diff --git a/src/main/java/models/User.java b/src/main/java/models/User.java index 3c341a2..427f257 100644 --- a/src/main/java/models/User.java +++ b/src/main/java/models/User.java @@ -1,5 +1,7 @@ package models; +import java.beans.XMLEncoder; +import java.io.ByteArrayOutputStream; import java.io.Serializable; public class User implements Serializable{ @@ -53,4 +55,30 @@ public class User implements Serializable{ super(); } + @Override + public String toString() + { + XMLEncoder coder = null; + String xmlString = null; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + try + { + coder = new XMLEncoder(baos); + coder.writeObject(this); + + } + catch(Exception e) + { + System.out.println(e); + } + finally + { + coder.close(); + } + + xmlString = new String(baos.toByteArray()); + + return xmlString.replace("\n", " "); + } } diff --git a/src/main/java/models/UserListWrapper.java b/src/main/java/models/UserListWrapper.java new file mode 100644 index 0000000..b1e470a --- /dev/null +++ b/src/main/java/models/UserListWrapper.java @@ -0,0 +1,45 @@ +package models; + +import java.beans.XMLEncoder; +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; + +public class UserListWrapper { + public ArrayList<User> users=new ArrayList<>(); + public UserListWrapper() { + + } + public ArrayList<User> getUsers() { + return users; + } + public void setUsers(ArrayList<User> users) { + this.users = users; + } + @Override + public String toString() + { + XMLEncoder coder = null; + String xmlString = null; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + try + { + coder = new XMLEncoder(baos); + coder.writeObject(this); + + } + catch(Exception e) + { + System.out.println(e); + } + finally + { + coder.close(); + } + + xmlString = new String(baos.toByteArray()); + + return xmlString.replace("\n", " "); + } + +} diff --git a/src/main/java/pokemon/IService.java b/src/main/java/pokemon/IService.java index 79ceea0..81b4019 100644 --- a/src/main/java/pokemon/IService.java +++ b/src/main/java/pokemon/IService.java @@ -23,5 +23,6 @@ public interface IService extends Remote { public void deleteUser(long id)throws RemoteException; public boolean addPokemonWithAbilities(PokemonAddModel pokemon)throws RemoteException; public void deleteMonster(long id)throws RemoteException; + public User getUserById(long id) throws RemoteException; } diff --git a/src/main/java/pokemon/Server.java b/src/main/java/pokemon/Server.java index a3296af..ba8b3eb 100644 --- a/src/main/java/pokemon/Server.java +++ b/src/main/java/pokemon/Server.java @@ -12,15 +12,18 @@ import java.rmi.registry.LocateRegistry; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.Map.Entry; import models.CONSTS; import models.User; +import models.UserListWrapper; public class Server implements Runnable { private ServerSocketChannel serverSocketChannel; private Selector selector; private ArrayList<Game> games; HashMap<SocketChannel,Long > players = new HashMap<SocketChannel,Long>(); + ArrayList<SocketChannel> inGame=new ArrayList<SocketChannel>(); IService s; ByteBuffer bb = ByteBuffer.allocate(1024); @@ -129,6 +132,24 @@ public class Server implements Runnable { } } + if(msg[0].equals("REQUESTUSERS")) { + System.out.println("In"); + UserListWrapper wp=new UserListWrapper(); + for(Entry<SocketChannel,Long> player:players.entrySet()) { + if(!inGame.contains(player.getKey())) { + User temp=s.getUserById(player.getValue()); + if(temp != null) + wp.users.add(temp); + } + + + } + System.out.println(wp.toString()); + ByteBuffer buff = ByteBuffer.wrap(wp.toString().getBytes()); + sc.write(buff); + + + } } @@ -141,54 +162,9 @@ public class Server implements Runnable { System.out.println("adress "+address); bb.clear(); - int read = 0; - StringBuilder sb = new StringBuilder(); - - sc.configureBlocking(true); - - while( (read = sc.read(bb)) > 0 ) - { - bb.flip(); - byte[] bytes = new byte[bb.limit()]; - bb.get(bytes); - sb.append(new String(bytes)); - bb.clear(); - sc.configureBlocking(false); - } - - String message = sb.toString(); - - System.out.println("message: " + message); - - String []words = message.split(":"); - System.out.println(words[0]); - if(words[0].trim().equals("LOGIN") == false) - { - System.out.println("Not Login : "); - return; - } - User newUser=new User(); - newUser.setUsername(words[1].trim()); - newUser.setPassword(words[2].trim()); - - User res=s.login(newUser); - if(res == null) - { - message="BADLOGIN"; - ByteBuffer buff = ByteBuffer.wrap(message.getBytes()); - sc.write(buff); - sc.register(selector, SelectionKey.OP_READ, address); - } - else { - message="ACCEPTED"+":"+res.id; - players.put(sc,res.id); - ByteBuffer buff = ByteBuffer.wrap(message.getBytes()); - sc.write(buff); - - sc.register(selector, SelectionKey.OP_READ, address); - - } + sc.register(selector, SelectionKey.OP_READ, address); + diff --git a/src/main/java/pokemon/Service.java b/src/main/java/pokemon/Service.java index 77f4cc4..77a398b 100644 --- a/src/main/java/pokemon/Service.java +++ b/src/main/java/pokemon/Service.java @@ -106,6 +106,12 @@ public class Service extends UnicastRemoteObject implements IService { db.deleteMonster(id); } + + @Override + public User getUserById(long id) throws RemoteException { + Database db=Database.getInstance(); + return db.getUserById(id); + } } diff --git a/src/main/java/ui/ChooseOpponentPanel.java b/src/main/java/ui/ChooseOpponentPanel.java index e508f6e..1b63fca 100644 --- a/src/main/java/ui/ChooseOpponentPanel.java +++ b/src/main/java/ui/ChooseOpponentPanel.java @@ -1,25 +1,81 @@ package ui; import javax.swing.JPanel; +import javax.swing.JLabel; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; + +import models.ComboBoxUser; +import models.User; +import models.UserListWrapper; + +import javax.swing.JTextArea; +import java.awt.SystemColor; +import java.awt.Font; +import java.awt.BorderLayout; +import java.awt.Color; import javax.swing.JButton; import javax.swing.JComboBox; +import javax.swing.JFrame; + +import java.awt.event.ActionListener; +import java.beans.XMLDecoder; +import java.io.ByteArrayInputStream; +import java.nio.ByteBuffer; +import java.nio.channels.SocketChannel; +import java.util.ArrayList; +import java.util.List; +import java.awt.event.ActionEvent; public class ChooseOpponentPanel extends JPanel { - /** - * Create the panel. - */ + JButton btnSendGameRequest; + JComboBox comboBox; public ChooseOpponentPanel() { setLayout(null); - JButton btnSendGameRequest = new JButton("Send Game Request"); + btnSendGameRequest = new JButton("Send Game Request"); btnSendGameRequest.setBounds(134, 153, 166, 23); add(btnSendGameRequest); - JComboBox comboBox = new JComboBox(); + comboBox = new JComboBox(); comboBox.setBounds(134, 101, 166, 22); add(comboBox); } + + public void getUsers() { + MainFrame topFrame=(MainFrame) SwingUtilities.getAncestorOfClass(MainFrame.class, ChooseOpponentPanel.this); + try { + SocketChannel client=topFrame.getClient(); + ByteBuffer readBuffer=topFrame.getReadBuffer(); + ByteBuffer buff = ByteBuffer.wrap("REQUESTUSERS".getBytes()); + client.write(buff); + client.configureBlocking(true); + readBuffer.clear(); + StringBuilder sb=new StringBuilder(); + while(client.read(readBuffer)>0) { + System.out.println("uslo"); + readBuffer.flip(); + byte[] bytes = new byte[readBuffer.limit()]; + readBuffer.get(bytes); + sb.append(new String(bytes)); + readBuffer.clear(); + client.configureBlocking(false); + } + XMLDecoder decoder = null; + decoder = new XMLDecoder(new ByteArrayInputStream(sb.toString().getBytes())); + UserListWrapper wp=(UserListWrapper) decoder.readObject(); + decoder.close(); + comboBox.removeAllItems(); + for(User user :wp.getUsers()) { + comboBox.addItem(new ComboBoxUser(user)); + + } + + } catch (Exception e) { + // TODO: handle exception + } + } } diff --git a/src/main/java/ui/LoginPanel.java b/src/main/java/ui/LoginPanel.java index 5ab4c0d..7ec97f1 100644 --- a/src/main/java/ui/LoginPanel.java +++ b/src/main/java/ui/LoginPanel.java @@ -102,8 +102,10 @@ public class LoginPanel extends JPanel { if(response[0].trim().equals("ACCEPTED")) { topFrame.setUserId(Long.parseLong(response[1].trim())); topFrame.getContentPane().removeAll(); - topFrame.getContentPane().add(new ChooseOpponentPanel(),BorderLayout.CENTER); + ChooseOpponentPanel panel=new ChooseOpponentPanel(); + topFrame.getContentPane().add(panel,BorderLayout.CENTER); SwingUtilities.updateComponentTreeUI(topFrame); + panel.getUsers(); }else { diff --git a/src/main/java/ui/MainFrame.java b/src/main/java/ui/MainFrame.java index cfef0ba..cb6c6ca 100644 --- a/src/main/java/ui/MainFrame.java +++ b/src/main/java/ui/MainFrame.java @@ -75,18 +75,7 @@ public class MainFrame extends JFrame implements Runnable { @Override public void run() { while(true) { - try { - - - - - - - - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + } } |