Skip to content
Snippets Groups Projects
UserThread.java 2.05 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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;
    
                do {
                    clientMessage = reader.readLine();
                    String[] args = clientMessage.split("/");
                    switch (args[0]) {
                        case "addEmployee":
                            if(args.length == 3){
                                model.staff.addEmployee(args[1], args[2]);
                            }
                            break;
                        case "removeEmployee":
                            try {
                                model.staff.removeEmployee(Integer.parseInt(args[1]));
                            } catch (NumberFormatException e) {
                                System.out.println("Client Message Error: " + clientMessage);
                            }
                            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);
        }
    }