File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Developer Certification (SCJD/OCMJD) and the fly likes URLyBird passed Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Certification » Developer Certification (SCJD/OCMJD)
Bookmark "URLyBird passed " Watch "URLyBird passed " New topic
Author

URLyBird passed

Fernando Franzini
Ranch Hand

Joined: Jan 09, 2009
Posts: 486
    
    2

I'm happy to announce that I was approved in URLyBird
My score was:

General Considerations: 100
Documentation: 70
O-O Design: 30
GUI: 27
Locking: 44
Data store: 40
Network server: 30
Total: 341

I would like to thank all the forum for help !
A special thanks to ROEL DE NIJS, ROBERT PERILLO and JULIO CESAR MARQUES for all attention and help ! Thank you guys !! you are amazing !!
Here my choices overview:

DESIGN

Architecture
* 3-layer GUI->BUSSINES->PESISTENCE->FILE.db.
Designer Patterns
* Singleton, Adapter, Transfer Object, Factory and Template Method.
Exception Handling
* Object exceptions approach instead of return error codes.
Error Messages
* I decided to separate all the error messages in a specific class. Each layer has yours.

SERVER
* RMI
* I chose :
- not to let the user choose or change the database file when connected remotely.
- Implement shutdown hook.

PERSISTENCE LAYER

File Acess
* Database handler with just 2 classes:
- One class implements mandatory interface and manages access to the file.
- Another utility class that encapsulates all details about the database schema.

* Hard-Code Database Schema.
* No Cache.
* I decided throw a RuntimeException instead of encapsulate the errors occurred in the exceptions defined by the mandatory .
* I decided to validate the magic cookie(hard code) preventing the user enter an invalid database file.
* I decided to use the file position as primary key.
* I decided not to reuse the deleted primary.
* DuplicateKeyException will not be thrown resulting from the choice not to reuse the deleted primary keys.
* Search engines was: 2 'for' statement and String.startsWith().

Lock
* Synchronized methods, Object.notifyAll() and singleton patter approach instead java.util.concurrent api.
* Cookie approach to identify the lock owner.
* System.nanoTime() to generate lock .

BUSSINES LAYER

Bussines Exceptions
* I created a base exception class that represents all the errors occurred within the layer instead of creating several different classes.

Bussines Methods
* I decided not to provide methods to insert, update, delete and unbook.
* I decided to make two separate search methods instead of one.
* I decided to implement the AND criteria logic within the business layer instead of the view layer
* I decided to implement the OR and AND criteria logic with just one method, using an criteria object instead of two separated methods.

Book Method
* I decided to implement a validation that checks the availability of the room.

48 Hours Rule
* I decided not to implement anything about the "48 Hours Rule".

VIEW LAYER

GUI Texts and Error Messages
* I decided to separate all the error messages in a specific class.
* I decided to separate all the GUI texts - titles, labels, mnemonics and tool tips in a specific class.
* No MVC Patter
* No Background Threads
* I decided only used default java 6 look and feel
* I decided to use the following layout managers:
1)Default BorderLayout.
2)FlowLayout.
3)GridBagLayout.
* I decided not to use any input mask, leaving the user type everything and implementing validation in each layer.
* I decided not to load all the rooms in the presentation of the main GUI.
* I decided not to provide insert, update, delete and unbook GUI functions.

GENERAL

* I decided not to implement anything that would solve the following situations:
1)Lost locks.
2)Dead Lock.
3)General lock on the database during the shutdown.
4)Client crashes.
5)Sorting columns.
6)Paging data.
7)Notify view layer about nonrepeatable read.

* No Log
* No Code Comments


I'm sorry but...I'll not be here cause I'm going to to SCDJWS and finally SCEA.
I'll be happy to answer any questions.
See you around


Fernando Franzini - Java Blog
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 5300
    
  13

Hi Fernando,

Congratulations with a great score

Glad I could help. And you are also 1 of the many people with the infamous locking score 44/80

Good luck with the SCDJWS!
Kind regards,
Roel


SCJA, SCJP (1.4 | 5.0 | 6.0), SCJD
http://www.javaroe.be/
Roberto Perillo
Bartender

Joined: Dec 28, 2007
Posts: 2265
    
    3

Aaaaaaaaah muleque!!! There you go! Congratulations, champion!!!

Are you ready to know how it feels to be a Libertadores champion this year?!


Cheers, Bob "John Lennon" Perillo
SCJP, SCWCD, SCJD, SCBCD - Daileon: A Tool for Enabling Domain Annotations
Fernando Franzini
Ranch Hand

Joined: Jan 09, 2009
Posts: 486
    
    2

Yes Roel..you are right. But the main reason was that I've learned a lot with this certification !!
That was the most important point to me !!

Falaaaaa Betooooooooooooooo !!!
Yeah !!! this year we will raise this cup !
I hope so...

God bless you guys.
Carlos Morillo
Ranch Hand

Joined: Jun 06, 2009
Posts: 221

Hi Fernando,


Congratulations!



Best,


Carlos.


SCSA, OCA, SCJP 5.0, SCJD http://www.linkedin.com/in/carlosamorillo
Naveen Narayanan
Ranch Hand

Joined: Sep 11, 2007
Posts: 114

Congratz Fernando
Welcome to the club...


SCJP 5.0, SCJD, SCWCD
Julio Cesar Marques
Ranch Hand

Joined: Mar 21, 2009
Posts: 67
There is! Congratulations Man! But i told you that i knew it...

Best Regards!


Julio Cesar Lopes Marques
Sun Certified Java Developer 5, Sun Certified Java Programmer 5
Ehsan Rahman
Ranch Hand

Joined: Feb 16, 2009
Posts: 59

Well done, congratulations. Very interesting to read your comments. Good luck with the future certifications!


SCJP 1.5, SCJD 1.6
 
GeeCON Prague 2014
 
subject: URLyBird passed