
How to run / update the Server:
===============================
 
 - if the server is running:
 
   - become root with "ksu"
   
   - check the server's process id with "ps -fae | grep java"
 
   - kill it with "kill -9 processID"
 
 - build your project in Eclipse by clicking on Run
 
 - go into your Eclipse workspace and copy over
 
   - build/app/Server.class into /vol/grail/users/grail_service/server
 
   - build/app/pipe/server/* into /vol/grail/users/grail_service/server/pipe/server
 
   - build/app/pipe/server/serverCommon/* into /vol/grail/users/grail_service/server/pipe/server/serverCommon
 
   - if your classes import any non-standard java files, make sure that their class files
     are also located on the server with the same directory structure as the package name   
 
 - log on to camelot01 as yourself, go to /vol/grail/users/grail_service/server and do a 
   "chmod -R 755 *" to change permissions on all files so that grail_service (the user 
   that the server is executing under) has access to all class files. Most files won't be 
   changeable, since they belong to grail_service, but the ones that we have updated will 
   be
   
 - become root with "ksu" (if you haven't done so already) and run the server with
   "/etc/init.d/grail_service start"
   
 - use the client to communicate with the server
   


Things that still need to be done:
==================================     

 - can't submit a second job when one is already running . It just keeps saying
   "Awaiting server's response"
   
 - when a timeout occurs, the user should be notified of this in the status bar,
   rather than the bar just going red and telling them to click on the nodes to
   view their results

 - in State Label Manager, when attempting to edit a state group, check if that
   state group has actually been defined for the currently loaded model
   
 - when a query is submitted for analysis, check that all state groups and actions
   that are referenced in the labels actually exist for the current model

 - Macros:
   
   - some of the more complicated macros don't show well with the arcs when being edited
   
   - cater for the special case when the user wants to import a macro that has already
     been defined - ask if he wants to keep the old one or overwrite.
   
   - pre-load macros that have been saved in the local repository so that they become
     assignable
   
   - when a macro is loaded in for editing, invoke the NL representation for the top
     node
     
   - when importing a query that contains a macro, also create a separate XML file for
     the macro, because otherwise the macro cannot be edited -> do this using the 
     MacroWriter class, as it needs to add the state and action labels to the XML file
     that the macro bit in the query XML doesn't contain
   
   - when a macro has been loaded in, check that all state groups that are referenced
     by state labels are defined on the current model
    
   - when loading in queries and macros, check whether state and action labels apply
     to the currently loaded model and deal with the case when they don't    

   - make JTextField that displays macro descriptions a JEditorPane so that the text is 
     shown with line wrap
   
