Hello, I have contributed next to nothing to this site even though I have gained valueable info from it. So, I want to give you details on how I approached the common design questions. Firstly, I used adapters for remote and local communications. The local adapter merely created a local instance of Data. The remote adapter did an RMI lookup on the remote server. Next, I did not use client ids for locking. I created a Lock class that used a HashMap to keep track of what records were locked, but not who had locked them. therefore, I did not have to change the signature of lock/unlock to accept a client id. Upon Lock creation, if a certain system property was set, a lock monitor was started. The monitor traversed the HashMap every 4 seconds, unlocking records that have been locked longer than 4 seconds. In documentation, which I got 20 for 20, I did a clientdoc, a serverdoc, and a design doc. I followed the Readme file contents as specified in the instructions accompanying the project download. I spent weeks (part-time) on the GUI. I was penalized 7 points on that. I opted to use the old fashioned way of no GUI builder, which was probably a mistake, but I learned all about layout managers and containers first hand this way.
good job Mike. question though. what do you mean by "fashioned way of no GUI builder"? You didnt use a GUI tool like JBuilder? or use used old style awt Layouts, instead of new BoxLayout? I would imagine they dont penalize you building your GUI manually. Also, did you follow Sun's GUI Guidlines? Thanks
No, i didn't follow Sun's gui guide. I meant "old fashioned." sorry, too much coffee. I didn't use JBuilder because I wanted to really learn how the gui stuff works. The worst of which, are the layou managers. I used GridBagLayout a lot. I used JVM1.3 to develop, but when i used JVM1.2 at work to test it out, the layout was totally unusable.
I still dont think they would take away points for NOT using a GUI tool, if anything they would probably give you some for it. Anyways, I am trying use exclusively swing Boxes with all these glues, struts and rigits. It's quite comfortable once you get passed the initial confusion.
How do you handle the client's choice of local vs. network, through command line or through the GUI such as JOptionPane? The reason I am asking this is that it looks like the client can have only limited command parameters such as DNS name, port no. etc., and no other command parameters are allowed. But I think to give the client choice is really a good idea and the doc doesn't say this choice has to be made from GUI.
Eric, the answer is both. My initial connection is specified by command line parameters (could be either file or rmi, if both are present I ignore rmi and connect locally -- just my choice). The spec insists that your app be able to re-connect on the fly so, there has to be a connect/disconnect/reconnect dialog of your choice. And you must be able to handle it properly, including user notifications, outdated data removal, menu/bar updates...blah blah blah Hope this helps
Hi guys, my assignment did not have to reconnect on the fly. Once it was connected either locally or remotely, it did not have to change. I used a dialog box to get the connection type from the user. Two radio buttons. One for local connection and the other for remote connection. If the user pressed the remote connection, it automatically expanded, adding 2 new fields for remote machine IP address and remote machine port #, both of which defaulted to "localhost" and 1099, respectively.
Mike may I know, in your server design, did u used single instance of Data class or multiple instance of Data class ? Since I am proceeding thr keeping single instance of Data class, let me know if anything wrong in it.
pie. tiny ad:
Building a Better World in your Backyard by Paul Wheaton and Shawn Klassen-Koop