The following represents the design of the alice application. This is meant as a living document and design can change from time to time. The design of alice is a two part application the first part being the underlying system services or the Alice server. This process is to either connect locally from where the alice application is started to being initiated and connect to a networked server. In either case the connection between the GUI (Graphical User Interface) and the Alice server interact through the interface libraries as found in the org.wcb.autohome.interfaces directory.
The GUI is used as a primary conduit for end users to interact with the alice server and utimatly to the X10 interface. Since there are two systems in this design, there are two configuration files that are setup when the application starts. The first is the jhome.prop file located in the users home directory. Depending on the users operating system this could be in a number of locations. On Windows 95,98 machines this is usually in c:\Windows\System\ for UNIX based Os's this is their assigned home directory. The additional file created is the HASConfig.prop file which houses information about the X10 interace settings and the serial port.
Currently when the user first start the Java Home Automation program it will create these files if they are missing and ask the user to restart the program.
As is noted in the UML diagram the basic GUI objects are to the left of the diagram and the daemons and session management which interfaces with the serial port are to the right of the diagram. The daemons can be started either with the JHomeServer class, which then through RMI allows the Java Home Automation GUI to attach to it. The GUI obtains its information of the location of the server through the jhome.prop file in the rmi.server value being set to the IP or host address of the daemon.
Again all messages between the client and the daemon(server) are sent via the interface classes(org.wcb.authome.interfaces). If the daemon(server) is running on the local box then the JHomeServer class is never initiated and only an instance of the org.wcb.autohome.AutoHomeAdminSession is created and used. In this case the GUI still interacts via the interface classes to keep the messages the same.
With this design, you could change the user interfaces from that of a Swing GUI to something like servlets or JSP although the interfaces and dameons have not been created into Java Beans adding the additional wrapers to make it so would not be difficult.
The typical startup sequence is such that calling getInstance() on the org.wcb.autohome.AutoHomeAdminSession (For the swing application this will load images from the jar resources and read property files from the user home directory) or the org.wcb.autohome.AutohomeDaemonSession (For web application) can be called to load properties files from a specified resource location. The following sequence diagram shows how the swing application sequence starts up.