There would be a factory for the ServerAdapter, which would get the correct implementation based on the mode (alone or server).
The RoomsDAO is the class that communicates with the Data class (which implements DBAccess). By using this approach, both networked and non-networked modes are using the "same code". However the second approach bypasses the network.
My question is: Is my design compliant with the requirement below?
"The operating mode is selected using the single command line argument that is permitted. Architecturally, this mode must use the database and GUI from the networked form, but must not use the network server code at all. "
I was not sure of what exactly was the "network server code". I see that it is meant to be the class that implements the java.rmi.Remote interface, not the particular class that has the "server code" (RoomsDAO) that deals with the Data.
So I thought I was violating the requirement because the same "server code" is responsible for dealing with the data in the server and alone modes. However, the network stuff is only in the RemoteServerAdapter.