diff options
| author | Paul Buetow <paul@buetow.org> | 2009-02-18 23:01:21 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2009-02-18 23:01:21 +0000 |
| commit | 89c679eb813611a2ede208b4c8e27c7f596b3be7 (patch) | |
| tree | f44c19435286e78b9e8002990e1b55183a4fbc49 /sources/server/NetCalendarServer.java | |
| parent | 177f346a9bbe455dc12fd26dfa2c586585c28c1e (diff) | |
added copyright to header
Diffstat (limited to 'sources/server/NetCalendarServer.java')
| -rw-r--r-- | sources/server/NetCalendarServer.java | 274 |
1 files changed, 139 insertions, 135 deletions
diff --git a/sources/server/NetCalendarServer.java b/sources/server/NetCalendarServer.java index ad02d2b..6fe6f74 100644 --- a/sources/server/NetCalendarServer.java +++ b/sources/server/NetCalendarServer.java @@ -1,3 +1,7 @@ +/* NetCalendar 2006, 2009 (c) Dipl.-Inform. (FH) Paul C. Buetow + * http://netcalendar.buetow.org - netcalendar@dev.buetow.org + */ + /** * */ @@ -18,143 +22,143 @@ import shared.remotecall.*; * @author buetow */ public class NetCalendarServer extends Thread { - private int iPort; - private String sWorkdir; - - /** - * Creates a NetCalendarServer instance and runs it as a thread. - * @param iPort Specifies the server port of the server to be used. - * @param sWorkdir Specifies the working directory of the server. - */ - public NetCalendarServer(int iPort, String sWorkdir) { - this.iPort = iPort; - this.sWorkdir = sWorkdir; - - start(); - } - - /** - * This method initializes a new server socket. - * @return Returns the server socket object. - */ - private ServerSocket makeServerSocket() throws IOException { - if (!Config.getBooleanValue("use_ssl")) - return new ServerSocket(iPort); - - ServerSocketFactory sslSocketFactory = SSLServerSocketFactory.getDefault(); - return sslSocketFactory.createServerSocket(iPort); - } - - /** - * This method specifies the start method of the Thread. Its setting up the server port. - */ - public void run() { - ServerSocket serverSocket = null; - Socket socket = null; - - // Read and parse the whole calendar database from file! - CalendarFormatParser parser = new CalendarFormatParser(); - parser.setWorkdir(sWorkdir); - parser.start(); - - CalendarDatabase calendarDatabase = new CalendarDatabase(parser.getCategories()); - - try { - serverSocket = makeServerSocket(); - - while (true) { - // This will wait for a connection to be made to this socket. - socket = serverSocket.accept(); - // serverSocket.accept(); - socket.setKeepAlive(true); - - // Recieve the client's request object - InputStream inputStream = socket.getInputStream(); - ObjectInput objectInput = new ObjectInputStream(inputStream); - ClientRequest clientRequest = (ClientRequest) objectInput.readObject(); - - if (!clientRequest.checkPassphrase(Config.getStringValue("passphrase", false))) { - Main.infoMessage("Server: Client refused, wrong passphrase!"); - - // Check if a event has been modified! - } else if (clientRequest.requestsNewEvents()) { - Main.infoMessage("Server: Client requests new events"); - - // Get all calendar events which match the request - Vector vecEvents = calendarDatabase.getMatchingEvents(clientRequest); - ServerResponse serverResponse = new ServerResponse(vecEvents); - - OutputStream outputStream = socket.getOutputStream(); - ObjectOutput objectOutput = new ObjectOutputStream(outputStream); - objectOutput.writeObject(serverResponse); - objectOutput.flush(); - objectOutput.close(); - - } else if (clientRequest.actionIs(ClientRequest.MODIFY_EVENT)) { - Main.infoMessage("Server: Client wants to modify an event"); - calendarDatabase.modifyEvent(clientRequest); - // if (Config.getBooleanValue("client_run")) - calendarDatabase.flush(); - - } else if (clientRequest.actionIs(ClientRequest.DELETE_EVENT)) { - Main.infoMessage("Server: Client wants to delete an event"); - calendarDatabase.deleteEvent(clientRequest); - // if (Config.getBooleanValue("client_run")) - calendarDatabase.flush(); - - } else if (clientRequest.actionIs(ClientRequest.ADD_EVENT)) { - Main.infoMessage("Server: Client wants to add an event"); - calendarDatabase.addEvent(clientRequest); - // if (Config.getBooleanValue("client_run")) - calendarDatabase.flush(); - - } else if (clientRequest.actionIs(ClientRequest.RENAME_CATEGORY)) { - Main.infoMessage("Server: Client wants to rename a category"); - calendarDatabase.renameCategory(clientRequest); - // if (Config.getBooleanValue("client_run")) - calendarDatabase.flush(); - - } else if (clientRequest.actionIs(ClientRequest.DELETE_CATEGORY)) { - Main.infoMessage("Server: Client wants to delete a category (NYI)"); - calendarDatabase.deleteCategory(clientRequest); - // if (Config.getBooleanValue("client_run")) - calendarDatabase.flush(); - - } else if (clientRequest.actionIs(ClientRequest.RELOAD_DATABASE)) { - // Read and parse the whole calendar database from file! - parser = new CalendarFormatParser(); - parser.setWorkdir(sWorkdir); - parser.start(); - - calendarDatabase = new CalendarDatabase(parser.getCategories()); - - } else if (clientRequest.actionIs(ClientRequest.FLUSH_DATABASE)) { - Main.infoMessage("Server: Client wants to flush the database"); - calendarDatabase.flush(); - - } else if (clientRequest.actionIs(ClientRequest.SHUTDOWN_SERVER)) { - Main.infoMessage("Server: Client wants the server to shut down"); - calendarDatabase.flush(); - socket.close(); - - if (Config.getBooleanValue("client_run")) { - Main.infoMessage("Server: Shutting down the server thread"); - socket.close(); - serverSocket.close(); - break; - } else { - Main.exit(0); - } - } + private int iPort; + private String sWorkdir; + + /** + * Creates a NetCalendarServer instance and runs it as a thread. + * @param iPort Specifies the server port of the server to be used. + * @param sWorkdir Specifies the working directory of the server. + */ + public NetCalendarServer(int iPort, String sWorkdir) { + this.iPort = iPort; + this.sWorkdir = sWorkdir; + + start(); + } - socket.close(); - } + /** + * This method initializes a new server socket. + * @return Returns the server socket object. + */ + private ServerSocket makeServerSocket() throws IOException { + if (!Config.getBooleanValue("use_ssl")) + return new ServerSocket(iPort); - } catch (ClassNotFoundException e) { - Main.infoMessage("Error: Server error during serialization: " + e.getMessage()); + ServerSocketFactory sslSocketFactory = SSLServerSocketFactory.getDefault(); + return sslSocketFactory.createServerSocket(iPort); + } - } catch (IOException e) { - Main.infoMessage("Error: Server error during serialization: " + e.getMessage()); + /** + * This method specifies the start method of the Thread. Its setting up the server port. + */ + public void run() { + ServerSocket serverSocket = null; + Socket socket = null; + + // Read and parse the whole calendar database from file! + CalendarFormatParser parser = new CalendarFormatParser(); + parser.setWorkdir(sWorkdir); + parser.start(); + + CalendarDatabase calendarDatabase = new CalendarDatabase(parser.getCategories()); + + try { + serverSocket = makeServerSocket(); + + while (true) { + // This will wait for a connection to be made to this socket. + socket = serverSocket.accept(); + // serverSocket.accept(); + socket.setKeepAlive(true); + + // Recieve the client's request object + InputStream inputStream = socket.getInputStream(); + ObjectInput objectInput = new ObjectInputStream(inputStream); + ClientRequest clientRequest = (ClientRequest) objectInput.readObject(); + + if (!clientRequest.checkPassphrase(Config.getStringValue("passphrase", false))) { + Main.infoMessage("Server: Client refused, wrong passphrase!"); + + // Check if a event has been modified! + } else if (clientRequest.requestsNewEvents()) { + Main.infoMessage("Server: Client requests new events"); + + // Get all calendar events which match the request + Vector vecEvents = calendarDatabase.getMatchingEvents(clientRequest); + ServerResponse serverResponse = new ServerResponse(vecEvents); + + OutputStream outputStream = socket.getOutputStream(); + ObjectOutput objectOutput = new ObjectOutputStream(outputStream); + objectOutput.writeObject(serverResponse); + objectOutput.flush(); + objectOutput.close(); + + } else if (clientRequest.actionIs(ClientRequest.MODIFY_EVENT)) { + Main.infoMessage("Server: Client wants to modify an event"); + calendarDatabase.modifyEvent(clientRequest); + // if (Config.getBooleanValue("client_run")) + calendarDatabase.flush(); + + } else if (clientRequest.actionIs(ClientRequest.DELETE_EVENT)) { + Main.infoMessage("Server: Client wants to delete an event"); + calendarDatabase.deleteEvent(clientRequest); + // if (Config.getBooleanValue("client_run")) + calendarDatabase.flush(); + + } else if (clientRequest.actionIs(ClientRequest.ADD_EVENT)) { + Main.infoMessage("Server: Client wants to add an event"); + calendarDatabase.addEvent(clientRequest); + // if (Config.getBooleanValue("client_run")) + calendarDatabase.flush(); + + } else if (clientRequest.actionIs(ClientRequest.RENAME_CATEGORY)) { + Main.infoMessage("Server: Client wants to rename a category"); + calendarDatabase.renameCategory(clientRequest); + // if (Config.getBooleanValue("client_run")) + calendarDatabase.flush(); + + } else if (clientRequest.actionIs(ClientRequest.DELETE_CATEGORY)) { + Main.infoMessage("Server: Client wants to delete a category (NYI)"); + calendarDatabase.deleteCategory(clientRequest); + // if (Config.getBooleanValue("client_run")) + calendarDatabase.flush(); + + } else if (clientRequest.actionIs(ClientRequest.RELOAD_DATABASE)) { + // Read and parse the whole calendar database from file! + parser = new CalendarFormatParser(); + parser.setWorkdir(sWorkdir); + parser.start(); + + calendarDatabase = new CalendarDatabase(parser.getCategories()); + + } else if (clientRequest.actionIs(ClientRequest.FLUSH_DATABASE)) { + Main.infoMessage("Server: Client wants to flush the database"); + calendarDatabase.flush(); + + } else if (clientRequest.actionIs(ClientRequest.SHUTDOWN_SERVER)) { + Main.infoMessage("Server: Client wants the server to shut down"); + calendarDatabase.flush(); + socket.close(); + + if (Config.getBooleanValue("client_run")) { + Main.infoMessage("Server: Shutting down the server thread"); + socket.close(); + serverSocket.close(); + break; + } else { + Main.exit(0); + } + } + + socket.close(); + } + + } catch (ClassNotFoundException e) { + Main.infoMessage("Error: Server error during serialization: " + e.getMessage()); + + } catch (IOException e) { + Main.infoMessage("Error: Server error during serialization: " + e.getMessage()); + } } - } } |
