aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorcirakg <ciraboxkg@gmail.com>2022-12-30 04:32:03 +0100
committercirakg <ciraboxkg@gmail.com>2022-12-30 04:32:03 +0100
commit110a2354cff010f88b59dbb302192fce0cc6a9ac (patch)
tree0742a34829c7be0f5d68fa70b6e2c7342dcb9922 /src/main
parent336af3217840237bba99935d63631d199d5c0e3e (diff)
Omogucen prikaz online korisnika.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/database/Database.java26
-rw-r--r--src/main/java/models/ComboBoxUser.java16
-rw-r--r--src/main/java/models/User.java28
-rw-r--r--src/main/java/models/UserListWrapper.java45
-rw-r--r--src/main/java/pokemon/IService.java1
-rw-r--r--src/main/java/pokemon/Server.java70
-rw-r--r--src/main/java/pokemon/Service.java6
-rw-r--r--src/main/java/ui/ChooseOpponentPanel.java66
-rw-r--r--src/main/java/ui/LoginPanel.java4
-rw-r--r--src/main/java/ui/MainFrame.java13
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();
- }
+
}
}