-
Rafi authored
Fixed bugs with that caused in consistencies with message sending between client and server. All employee data should be updated to all clients when employee data is modified in the database. The client should have an updated copy of employee information.
Rafi authoredFixed bugs with that caused in consistencies with message sending between client and server. All employee data should be updated to all clients when employee data is modified in the database. The client should have an updated copy of employee information.
UserThread.java 2.83 KiB
package com.example.schedulerapp;
import java.io.*;
import java.net.*;
/**
* This thread handles connection for each connected client, so the server
* can handle multiple clients at the same time.
*
* @author www.codejava.net
*/
public class UserThread extends Thread {
private Socket socket;
private ScheduleServer server;
private PrintWriter writer;
private Model model;
public UserThread(Socket socket, ScheduleServer server, Model model) {
this.socket = socket;
this.server = server;
this.model = model;
}
public void run() {
try {
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
OutputStream output = socket.getOutputStream();
writer = new PrintWriter(output, true);
String serverMessage;
String clientMessage;
serverMessage = model.staff.getEmployees();
sendMessage(serverMessage);
do {
clientMessage = reader.readLine();
String[] args = clientMessage.split("/");
switch (args[0]) {
case "addEmployee":
if(args.length == 3){
model.staff.addEmployee(args[1], args[2]);
serverMessage = model.staff.getEmployees();
server.broadcast(serverMessage);
}
break;
case "removeEmployee":
try {
model.staff.removeEmployee(Integer.parseInt(args[1]));
serverMessage = model.staff.getEmployees();
server.broadcast(serverMessage);
} catch (NumberFormatException e) {
System.out.println("Client Message Error: " + clientMessage);
}
break;
case "allEmployees":
//Returns all Employees
serverMessage = model.staff.getEmployees();
sendMessage(serverMessage);
break;
case "allShifts":
serverMessage = model.schedule.allShifts();
sendMessage(serverMessage);
break;
}
} while (!clientMessage.equals("logout"));
server.removeUser(this);
socket.close();
} catch (IOException ex) {
System.out.println("Error in UserThread: " + ex.getMessage());
ex.printStackTrace();
}
}
/**
* Sends a message to the client.
*/
void sendMessage(String message) {
writer.println(message);
}
}