• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Passed with a 142

 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The stats: General Considerations(maximum = 58): 51 Documentation(maximum = 20): 20 GUI(maximum = 24): 24 Server(maximum = 53): 47
Some notes:
I did modify the signature of "lock()" and "unlock()" to enable identification of the locking client.
Used RMI, with very server simple basic design...did create a SecurityManager with a security file provided. I trusted the clients to be good citizens and perform locking, because it is to their advantage to do so. Kept the GUI very minimalist, only implementing booking and flight lookup operations. The GUI was engineered to not know if it was local or remote thru use of what I called the FlightBroker object, which held the info on whether it was local or remote, and made appropriate calls on Data methods.
Good luck!
 
narayanveeramani
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Douglas,
Congratulations!
I had a question. When your client application is invoked using java command, do u provide information using Command Line Runtime parameters regarding whether the database is local or not?
Is it of the format
"java <client App> <flag indicating remote/local db> <DNS Name> <port No> <directory where the db.db file resides>"
thanks,
narayan
 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I had the application, on invocation, put up a panel that asked the user whether they wanted to use remote local database...this choice was then passed on to the construction of the "FlightBroker" object...
 
ruilin yang
Ranch Hand
Posts: 334
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Douglas,
Congradulations! That is great job! Very good design.
I would like to know how you did the documentation. 1) How many files and what covered each ? 2) What editor you used for those docs except for javadoc documents (as html) ?
How many copies of db.db ?
Thanks in advance.
Ruilin Yang
 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Also, as an addendum, let me say a great big "thanks" to all the folks patiently replying to my posts...it made things much clearer as I waded my way thru the SCJD...
Now, as to the documentation, let me just say I followed directions as precisely as I could. I generated the javadoc on all my code and inspected to make sure that it made sense. For the User Guide, I used Acrobat PDF format, which was accepted with nary a murmer. I had minimal online documentation, and did put in tooltips for the various buttons. One copy of db.db...
Regards...
 
narayanveeramani
Greenhorn
Posts: 5
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hey Douglas,
Thanks for your reply. Can you please answer one more question.
The exam requires a Data Client class implementing the
same public methods as the db.Data class. Do they mean
including a common interface/super class for the remote
and the local db.Data classes?
thanks,
narayan
 
ruilin yang
Ranch Hand
Posts: 334
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Douglas for you inf.
 
shailesh sonavadekar
Ranch Hand
Posts: 1874
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Congratulations. That is great score. Can you please put your experiences & study methods , in more details for the benefits of the other javaranchers.
Great. Do hang around & help other javaranchers.
Going for SEJEA now ?
Your Friendly Bartender
Shailesh.
 
Rahul Mahindrakar
Ranch Hand
Posts: 1869
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Congrats Douglas
 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Naravan...your question about the superclass: I "hid" the various public methods of the Data class in a my client "FlightBroker" class. The GUI client is only interested in logical operations, not with the specifics of how to do it, and whether the data is local or remote. So my FlightBroker implemented the public Data methods as directed by Sun.
Regards,
Doug
 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Re going for SCJA...still thinking about it. In the meantime, I'm going for Oracle DBA, just for fun.
 
Rick Fortier
Ranch Hand
Posts: 147
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Originally posted by Douglas Kent:
Naravan...your question about the superclass: I "hid" the various public methods of the Data class in a my client "FlightBroker" class. The GUI client is only interested in logical operations, not with the specifics of how to do it, and whether the data is local or remote. So my FlightBroker implemented the public Data methods as directed by Sun.
Regards,
Doug


I think I am on the right road then. The Data class should not extend Remote, but I need to create a server class that contains all of the public methods. This server class will register the interface in the JVM, and then server as a proxy to the real Data object. Is this correct? Or am I missing it badly?
Then the on the client side, I can use a Factory pattern (your FlightBroker) to instantiate either the real Data class (which talks directly with the file) or instantiate the RMI client stub. Is this basically how you did it?
 
Conor Allen
Ranch Hand
Posts: 32
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Douglas,
Did your FlightBroker class implement the public methods of the Data class or did it use them to perform the logical operations on the Data class?
Regards
Conor
 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Exactly. The client object FlightBroker instantiated a remote object (for RMI) which wrapped the server Data object. This avoided the problems of having to make the Data class extend UnicastRemoteObject. The FlightBroker used the methods of the Data object to perform the logic of booking a seat, among other things.
Regards...
 
Conor Allen
Ranch Hand
Posts: 32
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Still noy 100% clear here - The flight broker was the remote object (from rmi perspective) and it just had methods like bookFlight() and findFlights() and did not provide access to the actual public methods of the Data class?
If this was the case did this not break the requirement to provide all the public methods of the Data class to the client?
Hopefully this is not a stupid question .....
Conor
 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I guess the reviewers considered the fact that the client FlightBroker had access to all the public methods of the Data class, even though it did not use them, it was correct. In my design, I could not have the client worry about whether the database was local or remote--that was the job of the FlightBroker. Similarly, I did not want the client GUI to worry about business logic; ie, exactly how do you go about booking a flight? Do you lock the whole database prior to your search to ensure that the records you retrieve will be available? (I did) So I put all business logic in FlightBroker, wrapping up the public methods of the Data class in a call by the client GUI to "bookSeats()". Hope this helps...I'm sure the reviewers will consider a wide range of solutions, as long as you explain your design choices...
 
Conor Allen
Ranch Hand
Posts: 32
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for your reply ...
Conor
 
David Reck
Ranch Hand
Posts: 37
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Douglas,
Wanted to see if you could answer one more question for me. I am debating weather or not to use a JComboBox for the origin and destination search fields on the GUI. I saw in your message you said you used a minimalist approach on the GUI. Does this mean you just used text boxes?
Thanks,
David
 
Douglas Kent
Ranch Hand
Posts: 171
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I implemented the minimum, exactly as called for in the instructions, so, for instance, did not implement an "un-book" capability. I did use a JComboBox, and in fact made it somewhat "fancy" in that when the GUI was constructed, I made a call the the database to get all current flights, and aiports, in alphabetical order. These were all then available in the drop-down list for origin, destination, and flight comboboxes. I made the comboboxes editable, but did not implement any case conversion.
Regards,
Doug Kent+
 
Karl Fu
Ranch Hand
Posts: 41
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Kent,
just wanta ask you question on lock and unlock ? Did you track clientID and modify the lock and unlock signature ? I am so lost in tracking the ClientID .

Thanks
Karl
 
Karl Fu
Ranch Hand
Posts: 41
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
..sorry folks..didn't read carefully
Answer already been addressed.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic