Newer
Older
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;
public UserThread(Socket socket, ScheduleServer server, RafisWeirdClass rafisWeirdClass) {
this.socket = socket;
this.server = server;
InputStream input = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
OutputStream output = socket.getOutputStream();
writer = new PrintWriter(output, true);
String serverMessage;
String clientMessage;
sendMessage(serverMessage);
do {
clientMessage = reader.readLine();
String[] args = clientMessage.split("/");
switch (args[0]) {
case "addEmployee":
if(args.length == 3){
rafisWeirdClass.staff.addEmployee(args[1], args[2]);
serverMessage = rafisWeirdClass.staff.getEmployees();
server.broadcast(serverMessage);
}
break;
case "removeEmployee":
try {
rafisWeirdClass.staff.removeEmployee(Integer.parseInt(args[1]));
serverMessage = rafisWeirdClass.staff.getEmployees();
server.broadcast(serverMessage);
} catch (NumberFormatException e) {
System.out.println("Client Message Error: " + clientMessage);
}
break;
rafisWeirdClass.schedule.addShift(Integer.parseInt(args[1]), args[2], Integer.parseInt(args[3]), Integer.parseInt(args[4]));
serverMessage = rafisWeirdClass.schedule.allShifts();
server.broadcast(serverMessage);
} catch (NumberFormatException exception) {
System.out.println("Error: Formatting exception while adding shift");
}
break;
case "removeShift":
try {
rafisWeirdClass.schedule.removeShift(args[1], args[2], Integer.parseInt(args[3]), Integer.parseInt(args[4]));
serverMessage = rafisWeirdClass.schedule.allShifts();
server.broadcast(serverMessage);
} catch (NumberFormatException exception) {
System.out.println("Error: Formatting exception while removing shift");
}
break;
case "allEmployees":
//Returns all Employees
sendMessage(serverMessage);
break;
case "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);
}
}