Dio koda koji obradjuje iznajmljivanje, na serveru:
Code:
//u konstruktoru klase su kreirani oos i ois objekti klasa ObjectOutputStream i ObjectInputStream, respektivno
String request = (String)ois.readObject();
//...dio koda za obradu drugih zahtjeva
//obrada zahtjeva za pretragu knjige
if(request.startsWith("RENT")) {
//uz rent sa klijenta se salje i username pa zato split
String[] strings = request.split("#");
for(int i = 0; i < Server.bookList.size(); i++) {
if(Server.bookList.get(i).getBookName().equals(strings[1]) &&
Server.bookList.get(i).getIsItAvailable()) {
oos.writeObject("OK");
oos.flush();
Server.bookList.get(i).setIsItAvailable(false); // u klasi Knjiga imam bool atribut isItAvailable
final Knjiga knjiga = Server.bookList.get(i);
System.out.println(request);
new Thread() {
public void run() {
System.out.println("USLO U TRED!");
try {
Random r = new Random();
int rand = r.nextInt(30000) + 20000;
Thread.sleep(rand);
knjiga.setIsItAvailable(true);
String name = knjiga.getBookName();
oos.writeObject("AVAILABLE" + "#" + name); // ovde puca, ne posalje ovo
System.out.println("Poslije vrajt objekta");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}.start();
oos.flush();
} else {
oos.writeObject("ERROR");
}
}
}
//... jos koda za obradu zahtjeva :)
oos.close();
ois.close();
sock.close();
//u konstruktoru klase su kreirani oos i ois objekti klasa ObjectOutputStream i ObjectInputStream, respektivno
String request = (String)ois.readObject();
//...dio koda za obradu drugih zahtjeva
//obrada zahtjeva za pretragu knjige
if(request.startsWith("RENT")) {
//uz rent sa klijenta se salje i username pa zato split
String[] strings = request.split("#");
for(int i = 0; i < Server.bookList.size(); i++) {
if(Server.bookList.get(i).getBookName().equals(strings[1]) &&
Server.bookList.get(i).getIsItAvailable()) {
oos.writeObject("OK");
oos.flush();
Server.bookList.get(i).setIsItAvailable(false); // u klasi Knjiga imam bool atribut isItAvailable
final Knjiga knjiga = Server.bookList.get(i);
System.out.println(request);
new Thread() {
public void run() {
System.out.println("USLO U TRED!");
try {
Random r = new Random();
int rand = r.nextInt(30000) + 20000;
Thread.sleep(rand);
knjiga.setIsItAvailable(true);
String name = knjiga.getBookName();
oos.writeObject("AVAILABLE" + "#" + name); // ovde puca, ne posalje ovo
System.out.println("Poslije vrajt objekta");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}.start();
oos.flush();
} else {
oos.writeObject("ERROR");
}
}
}
//... jos koda za obradu zahtjeva :)
oos.close();
ois.close();
sock.close();
Sa klijentske strane dio koda koji obradi rezultate
Code:
rent.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
try {
InetAddress addr = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket(addr, TCP_PORT);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
for(int i = 0; i < purchasedBooks.size(); i++) {
if(purchasedBooks.get(i).getChecked()) {
oos.writeObject("RENT" + "#" + purchasedBooks.get(i).getBookName());
String read = (String) ois.readObject();
if(read.equals("OK")) {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Obavjestenje");
alert.setContentText("Uspjesno ste iznajmili knjigu.");
alert.showAndWait();
} else if(read.equals("ERROR")){
Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("Obavjestenje");
alert.setContentText("Knjiga je vec iznajmljena, probajte ponovo za minut");
alert.showAndWait();
} else {
String string = (String) ois.readObject();
System.out.println(string);
String strings[] = string.split("#");
Alert alert = new Alert(AlertType.INFORMATION);
System.out.println(strings[1]);
alert.setTitle("Obavjestenje");
alert.setContentText("Knjiga " + strings[1] + "je ponovo dostupna za iznajmljivanje.");
alert.showAndWait();
}
}
}
oos.close();
ois.close();
socket.close();
} catch(Exception e) {
e.printStackTrace();
}
}
});
rent.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
try {
InetAddress addr = InetAddress.getByName("127.0.0.1");
Socket socket = new Socket(addr, TCP_PORT);
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
for(int i = 0; i < purchasedBooks.size(); i++) {
if(purchasedBooks.get(i).getChecked()) {
oos.writeObject("RENT" + "#" + purchasedBooks.get(i).getBookName());
String read = (String) ois.readObject();
if(read.equals("OK")) {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Obavjestenje");
alert.setContentText("Uspjesno ste iznajmili knjigu.");
alert.showAndWait();
} else if(read.equals("ERROR")){
Alert alert = new Alert(AlertType.WARNING);
alert.setTitle("Obavjestenje");
alert.setContentText("Knjiga je vec iznajmljena, probajte ponovo za minut");
alert.showAndWait();
} else {
String string = (String) ois.readObject();
System.out.println(string);
String strings[] = string.split("#");
Alert alert = new Alert(AlertType.INFORMATION);
System.out.println(strings[1]);
alert.setTitle("Obavjestenje");
alert.setContentText("Knjiga " + strings[1] + "je ponovo dostupna za iznajmljivanje.");
alert.showAndWait();
}
}
}
oos.close();
ois.close();
socket.close();
} catch(Exception e) {
e.printStackTrace();
}
}
});