summaryrefslogtreecommitdiff
path: root/sources/server/NetCalendarServer.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2009-02-18 23:01:21 +0000
committerPaul Buetow <paul@buetow.org>2009-02-18 23:01:21 +0000
commit89c679eb813611a2ede208b4c8e27c7f596b3be7 (patch)
treef44c19435286e78b9e8002990e1b55183a4fbc49 /sources/server/NetCalendarServer.java
parent177f346a9bbe455dc12fd26dfa2c586585c28c1e (diff)
added copyright to header
Diffstat (limited to 'sources/server/NetCalendarServer.java')
-rw-r--r--sources/server/NetCalendarServer.java274
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());
+ }
}
- }
}