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 RafisWeirdClass rafisWeirdClass; public UserThread(Socket socket, ScheduleServer server, RafisWeirdClass rafisWeirdClass) { this.socket = socket; this.server = server; this.rafisWeirdClass = rafisWeirdClass; } 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 = rafisWeirdClass.staff.getEmployees(); sendMessage(serverMessage); serverMessage = rafisWeirdClass.schedule.allShifts(); 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; case "addShift": try { 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 serverMessage = rafisWeirdClass.staff.getEmployees(); sendMessage(serverMessage); break; case "allShifts": serverMessage = rafisWeirdClass.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); } }