This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I did not tell anybody that I was automatically failed long time ago in early August. I made small mistake in my readme file - it's too long story to tell here. As a result I was involved in very heated argument with Sun and it followed by tons of letters and mutual misanderstandings. I could not apeal properly because I did not know what part to apeal about: they've put zero all over the assignment. Eventually, they accepted my mistake as typo which it was (it was obvious from the beginning but they were determined to blow it into elefant) and did not charge me those arcane fee for resubmission . So the following is description of what i did. Maybe you guys will benefit. First of all, i created very user friendly program, so that from server console it was possible to administer whole database such as: see all databases (server supported several datafiles by design) and their detailed logs, control rate of writing to disk (it was done asincroniously), remote connection expiration time and, of course, port number. Also, the administrator could close the any given db without notice or stop the server (listening the connections) that was handled graciously on client side: client was offered to reconnect or connect later. Dynamic log ran on the server's console: which db did what etc. From the server's console one could open the client and configure it in remote mode (local mode was assumed by the client automatically, so you would push the radio button if you wanted remote for some reason) - it was my answer to somewhat confusing reqs of giving the choice. When standalone, client automatically prepared itself as remote client and did not offer local connecton. Everything was configured as RMI default (1099, localhost). Now, I will explain guts score by score. The max number of points: 400, passing score 320. Mine - 362. General consid: 100 77. In my old grading table it was broken like this (initially 58 points) ease of use - many people think that my prog. is very friendly and interesting to deal with; coding standard and readability - kept with sun guidlines, maybe lack of comments inside long methods; clarity and maintainability, maintainability of the design and implementation - i have no comments here because i did my best, maybe main class that dealt with Data and actual datafile was bulkier then they wanted. It is my favorite creation, and I simply love it. One thing was I kept everything in memory -? Documentation: 70 70. Here I don't understand because i thought it was not very good putting it mildly. My only comment is: I used codes from javaworld articles and SwingWorker which i modified but nevetherless told urls from which i took those and how i modified them (SwingWorker especially). Codes from javaworld i modified only by stripping some comments that belonged to the author of the code. I documented it meticulously and paid due respect to the authors. OOD: 30 15 This was not on my grading chart initially. I don't know why they stripped 50% for this. I'd tell that i had a bloody lot of objects on client side to make it more flexible and stipulated that it was overkill in my docs and indicated all kind of improvements here and there which were to much for the assignment as is. GUI: 40 40 My gui contained toolbar: back, refresh, connect, help, search, about buttons with use of those sun's graphics; header with name of the db, welcome to the user and current time; right panel with reserve/unreserve, disconnect, exit buttons; status panel with comnnection info. I disabled all buttons that the user could not use at the time or enabled them accordingly, put up exceptions explanations whenever possible, allowed multiple reservations or cancelations (this was difficult because of dealing with stupid key listeners and such) and gave detailed report of the operation results (what was successful what failed and why: for. ex. "there were only 3 seats available why res. for 5 seats failed") as well itemized bill including taxes . Locking 80 80 I am very proud of my locking and if the took it from me i would scream. So, they were good. In short, my locking mechanism consisted of two major parts. I wrapped records in binary semaphores - they were Doug Lea-Holub mutants and I am follower of those two. LockManager class had the Semaphores in BitSet and ruled over all their lock-unlock cooperative actions. I had two LockManagers which were twins but one was commanded by the database, another one was expose as public methods to client. So, even if anybody wrote malign client (who did not care for locking) my db would lock itself if the data were modified to avoid corruption. Date store: 40 40 I don't know what it is. Please who knows let me know what is it Network server: 40 40 My server is old pal of adapter pattern. I think that it's strength is extensive logging - the way how i debugged the whole mess and its name is Pushkin. If you guys have any questions that are not intended to get whole code, I will answer. I am very grateful to these forums for at least one thing that remembered me to include some strings into my prog. so i had very good leverage while arguing with sun - impeccable following of all their reqs.