diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index d5e25c3..8782533 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -70,8 +70,7 @@ } ], "direction": "horizontal", - "width": 200, - "collapsed": true + "width": 200 }, "right": { "id": "ee8f6df41634f71e", @@ -156,7 +155,7 @@ } ], "direction": "horizontal", - "width": 200 + "width": 417.5 }, "left-ribbon": { "hiddenItems": { @@ -167,42 +166,42 @@ "switcher:Open quick switcher": false } }, - "active": "f5285cbbb611ecba", + "active": "671043c113c40804", "lastOpenFiles": [ - "Semester 2/Programming 2/Assessment 4 Notes", + "Semester 2/Programming 2/Project/Part 2/package.bluej", + "Semester 2/Programming 2/Project/Part 2", + "Semester 2/Programming 2/Project/Part 4 Complete.zip", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/resources/inherit.gif", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/stylesheet.css", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/resources", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/package-summary.html", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/package-list", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/package-frame.html", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/logfile.txt", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/index.html", + "Semester 2/Programming 2/Project/Part 4 Complete/doc/constant-values.html", "images/Pasted image 20240319234142.png", "images/Pasted image 20240319225420.png", "Semester 2/Programming 2/Week 10 Revision/Q4.md", "Semester 2/Programming 2/Week 10 Revision/Q5.md", "images/Pasted image 20240319224232.png", "Semester 2/Programming 2/Week 10 Revision/Q3.md", - "Semester 2/Database Systems/Exercise Booklet.pdf", - "Semester 2/Database Systems/Booklet of Lecture Slides for Semester Two (2).pdf", "Semester 2/Database Systems/Week 10/Week 10 Database Systems.md", "images/Pasted image 20240319163053.png", "images/Pasted image 20240319162824.png", "images/Pasted image 20240319161202.png", "images/Pasted image 20240319160609.png", "Semester 2/Programming 2/Week 10 Revision/Q1.md", - "Semester 2/Programming 2/Week 10 Revision", "Semester 2/Database Systems/Week 2/Week 2 Database Systems.md", "Semester 2/Database Systems/Week 1/Week 1 Database Systems.md", "Semester 1/Database Systems/Week 10/Week 10 Database Systems.md", "Semester 2/Database Systems/Week 3/Week 3 Database Systems.md", "Semester 2/Database Systems/Week 4/Week 4 Database Systems.md", - "Semester 2/Database Systems/Week 10", "Semester 2/Database Systems/Week 9/Week 9 Database Systems.md", "images/Pasted image 20240312161933.png", "images/Pasted image 20240312161927.png", - "images/Pasted image 20240312161656.png", "Semester 2/Database Systems/Week 8/Week 8 Database Systems.md", - "Semester 2/Database Systems/Week 9", - "Semester 2/Untitled", - "Semester 2/Programming 2/Project/Part 2/__SHELL1.class", - "Semester 2/Programming 2/Project/Part 2/__SHELL1.java", - "Semester 2/Programming 2/Project/Part 2/Library.java#", "Semester 2/Database Systems/Week 7/Week 7 Database Systems.md", - "Semester 2/Programming 2/Project/Part 2/Book.java#", "Semester 2/Database Systems/Week 6/Week 6 Database Systems.md", "Semester 2/Computer Systems Internals & Linux/Week 6/Week 6 Computer Systems Internals.md", "Semester 2/Programming 2/Assessment 3 Revision/Parameter Passing WS3.md", diff --git a/Semester 2/Programming 2/Project/Part 2/Library.class b/Semester 2/Programming 2/Project/Part 2/Library.class deleted file mode 100644 index 03f2c79..0000000 Binary files a/Semester 2/Programming 2/Project/Part 2/Library.class and /dev/null differ diff --git a/Semester 2/Programming 2/Project/Part 2/Library.ctxt b/Semester 2/Programming 2/Project/Part 2/Library.ctxt deleted file mode 100644 index 51b5b4d..0000000 --- a/Semester 2/Programming 2/Project/Part 2/Library.ctxt +++ /dev/null @@ -1,45 +0,0 @@ -#BlueJ class context -comment0.params= -comment0.target=Library() -comment0.text=\n\ Constructor\ for\ objects\ of\ class\ Library\n -comment1.params=item -comment1.target=void\ storeItem(LibraryItem) -comment1.text=\n\ Inserts\ object\ value\ item\ alongside\ key\ of\ @itemCode\ into\ @itemsMap.\n -comment10.params= -comment10.target=void\ writeUserData() -comment10.text=\n\ A\ method\ to\ output\ all\ user\ data\ to\ a\ file\ using\ a\ fileDialog\ to\ specify\ file\ location.\n\ \n -comment11.params= -comment11.target=void\ readLibraryReservationData() -comment11.text=\n\ Read\ Library\ Reservation\ Data\ from\ a\ file\ specified\ by\ the\ user.\n -comment12.params= -comment12.target=void\ readData() -comment12.text=\n\ A\ method\ to\ read\ all\ data\ from\ files\ using\ a\ fileDialog\ to\ specify\ file\ location.\n\ This\ will\ create\ the\ corresponding\ objects\ depending\ on\ flags\ contained\ in\ the\ file\n\ and\ populate\ it's\ fields.\n\ \n\ Default\ flag\ value\:\ "book",\ to\ support\ legacy\ files.\ This\ will\ not\ interfere\ with\ \n\ files\ of\ different\ flag\ orders.\n -comment13.params=userID\ itemCode\ startDate\ noOfDays -comment13.target=boolean\ makeLibraryReservation(java.lang.String,\ java.lang.String,\ java.lang.String,\ int) -comment13.text=\n\ Create\ a\ reservation\ to\ allow\ a\ user\ to\ reserve\ an\ item\ from\ the\ library.\n -comment14.params=reservationNo -comment14.target=void\ deleteLibraryReservation(java.lang.String) -comment2.params=user -comment2.target=void\ storeUser(LibraryUser) -comment2.text=\n\ Inserts\ object\ value\ user\ alongside\ key\ of\ @userID\ into\ @customerMap.\n\ If\ the\ userID\ is\ set\ to\ unknown,\ it\ will\ call\ @generateUserID.\n -comment3.params=reservation -comment3.target=void\ storeLibraryReservation(LibraryReservation) -comment3.text=\n\ Inserts\ object\ value\ reservation\ alongside\ key\ of\ @reservationNo\ into\ @libraryReservationMap.\n -comment4.params= -comment4.target=java.lang.String\ generateReservationNo() -comment4.text=\n\ Generate\ a\ sequential\ reservation\ number.\ Since\ Maps\ do\ not\ have\ an\ index,\ we\ cannot\ simply\ get\ the\ last\ value,\ \n\ and\ recursion\ would\ be\ too\ intensive\ for\ this\ application.\ As\ a\ placeholder\ for\ the\ file\ output,\ a\ field\ variable\n\ is\ used\ to\ hold\ the\ last\ highest\ value\ for\ the\ reservation\ number.\ Unlike\ @generateUserID,\ this\ has\ a\ maximum\ value\n\ hardcoded\ to\ the\ spec.\ This\ likely\ will\ not\ be\ an\ issue\ since\ we\ can\ still\ have\ 1,000,000\ reservations.\n -comment5.params=prefix\ length -comment5.target=java.lang.String\ generateUserID(java.lang.String,\ int) -comment5.text=\n\ Returns\ a\ random\ unique\ user\ ID\ by\ specifying\ \n\ @prefix\ -\ arbitrary\ alphanumeric\ prefix\n\ @length\ -\ length\ of\ numeric\ ID\n\ and\ returning\ a\ unique\ user\ id\n\ @uuid\ -\ a\ unique\ string\ starting\ with\ @prefix,\ and\ concat.\ with\ a\ random\ number\n\ \n\ Example\:\ length\ \=\ 6,\ expected\ result\ should\ be\ under\ 999,999\ and\ above\ 99,999.\n\ If\ we\ just\ use\ 10^(length),\ this\ would\ generate\ any\ number\ under\ 1,000,000.\n\ This\ is\ an\ issue\ since\ any\ integers\ below\ 100,000\ can\ be\ used,\ which\ would\ be\ incorrect.\n\ By\ using\ the\ offset\ of\ a\ factor\ of\ 10\ below\ the\ desired\ length\ we\ can\ generate\ between\ 0\ and\ 899,999.\n\ After\ this,\ we\ can\ add\ 100,000\ back\ to\ the\ number\ to\ ensure\ a\ baseline\ length\ is\ maintained.\n\ \n\ Note\:\ I\ am\ aware\ that\ this\ is\ overengineered,\ and\ that\ several\ random\ integers\ of\ amount\ @length\ could\ be\ used,\ \n\ but\ this\ is\ considerably\ more\ efficient\ since\ there\ is\ no\ iteration\ involved\ in\ the\ creation\ of\ the\ ID.\ O(1)\n -comment6.params= -comment6.target=void\ printLibraryReservations() -comment6.text=\n\ Prints\ to\ the\ terminal,\ in\ a\ human-readable\ format,\ library\ reservation\ in\ the\ itemList\n\ \n\ Contains\ a\ marker\ at\ the\ start\ and\ end\ to\ visualise\ in\ terminal\ output.\n -comment7.params= -comment7.target=void\ printAll() -comment7.text=\n\ Prints\ to\ the\ terminal,\ in\ a\ human-readable\ format,\ all\ items\ in\ the\ itemList\n\ \n\ Contains\ a\ marker\ at\ the\ start\ and\ end\ to\ visualise\ in\ terminal\ output.\n -comment8.params=start\ end -comment8.target=void\ printDiaryEntries(java.lang.String,\ java.lang.String) -comment9.params= -comment9.target=void\ writeLibraryReservationData() -comment9.text=\n\ Write\ all\ current\ library\ reservations\ to\ a\ file\ specified\ by\ the\ user.\n -numComments=15 diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryReservation.class b/Semester 2/Programming 2/Project/Part 2/LibraryReservation.class deleted file mode 100644 index 082b381..0000000 Binary files a/Semester 2/Programming 2/Project/Part 2/LibraryReservation.class and /dev/null differ diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryReservation.ctxt b/Semester 2/Programming 2/Project/Part 2/LibraryReservation.ctxt deleted file mode 100644 index 82c5814..0000000 --- a/Semester 2/Programming 2/Project/Part 2/LibraryReservation.ctxt +++ /dev/null @@ -1,46 +0,0 @@ -#BlueJ class context -comment0.params=reservationNo\ itemCode\ userID\ startDate\ noOfDays -comment0.target=LibraryReservation(java.lang.String,\ java.lang.String,\ java.lang.String,\ java.lang.String,\ int) -comment0.text=\n\ Constructor\ for\ objects\ of\ class\ LibraryReservation\n -comment1.params= -comment1.target=LibraryReservation() -comment10.params= -comment10.target=int\ getNoOfDays() -comment10.text=\n\ Return\ value\ of\ @noOfDays\n -comment11.params=reservationNo -comment11.target=void\ setReservationNo(java.lang.String) -comment11.text=\n\ Set\ @reservationNo\ to\ a\ new\ value\n -comment12.params=itemCode -comment12.target=void\ setItemCode(java.lang.String) -comment12.text=\n\ Set\ @itemCode\ to\ a\ new\ value\n -comment13.params=userID -comment13.target=void\ setUserID(java.lang.String) -comment13.text=\n\ Set\ @userID\ to\ a\ new\ value\n -comment14.params=startDate -comment14.target=void\ setStartDate(java.lang.String) -comment14.text=\n\ Set\ @startDate\ to\ a\ new\ value\n -comment15.params=noOfDays -comment15.target=void\ setNoOfDays(int) -comment15.text=\n\ Set\ @noOfDays\ to\ a\ new\ value\n -comment2.params= -comment2.target=java.lang.String\ toString() -comment3.params= -comment3.target=void\ printDetails() -comment3.text=\n\ Prints\ to\ terminal,\ the\ details\ of\ the\ reservation.\n -comment4.params=writer -comment4.target=void\ writeData(java.io.PrintWriter) -comment5.params=detailScanner -comment5.target=void\ readData(java.util.Scanner) -comment6.params= -comment6.target=java.lang.String\ getReservationNo() -comment6.text=\n\ Return\ value\ of\ @reservationNo\n -comment7.params= -comment7.target=java.lang.String\ getItemCode() -comment7.text=\n\ Return\ value\ of\ @itemCode\n -comment8.params= -comment8.target=java.lang.String\ getUserID() -comment8.text=\n\ Return\ value\ of\ @userID\n -comment9.params= -comment9.target=java.util.Date\ getStartDate() -comment9.text=\n\ Return\ value\ of\ @startDate\n -numComments=16 diff --git a/Semester 2/Programming 2/Project/Part 2/package.bluej b/Semester 2/Programming 2/Project/Part 2/package.bluej index 30276f6..2ed3928 100644 --- a/Semester 2/Programming 2/Project/Part 2/package.bluej +++ b/Semester 2/Programming 2/Project/Part 2/package.bluej @@ -2,6 +2,15 @@ dependency1.from=Library dependency1.to=Book dependency1.type=UsesDependency +dependency10.from=Diary +dependency10.to=LibraryReservation +dependency10.type=UsesDependency +dependency11.from=Diary +dependency11.to=DateUtil +dependency11.type=UsesDependency +dependency12.from=Library +dependency12.to=Diary +dependency12.type=UsesDependency dependency2.from=Library dependency2.to=Periodical dependency2.type=UsesDependency @@ -23,157 +32,173 @@ dependency7.type=UsesDependency dependency8.from=Library dependency8.to=LibraryReservation dependency8.type=UsesDependency +dependency9.from=Library +dependency9.to=DateUtil +dependency9.type=UsesDependency objectbench.height=76 objectbench.width=940 package.editor.height=874 package.editor.width=814 -package.editor.x=0 -package.editor.y=31 -package.numDependencies=8 -package.numTargets=11 +package.editor.x=861 +package.editor.y=66 +package.numDependencies=12 +package.numTargets=12 package.showExtends=true package.showUses=true project.charset=UTF-8 -target1.editor.height=700 -target1.editor.width=900 -target1.editor.x=1017 -target1.editor.y=76 +target1.editor.height=786 +target1.editor.width=960 +target1.editor.x=34 +target1.editor.y=174 target1.height=50 -target1.name=PrintedItem +target1.name=CD target1.naviview.expanded=true target1.showInterface=false -target1.type=AbstractTarget +target1.type=ClassTarget target1.typeParameters= -target1.width=110 -target1.x=130 -target1.y=240 -target10.editor.height=700 -target10.editor.width=900 -target10.editor.x=960 -target10.editor.y=146 +target1.width=80 +target1.x=360 +target1.y=340 +target10.editor.height=1049 +target10.editor.width=1920 +target10.editor.x=0 +target10.editor.y=31 target10.height=50 -target10.name=AudioVisual +target10.name=Book target10.naviview.expanded=true target10.showInterface=false -target10.type=AbstractTarget +target10.type=ClassTarget target10.typeParameters= -target10.width=110 -target10.x=380 -target10.y=240 -target11.editor.height=700 -target11.editor.width=900 -target11.editor.x=40 -target11.editor.y=51 +target10.width=80 +target10.x=180 +target10.y=340 +target11.editor.height=1049 +target11.editor.width=1920 +target11.editor.x=0 +target11.editor.y=31 target11.height=50 -target11.name=LibraryReservation +target11.name=Library target11.naviview.expanded=true target11.showInterface=false target11.type=ClassTarget target11.typeParameters= -target11.width=160 -target11.x=230 -target11.y=440 -target2.editor.height=786 -target2.editor.width=960 -target2.editor.x=34 -target2.editor.y=174 -target2.height=50 -target2.name=CD +target11.width=100 +target11.x=260 +target11.y=240 +target12.editor.height=700 +target12.editor.width=900 +target12.editor.x=960 +target12.editor.y=146 +target12.height=50 +target12.name=AudioVisual +target12.naviview.expanded=true +target12.showInterface=false +target12.type=AbstractTarget +target12.typeParameters= +target12.width=110 +target12.x=380 +target12.y=240 +target2.editor.height=1049 +target2.editor.width=1920 +target2.editor.x=0 +target2.editor.y=31 +target2.height=60 +target2.name=LibraryItem target2.naviview.expanded=true target2.showInterface=false -target2.type=ClassTarget +target2.type=AbstractTarget target2.typeParameters= -target2.width=80 -target2.x=360 -target2.y=340 +target2.width=120 +target2.x=250 +target2.y=110 target3.editor.height=700 -target3.editor.width=900 -target3.editor.x=557 -target3.editor.y=177 -target3.height=60 -target3.name=LibraryItem +target3.editor.width=1619 +target3.editor.x=192 +target3.editor.y=267 +target3.height=50 +target3.name=Periodical target3.naviview.expanded=true target3.showInterface=false -target3.type=AbstractTarget +target3.type=ClassTarget target3.typeParameters= -target3.width=120 -target3.x=250 -target3.y=110 -target4.editor.height=1049 -target4.editor.width=1920 -target4.editor.x=0 -target4.editor.y=31 +target3.width=90 +target3.x=60 +target3.y=380 +target4.editor.height=700 +target4.editor.width=900 +target4.editor.x=40 +target4.editor.y=51 target4.height=50 -target4.name=DVD +target4.name=DateUtil target4.naviview.expanded=true -target4.showInterface=false +target4.showInterface=true target4.type=ClassTarget target4.typeParameters= target4.width=80 -target4.x=470 -target4.y=380 +target4.x=70 +target4.y=10 target5.editor.height=700 target5.editor.width=900 -target5.editor.x=55 -target5.editor.y=274 +target5.editor.x=967 +target5.editor.y=142 target5.height=50 -target5.name=LibraryUser +target5.name=Diary target5.naviview.expanded=true target5.showInterface=false target5.type=ClassTarget target5.typeParameters= -target5.width=110 -target5.x=100 -target5.y=170 -target6.editor.height=700 -target6.editor.width=1619 -target6.editor.x=192 -target6.editor.y=267 +target5.width=80 +target5.x=530 +target5.y=240 +target6.editor.height=1049 +target6.editor.width=960 +target6.editor.x=960 +target6.editor.y=31 target6.height=50 -target6.name=Periodical +target6.name=LibraryReservation target6.naviview.expanded=true target6.showInterface=false target6.type=ClassTarget target6.typeParameters= -target6.width=90 -target6.x=60 -target6.y=380 -target7.editor.height=1049 -target7.editor.width=1920 -target7.editor.x=0 -target7.editor.y=31 +target6.width=160 +target6.x=230 +target6.y=440 +target7.editor.height=700 +target7.editor.width=900 +target7.editor.x=1017 +target7.editor.y=76 target7.height=50 -target7.name=Book +target7.name=PrintedItem target7.naviview.expanded=true target7.showInterface=false -target7.type=ClassTarget +target7.type=AbstractTarget target7.typeParameters= -target7.width=80 -target7.x=180 -target7.y=340 -target8.editor.height=700 -target8.editor.width=900 -target8.editor.x=40 -target8.editor.y=51 +target7.width=110 +target7.x=130 +target7.y=240 +target8.editor.height=1049 +target8.editor.width=1920 +target8.editor.x=0 +target8.editor.y=31 target8.height=50 -target8.name=DateUtil +target8.name=DVD target8.naviview.expanded=true target8.showInterface=false target8.type=ClassTarget target8.typeParameters= target8.width=80 -target8.x=70 -target8.y=10 +target8.x=470 +target8.y=380 target9.editor.height=1049 -target9.editor.width=1920 +target9.editor.width=960 target9.editor.x=0 target9.editor.y=31 target9.height=50 -target9.name=Library +target9.name=LibraryUser target9.naviview.expanded=true target9.showInterface=false target9.type=ClassTarget target9.typeParameters= -target9.width=100 -target9.x=260 -target9.y=240 +target9.width=110 +target9.x=100 +target9.y=170 diff --git a/Semester 2/Programming 2/Project/Part 4 Complete.zip b/Semester 2/Programming 2/Project/Part 4 Complete.zip new file mode 100644 index 0000000..0fa8163 Binary files /dev/null and b/Semester 2/Programming 2/Project/Part 4 Complete.zip differ diff --git a/Semester 2/Programming 2/Project/Part 2/AudioVisual.class b/Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.class similarity index 95% rename from Semester 2/Programming 2/Project/Part 2/AudioVisual.class rename to Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.class index 5c3c0fc..9f2fb15 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/AudioVisual.class and b/Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/AudioVisual.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.ctxt similarity index 78% rename from Semester 2/Programming 2/Project/Part 2/AudioVisual.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.ctxt index f36b616..e411e1b 100644 --- a/Semester 2/Programming 2/Project/Part 2/AudioVisual.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.ctxt @@ -10,4 +10,5 @@ comment2.target=void\ printDetails() comment2.text=\n\ Field\ Mutator\ End\n comment3.params=detailScanner comment3.target=void\ readItemData(java.util.Scanner) +comment3.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n numComments=4 diff --git a/Semester 2/Programming 2/Project/Part 2/AudioVisual.java b/Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.java similarity index 87% rename from Semester 2/Programming 2/Project/Part 2/AudioVisual.java rename to Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.java index 3db6f9d..86d9410 100644 --- a/Semester 2/Programming 2/Project/Part 2/AudioVisual.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/AudioVisual.java @@ -3,7 +3,7 @@ * Subclass of LibraryItem to create objects of audio and visual items in a library. * * @George Wilkinson - * @1.0 + * @1.2 */ import java.util.Scanner; @@ -41,6 +41,11 @@ public abstract class AudioVisual extends LibraryItem super.printDetails(); } + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner + */ public void readItemData( Scanner detailScanner ){ if ( detailScanner != null ) { this.playingTime = Integer.parseInt( detailScanner.next().trim() ); diff --git a/Semester 2/Programming 2/Project/Part 2/Book.class b/Semester 2/Programming 2/Project/Part 4 Complete/Book.class similarity index 63% rename from Semester 2/Programming 2/Project/Part 2/Book.class rename to Semester 2/Programming 2/Project/Part 4 Complete/Book.class index 317197a..ae7c711 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/Book.class and b/Semester 2/Programming 2/Project/Part 4 Complete/Book.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/Book.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/Book.ctxt similarity index 87% rename from Semester 2/Programming 2/Project/Part 2/Book.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/Book.ctxt index c2a789d..b1850d4 100644 --- a/Semester 2/Programming 2/Project/Part 2/Book.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/Book.ctxt @@ -19,5 +19,5 @@ comment5.target=void\ printDetails() comment5.text=\n\ Print\ to\ terminal,\ relevant\ details\ of\ current\ object.\n comment6.params=detailScanner comment6.target=void\ readItemData(java.util.Scanner) -comment6.text=\n\ Passed\ a\ scanner\ object,\ set\ field\ variables\ to\ corresponding\ values.\n +comment6.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n numComments=7 diff --git a/Semester 2/Programming 2/Project/Part 2/Book.java b/Semester 2/Programming 2/Project/Part 4 Complete/Book.java similarity index 88% rename from Semester 2/Programming 2/Project/Part 2/Book.java rename to Semester 2/Programming 2/Project/Part 4 Complete/Book.java index edc12a2..9b5709f 100644 --- a/Semester 2/Programming 2/Project/Part 2/Book.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/Book.java @@ -3,10 +3,11 @@ * Subclass of LibraryItem that emulates a Book item. * * @George Wilkinson - * @2.3 + * @2.5 */ import java.util.Scanner; +import java.util.NoSuchElementException; public class Book extends PrintedItem { @@ -60,8 +61,10 @@ public class Book extends PrintedItem super.printDetails(); } - /* - * Passed a scanner object, set field variables to corresponding values. + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner */ public void readItemData( Scanner detailScanner ){ if ( detailScanner != null ) { diff --git a/Semester 2/Programming 2/Project/Part 2/CD.class b/Semester 2/Programming 2/Project/Part 4 Complete/CD.class similarity index 91% rename from Semester 2/Programming 2/Project/Part 2/CD.class rename to Semester 2/Programming 2/Project/Part 4 Complete/CD.class index 0f23deb..6cce770 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/CD.class and b/Semester 2/Programming 2/Project/Part 4 Complete/CD.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/CD.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/CD.ctxt similarity index 87% rename from Semester 2/Programming 2/Project/Part 2/CD.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/CD.ctxt index 7e09051..6880fc2 100644 --- a/Semester 2/Programming 2/Project/Part 2/CD.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/CD.ctxt @@ -19,5 +19,5 @@ comment5.target=void\ printDetails() comment5.text=\n\ Print\ to\ terminal,\ relevant\ details\ of\ current\ object.\n comment6.params=detailScanner comment6.target=void\ readItemData(java.util.Scanner) -comment6.text=\n\ Passed\ a\ scanner,\ set\ the\ relevant\ details\ to\ their\ corresponding\ field\ variables.\n +comment6.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n numComments=7 diff --git a/Semester 2/Programming 2/Project/Part 2/CD.java b/Semester 2/Programming 2/Project/Part 4 Complete/CD.java similarity index 91% rename from Semester 2/Programming 2/Project/Part 2/CD.java rename to Semester 2/Programming 2/Project/Part 4 Complete/CD.java index c06b2e8..afa33d4 100644 --- a/Semester 2/Programming 2/Project/Part 2/CD.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/CD.java @@ -3,7 +3,7 @@ * Subclass of AudioVisual, to create objects of a CD. * * @George Wilkinson - * @1.0 + * @1.2 */ import java.util.Scanner; @@ -60,8 +60,10 @@ public class CD extends AudioVisual super.printDetails(); } - /* - * Passed a scanner, set the relevant details to their corresponding field variables. + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner */ public void readItemData( Scanner detailScanner ){ if ( detailScanner != null ) { diff --git a/Semester 2/Programming 2/Project/Part 2/DVD.class b/Semester 2/Programming 2/Project/Part 4 Complete/DVD.class similarity index 94% rename from Semester 2/Programming 2/Project/Part 2/DVD.class rename to Semester 2/Programming 2/Project/Part 4 Complete/DVD.class index b14f577..aedc607 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/DVD.class and b/Semester 2/Programming 2/Project/Part 4 Complete/DVD.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/DVD.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/DVD.ctxt similarity index 84% rename from Semester 2/Programming 2/Project/Part 2/DVD.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/DVD.ctxt index 09b5965..90f5db1 100644 --- a/Semester 2/Programming 2/Project/Part 2/DVD.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/DVD.ctxt @@ -13,5 +13,5 @@ comment3.target=void\ printDetails() comment3.text=\n\ Print\ relevant\ details\ of\ the\ current\ object.\n comment4.params=detailScanner comment4.target=void\ readItemData(java.util.Scanner) -comment4.text=\n\ Passed\ a\ scanner\ object,\ give\ the\ relevant\ variable\ a\ value.\n +comment4.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n numComments=5 diff --git a/Semester 2/Programming 2/Project/Part 2/DVD.java b/Semester 2/Programming 2/Project/Part 4 Complete/DVD.java similarity index 89% rename from Semester 2/Programming 2/Project/Part 2/DVD.java rename to Semester 2/Programming 2/Project/Part 4 Complete/DVD.java index 597c108..6926f82 100644 --- a/Semester 2/Programming 2/Project/Part 2/DVD.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/DVD.java @@ -3,7 +3,7 @@ * Subclass of AudioVisual to create objects of DVD items. * * @George Wilkinson - * @1.0 + * @1.2 */ import java.util.Scanner; @@ -42,8 +42,10 @@ public class DVD extends AudioVisual super.printDetails(); } - /* - * Passed a scanner object, give the relevant variable a value. + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner */ public void readItemData( Scanner detailScanner ){ if ( detailScanner != null ) { diff --git a/Semester 2/Programming 2/Project/Part 2/DateUtil.class b/Semester 2/Programming 2/Project/Part 4 Complete/DateUtil.class similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/DateUtil.class rename to Semester 2/Programming 2/Project/Part 4 Complete/DateUtil.class diff --git a/Semester 2/Programming 2/Project/Part 2/DateUtil.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/DateUtil.ctxt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/DateUtil.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/DateUtil.ctxt diff --git a/Semester 2/Programming 2/Project/Part 2/DateUtil.java b/Semester 2/Programming 2/Project/Part 4 Complete/DateUtil.java similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/DateUtil.java rename to Semester 2/Programming 2/Project/Part 4 Complete/DateUtil.java diff --git a/Semester 2/Programming 2/Project/Part 2/Diary$1.class b/Semester 2/Programming 2/Project/Part 4 Complete/Diary$1.class similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/Diary$1.class rename to Semester 2/Programming 2/Project/Part 4 Complete/Diary$1.class diff --git a/Semester 2/Programming 2/Project/Part 2/Diary$DayInDiary$Entry.class b/Semester 2/Programming 2/Project/Part 4 Complete/Diary$DayInDiary$Entry.class similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/Diary$DayInDiary$Entry.class rename to Semester 2/Programming 2/Project/Part 4 Complete/Diary$DayInDiary$Entry.class diff --git a/Semester 2/Programming 2/Project/Part 2/Diary$DayInDiary.class b/Semester 2/Programming 2/Project/Part 4 Complete/Diary$DayInDiary.class similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/Diary$DayInDiary.class rename to Semester 2/Programming 2/Project/Part 4 Complete/Diary$DayInDiary.class diff --git a/Semester 2/Programming 2/Project/Part 2/Diary.class b/Semester 2/Programming 2/Project/Part 4 Complete/Diary.class similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/Diary.class rename to Semester 2/Programming 2/Project/Part 4 Complete/Diary.class diff --git a/Semester 2/Programming 2/Project/Part 2/Diary.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/Diary.ctxt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/Diary.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/Diary.ctxt diff --git a/Semester 2/Programming 2/Project/Part 2/Diary.java b/Semester 2/Programming 2/Project/Part 4 Complete/Diary.java similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/Diary.java rename to Semester 2/Programming 2/Project/Part 4 Complete/Diary.java diff --git a/Semester 2/Programming 2/Project/Part 4 Complete/Library.class b/Semester 2/Programming 2/Project/Part 4 Complete/Library.class new file mode 100644 index 0000000..9518bd7 Binary files /dev/null and b/Semester 2/Programming 2/Project/Part 4 Complete/Library.class differ diff --git a/Semester 2/Programming 2/Project/Part 4 Complete/Library.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/Library.ctxt new file mode 100644 index 0000000..954b63e --- /dev/null +++ b/Semester 2/Programming 2/Project/Part 4 Complete/Library.ctxt @@ -0,0 +1,65 @@ +#BlueJ class context +comment0.params= +comment0.target=Library() +comment0.text=\n\ Constructor\ for\ objects\ of\ class\ Library\n +comment1.params= +comment1.target=java.util.ArrayList\ getUserIDs() +comment1.text=\n\ Return\ the\ keys\ of\ @customerMap\ as\ a\ list.\n +comment10.params= +comment10.target=java.lang.String\ generateReservationNo() +comment10.text=\n\ Generate\ a\ sequential\ reservation\ number\ padded\ with\ 0s\ to\ a\ length\ of\ 6.\n\ \n\ Since\ we\ are\ not\ storing\ in\ a\ file\ at\ this\ point,\ we\ obtain\ the\ size\ of\ the\ Map,\ and\ add\ 1\ to\ determine\ the\ current\ number.\n\ This\ is\ due\ to\ the\ event\ of\ program\ restart,\ if\ a\ field\ variable\ is\ used,\ the\ first\ reservation\ generated\ will\ be\ of\ ID\ "000001"\n\ no\ matter\ what.\ This\ causes\ an\ issue\ if\ a\ file\ is\ read\ to\ load\ the\ reservations\ into\ the\ Library,\ since\ IDs\ will\ conflict\ and\ \n\ the\ value\ will\ be\ overwritten,\ causing\ data\ integrity\ loss.\n\ Unlike\ @generateUserID,\ this\ has\ a\ maximum\ value\ hardcoded\ to\ the\ spec.\ \n\ This\ likely\ will\ not\ be\ an\ issue\ since\ we\ can\ still\ have\ 1,000,000\ reservations.\n\ \n\ Returns\n\ \ String\ @candidateNo\ -\ a\ proposed\ lowest\ number\ that\ is\ checked\ and\ interated\ if\ conflicting.\n +comment11.params=prefix\ length +comment11.target=java.lang.String\ generateUserID(java.lang.String,\ int) +comment11.text=\n\ Generate\ a\ unique\ user\ identifier\ to\ apply\ to\ users\ when\ the\ UUID\ is\ unknown.\n\ This\ generates\ a\ number\ of\ @length\ length\ using\ the\ Random\ class,\ and\ prefixes\ @prefix.\n\ \n\ Takes\ Parameters\n\ \ String\ @prefix\ -\ arbitrary\ alphanumeric\ prefix\n\ \ String\ @length\ -\ length\ of\ numeric\ ID\n\ Returns\n\ \ String\ @uuid\ -\ a\ unique\ string\ starting\ with\ @prefix,\ and\ concat.\ with\ a\ random\ number\n\ \n\ Example\:\ length\ \=\ 6,\ expected\ result\ should\ be\ under\ 999,999\ and\ above\ 99,999.\n\ If\ we\ just\ use\ 10^(length),\ this\ would\ generate\ any\ number\ under\ 1,000,000.\n\ This\ is\ an\ issue\ since\ any\ integers\ below\ 100,000\ can\ be\ used,\ which\ would\ be\ incorrect.\n\ By\ using\ the\ offset\ of\ a\ factor\ of\ 10\ below\ the\ desired\ length\ we\ can\ generate\ between\ 0\ and\ 899,999.\n\ After\ this,\ we\ can\ add\ 100,000\ back\ to\ the\ number\ to\ ensure\ a\ baseline\ length\ is\ maintained.\n\ \n\ Note\:\ I\ am\ aware\ that\ this\ is\ overengineered,\ and\ that\ several\ random\ integers\ of\ amount\ @length\ could\ be\ used,\ \n\ but\ this\ is\ considerably\ more\ efficient\ since\ there\ is\ no\ iteration\ involved\ in\ the\ creation\ of\ the\ ID.\ O(1)\n +comment12.params= +comment12.target=void\ printLibraryReservations() +comment12.text=\n\ Prints\ to\ the\ terminal,\ in\ a\ human-readable\ format,\ all\ LibraryReservation(s)\n\ \n\ Contains\ a\ marker\ at\ the\ start\ and\ end\ to\ visualise\ in\ terminal\ output.\n +comment13.params= +comment13.target=void\ printAll() +comment13.text=\n\ Prints\ to\ the\ terminal,\ in\ a\ human-readable\ format,\ all\:\n\ \ LibraryItem(s)\n\ \ LibraryUser(s)\n\ \ LibraryReservation(s)\n\ \n\ Contains\ a\ marker\ at\ the\ start\ and\ end\ of\ each\ type\ to\ visualise\ in\ terminal\ output.\n\ For\ printing\ the\ LibraryReservation(s),\ the\ corresponding\ method\ is\ called\ to\ reduce\n\ code\ duplication.\n +comment14.params=start\ end +comment14.target=void\ printDiaryEntries(java.lang.String,\ java.lang.String) +comment14.text=\n\ Print,\ to\ the\ terminal\ all\ reservation\ entries\ in\ the\ diary.\n\ Takes\ Parameters\n\ \ String\ @start\n\ \ String\ @end\n\ \n\ This\ converts\ both\ string\ inputs\ to\ Date\ formats,\ and\ calls\ the\ printEntries\n\ method\ in\ the\ diary\ class.\n +comment15.params= +comment15.target=void\ writeLibraryReservationData() +comment15.text=\n\ Write\ all\ current\ library\ reservations\ to\ a\ file\ specified\ by\ the\ user.\n\ For\ each\ user,\ this\ passes\ a\ printWriter\ object\ to\ the\ writeData\ method\ of\ LibraryReservation.\n +comment16.params= +comment16.target=void\ writeUserData() +comment16.text=\n\ A\ method\ to\ output\ all\ user\ data\ to\ a\ file\ using\ a\ fileDialog\ to\ specify\ file\ location.\n\ For\ each\ user,\ this\ passes\ a\ printWriter\ object\ to\ the\ writeData\ method\ of\ LibraryUser.\n +comment17.params= +comment17.target=void\ readLibraryReservationData() +comment17.text=\n\ Read\ Library\ Reservation\ Data\ from\ a\ file\ specified\ by\ the\ user.\n\ This\ passes\ a\ scanner\ to\ the\ readData\ method\ in\ LibraryReservation\ for\ each\n\ line\ of\ the\ file.\n +comment18.params= +comment18.target=void\ readData() +comment18.text=\n\ A\ method\ to\ read\ all\ data\ from\ files\ using\ a\ fileDialog\ to\ specify\ file\ location.\n\ This\ will\ create\ the\ corresponding\ objects\ depending\ on\ flags\ contained\ in\ the\ file\n\ and\ populate\ it's\ fields.\n\ \n\ Default\ flag\ value\:\ "book",\ to\ support\ legacy\ files.\ This\ will\ not\ interfere\ with\ \n\ files\ of\ different\ flag\ orders.\n +comment19.params=userID\ itemCode\ startDate\ noOfDays +comment19.target=boolean\ makeLibraryReservation(java.lang.String,\ java.lang.String,\ java.lang.String,\ int) +comment19.text=\n\ Create\ a\ reservation\ to\ allow\ a\ user\ to\ reserve\ an\ item\ from\ the\ library.\ Ensures\ a\ reservation\ is\ not\ already\n\ in\ place\ for\ a\ conflicting\ itemCode.\n\ Takes\ parameters\n\ \ String\ @userID\ \n\ \ String\ @itemCode\n\ \ String\ @startDate\n\ \ int\ @noOfDays\n\ \ \n\ Returns\n\ \ boolean\n +comment2.params= +comment2.target=java.util.ArrayList\ getItemCodes() +comment2.text=\n\ Return\ the\ keys\ of\ @itemsMap\ as\ a\ list.\n +comment20.params=reservationNo +comment20.target=void\ deleteLibraryReservation(java.lang.String) +comment20.text=\n\ Allows\ the\ deletion\ of\ a\ library\ reservation.\ \n\ \n\ Takes\ Parameter\n\ \ String\ @reservationNo\n\ \ \n\ Removes\ the\ corresponding\ value\ from\ the\ hashMap\ and\ diary.\n +comment3.params= +comment3.target=java.util.ArrayList\ getReservationNos() +comment3.text=\n\ Return\ the\ keys\ of\ @libraryReservationMap\ as\ a\ list.\n +comment4.params= +comment4.target=java.util.ArrayList\ getUsers() +comment4.text=\n\ Return\ the\ values\ of\ @customerMap\ as\ a\ list.\n +comment5.params= +comment5.target=java.util.ArrayList\ getItems() +comment5.text=\n\ Return\ the\ values\ of\ @itemsMap\ as\ a\ list.\n +comment6.params= +comment6.target=java.util.ArrayList\ getLibraryReservations() +comment6.text=\n\ Return\ the\ values\ of\ @libraryReservationMap\ as\ a\ list.\n +comment7.params=item +comment7.target=void\ storeItem(LibraryItem) +comment7.text=\n\ Inserts\ object\ value\ item\ alongside\ key\ of\ @itemCode\ into\ @itemsMap.\n +comment8.params=user +comment8.target=void\ storeUser(LibraryUser) +comment8.text=\n\ Inserts\ object\ value\ user\ alongside\ key\ of\ @userID\ into\ @customerMap.\n\ If\ the\ userID\ is\ set\ to\ unknown,\ it\ will\ call\ @generateUserID.\n +comment9.params=reservation +comment9.target=void\ storeLibraryReservation(LibraryReservation) +comment9.text=\n\ Inserts\ object\ value\ reservation\ alongside\ key\ of\ @reservationNo\ into\ @libraryReservationMap.\n +numComments=21 diff --git a/Semester 2/Programming 2/Project/Part 2/Library.java b/Semester 2/Programming 2/Project/Part 4 Complete/Library.java similarity index 71% rename from Semester 2/Programming 2/Project/Part 2/Library.java rename to Semester 2/Programming 2/Project/Part 4 Complete/Library.java index dcd81ad..5ec66d6 100644 --- a/Semester 2/Programming 2/Project/Part 2/Library.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/Library.java @@ -1,17 +1,17 @@ // Import all required libraries. Not using .* as it is not good practice due to potential conflicts. -import java.util.List; -import java.util.ArrayList; -import java.util.HashSet; import java.util.Scanner; import java.util.Random; import java.util.Map; import java.util.HashMap; import java.util.Date; +import java.util.NoSuchElementException; import java.io.File; import java.io.IOException; import java.awt.FileDialog; import java.awt.Frame; import java.io.PrintWriter; +import java.util.List; +import java.util.ArrayList; /** * Class to create objects of a Library, which can hold and report on assets held within @@ -51,6 +51,63 @@ public class Library diary = new Diary(); } + /** + * Accessor Start + * + * Possible scope creep, but thought it would be useful or even required for top marks to have accessors here. + */ + + /** + * Return the keys of @customerMap as a list. + */ + public ArrayList getUserIDs() + { + return new ArrayList( customerMap.keySet() ); + } + + /** + * Return the keys of @itemsMap as a list. + */ + public ArrayList getItemCodes() + { + return new ArrayList( itemsMap.keySet() ); + } + + /** + * Return the keys of @libraryReservationMap as a list. + */ + public ArrayList getReservationNos() + { + return new ArrayList( libraryReservationMap.keySet() ); + } + + /** + * Return the values of @customerMap as a list. + */ + public ArrayList getUsers() + { + return new ArrayList( customerMap.values() ); + } + + /** + * Return the values of @itemsMap as a list. + */ + public ArrayList getItems() + { + return new ArrayList( itemsMap.values() ); + } + + /** + * Return the values of @libraryReservationMap as a list. + */ + public ArrayList getLibraryReservations() + { + return new ArrayList( libraryReservationMap.values() ); + } + + /** + * Accessor End + */ /** * Storing Objects Start @@ -79,9 +136,9 @@ public class Library customerMap.put( user.getUserID(), user ); // Store the user along with the userID. } - /* + /** * Inserts object value reservation alongside key of @reservationNo into @libraryReservationMap. - */ + **/ private void storeLibraryReservation( LibraryReservation reservation ) { libraryReservationMap.put( reservation.getReservationNo(), reservation ); @@ -97,13 +154,20 @@ public class Library * Generate IDs Start */ - /* - * Generate a sequential reservation number. Since Maps do not have an index, we cannot simply get the last value, - * and recursion would be too intensive for this application. As a placeholder for the file output, a field variable - * is used to hold the last highest value for the reservation number. Unlike @generateUserID, this has a maximum value - * hardcoded to the spec. This likely will not be an issue since we can still have 1,000,000 reservations. - */ - public String generateReservationNo() + /** + * Generate a sequential reservation number padded with 0s to a length of 6. + * + * Since we are not storing in a file at this point, we obtain the size of the Map, and add 1 to determine the current number. + * This is due to the event of program restart, if a field variable is used, the first reservation generated will be of ID "000001" + * no matter what. This causes an issue if a file is read to load the reservations into the Library, since IDs will conflict and + * the value will be overwritten, causing data integrity loss. + * Unlike @generateUserID, this has a maximum value hardcoded to the spec. + * This likely will not be an issue since we can still have 1,000,000 reservations. + * + * Returns + * String @candidateNo - a proposed lowest number that is checked and interated if conflicting. + **/ + private String generateReservationNo() { /* * Originally, I did not check if the number was already taken, however the last part of step 4 introduced deletion. @@ -118,12 +182,15 @@ public class Library return candidateNo; } - /* - * Returns a random unique user ID by specifying - * @prefix - arbitrary alphanumeric prefix - * @length - length of numeric ID - * and returning a unique user id - * @uuid - a unique string starting with @prefix, and concat. with a random number + /** + * Generate a unique user identifier to apply to users when the UUID is unknown. + * This generates a number of @length length using the Random class, and prefixes @prefix. + * + * Takes Parameters + * String @prefix - arbitrary alphanumeric prefix + * String @length - length of numeric ID + * Returns + * String @uuid - a unique string starting with @prefix, and concat. with a random number * * Example: length = 6, expected result should be under 999,999 and above 99,999. * If we just use 10^(length), this would generate any number under 1,000,000. @@ -133,7 +200,7 @@ public class Library * * Note: I am aware that this is overengineered, and that several random integers of amount @length could be used, * but this is considerably more efficient since there is no iteration involved in the creation of the ID. O(1) - */ + **/ private String generateUserID( String prefix, int length ) { Random random = new Random(); @@ -174,11 +241,11 @@ public class Library * Print Object Details Start */ - /* - * Prints to the terminal, in a human-readable format, library reservation in the itemList + /** + * Prints to the terminal, in a human-readable format, all LibraryReservation(s) * * Contains a marker at the start and end to visualise in terminal output. - */ + **/ public void printLibraryReservations() { System.out.println( "Reservation Details Start" ); for ( LibraryReservation reservation : libraryReservationMap.values() ){ @@ -188,11 +255,16 @@ public class Library System.out.println( "---------------\nReservation Details End\n" ); } - /* - * Prints to the terminal, in a human-readable format, all items in the itemList + /** + * Prints to the terminal, in a human-readable format, all: + * LibraryItem(s) + * LibraryUser(s) + * LibraryReservation(s) * - * Contains a marker at the start and end to visualise in terminal output. - */ + * Contains a marker at the start and end of each type to visualise in terminal output. + * For printing the LibraryReservation(s), the corresponding method is called to reduce + * code duplication. + **/ public void printAll() { System.out.println("\n\nItem Details Start"); @@ -212,6 +284,15 @@ public class Library printLibraryReservations(); } + /** + * Print, to the terminal all reservation entries in the diary. + * Takes Parameters + * String @start + * String @end + * + * This converts both string inputs to Date formats, and calls the printEntries + * method in the diary class. + */ public void printDiaryEntries( String start, String end ) { diary.printEntries( DateUtil.convertStringToDate( start ), DateUtil.convertStringToDate( end ) ); @@ -225,9 +306,10 @@ public class Library * Write Files Start */ - /* + /** * Write all current library reservations to a file specified by the user. - */ + * For each user, this passes a printWriter object to the writeData method of LibraryReservation. + **/ public void writeLibraryReservationData() { try { @@ -246,19 +328,19 @@ public class Library } } - /* + /** * A method to output all user data to a file using a fileDialog to specify file location. - * - */ + * For each user, this passes a printWriter object to the writeData method of LibraryUser. + **/ public void writeUserData() { try { Frame frame = null; // Initialise null frame FileDialog fileBox = new FileDialog( frame, "Save", FileDialog.SAVE ); // Initialise file dialog box to save written data. fileBox.setVisible( true ); - PrintWriter writer = new PrintWriter( new File( fileBox.getDirectory() + fileBox.getFile() ) ); + PrintWriter writer = new PrintWriter( new File( fileBox.getDirectory() + fileBox.getFile() ) ); // Create PrintWriter to write user data to. // for ( LibraryUser user : userList ){ - writer.println("[Library User data]"); + writer.println("[Library User data]"); // Write the type header into the file. for ( LibraryUser user : customerMap.values() ) { user.writeData( writer ); } @@ -277,9 +359,11 @@ public class Library * Read Files Start */ - /* + /** * Read Library Reservation Data from a file specified by the user. - */ + * This passes a scanner to the readData method in LibraryReservation for each + * line of the file. + **/ public void readLibraryReservationData() { try { @@ -300,16 +384,19 @@ public class Library catch( IOException e ) { // Catch any IO Exceptions that may occur from improper file selection. System.err.println( "Caught IOException: " + e.getMessage() + "\nAn I/O Exception has occurred, please check file is readable and correct format." ); } + catch ( NoSuchElementException e ) { // In the event of incorrect formats from a readable file, this prevents a program crash. + System.err.println( "Caught Exception: " + e.getMessage() + "\nEnsure File contains the correct information." ); + } } - /* + /** * A method to read all data from files using a fileDialog to specify file location. * This will create the corresponding objects depending on flags contained in the file * and populate it's fields. * * Default flag value: "book", to support legacy files. This will not interfere with * files of different flag orders. - */ + **/ public void readData() { Frame frame = null; // Initialise a null frame @@ -318,7 +405,7 @@ public class Library try { Scanner fileScanner = new Scanner( new File( fileBox.getDirectory() + fileBox.getFile() ) ); - String typeFlag = "book"; // Set a default flag to support legacy files. + String itemType = "book"; // Set a default flag to support legacy files. while( fileScanner.hasNextLine() ) { @@ -331,18 +418,18 @@ public class Library else if ( lineItem.startsWith("[" ) ) { if ( lineItem.toLowerCase().contains("book") ) - typeFlag = "book"; + itemType = "book"; else if ( lineItem.toLowerCase().contains("periodical") ) - typeFlag = "periodical"; + itemType = "periodical"; else if ( lineItem.toLowerCase().contains("cd") ) - typeFlag = "cd"; + itemType = "cd"; else if ( lineItem.toLowerCase().contains("dvd") ) - typeFlag = "dvd"; + itemType = "dvd"; else if ( lineItem.toLowerCase().contains("user") ) - typeFlag = "user"; + itemType = "user"; else { System.out.println( "Flag detected, but no accepted format...\n Cannot store item in Library. Changing Flag to generic and skipping the following: "); - typeFlag = "generic"; + itemType = "generic"; } } @@ -352,36 +439,36 @@ public class Library else { Scanner detailScanner = new Scanner ( lineItem ).useDelimiter(","); // Create a new scanner to grab the values in a comma separated list LibraryItem item = null; // Initialise LibraryItem object. Java compiler was being cautious here, so I have to assign the value null. - if ( typeFlag.equals( "book" ) ) { + if ( itemType.equals( "book" ) ) { // Process Book Data item = new Book(); } - else if ( typeFlag.equals( "periodical" ) ) { + else if ( itemType.equals( "periodical" ) ) { // Process Periodic Data item = new Periodical(); } - else if ( typeFlag.equals( "cd" ) ) { + else if ( itemType.equals( "cd" ) ) { //Process CD Data item = new CD(); } - else if ( typeFlag.equals( "dvd" ) ) { + else if ( itemType.equals( "dvd" ) ) { //Process DVD Data item = new DVD(); } - else if ( typeFlag.equals( "user" ) ) { + else if ( itemType.equals( "user" ) ) { //Process User Data LibraryUser user = new LibraryUser(); user.readData( detailScanner ); storeUser( user ); continue; } - else if ( typeFlag.equals( "generic" ) ) { + else if ( itemType.equals( "generic" ) ) { // Output unaccepted lines to terminal System.out.println( lineItem ); continue; } - item.readItemData( detailScanner ); + item.readItemData( detailScanner ); // Deduped from if statements storeItem( item ); detailScanner.close(); } @@ -391,6 +478,9 @@ public class Library catch( IOException e ) { // Catch any IO Exceptions that may occur from improper file selection. System.err.println( "Caught IOException: " + e.getMessage() + "\nAn I/O Exception has occurred, please check file is readable and correct format." ); } + catch ( NoSuchElementException e ) { // In the event of incorrect formats from a readable file, this prevents a program crash. + System.err.println( "Caught Exception: " + e.getMessage() + "\nEnsure File contains the correct information." ); + } } /** @@ -401,9 +491,18 @@ public class Library * Other Methods */ - /* - * Create a reservation to allow a user to reserve an item from the library. - */ + /** + * Create a reservation to allow a user to reserve an item from the library. Ensures a reservation is not already + * in place for a conflicting itemCode. + * Takes parameters + * String @userID + * String @itemCode + * String @startDate + * int @noOfDays + * + * Returns + * boolean + **/ public boolean makeLibraryReservation( String userID, String itemCode, String startDate, int noOfDays ) { if ( !customerMap.containsKey( userID ) ) @@ -433,8 +532,8 @@ public class Library * Unneeded, since addReservations returns any item currently on loan. Dates do not need to be checked for every day in loan. * Date end = DateUtil.incrementDate( start, noOfDays-1 ); */ - String rID = generateReservationNo(); - LibraryReservation reservation = new LibraryReservation( rID, itemCode, userID, startDate, noOfDays ); + String rID = generateReservationNo(); // Generate a sequential ID for the reservation. + LibraryReservation reservation = new LibraryReservation( rID, itemCode, userID, startDate, noOfDays ); // Create new reservation, passing parameters to the constructor. /** Instead of the following For loop, I could've implemented * Arrays.asList( diary.getReservation( start, end ).contains( reservation ) * Although this would've been easier, this implementation is more in the scope of what we have learned. @@ -443,20 +542,32 @@ public class Library { if ( diaryReservation.toString().equals( reservation.toString() ) ) { - return false; + System.err.println( "This item is already reserved" ); + return false; // Reservation unsuccessful } } storeLibraryReservation( reservation ); - return true; + itemsMap.get( itemCode ).setOnLoan( true ); // Set the loan status for the item when the reservation is made + return true; // Reservation successful } + /** + * Allows the deletion of a library reservation. + * + * Takes Parameter + * String @reservationNo + * + * Removes the corresponding value from the hashMap and diary. + */ public void deleteLibraryReservation( String reservationNo ) { if ( libraryReservationMap.containsKey( reservationNo ) ) { - diary.deleteReservation( libraryReservationMap.get( reservationNo ) ); - libraryReservationMap.remove( reservationNo ); + // Since the application does not know the time, or use timers, this is the best I can do to remove the loan status. + itemsMap.get ( libraryReservationMap.get( reservationNo ).getItemCode() ).setOnLoan( false ); + diary.deleteReservation( libraryReservationMap.get( reservationNo ) ); // Remove the reservation from the diary + libraryReservationMap.remove( reservationNo ); // Remove the reservation from the Map. } } } diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryItem.class b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.class similarity index 65% rename from Semester 2/Programming 2/Project/Part 2/LibraryItem.class rename to Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.class index 3755f8a..ed54111 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/LibraryItem.class and b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryItem.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.ctxt similarity index 75% rename from Semester 2/Programming 2/Project/Part 2/LibraryItem.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.ctxt index 9d064c0..dc2f6f9 100644 --- a/Semester 2/Programming 2/Project/Part 2/LibraryItem.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.ctxt @@ -6,10 +6,10 @@ comment1.params= comment1.target=java.lang.String\ getItemCode() comment10.params= comment10.target=void\ printDetails() -comment10.text=\n\ Print\ to\ terminal,\ relevant\ field\ variables\n +comment10.text=\n\ Forms\ field\ variables\ in\ a\ desired\ format,\ prints\n\ to\ the\ PrintWriter,\ and\ flush\ to\ the\ file.\n\ Takes\ Parameter\n\ \ PrintWriter\ @writer\n comment11.params=detailScanner comment11.target=void\ readItemData(java.util.Scanner) -comment11.text=\n\ Passed\ a\ scanner\ object,\ assign\ values\ to\ relevant\ field\ variables\n +comment11.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n comment2.params= comment2.target=int\ getCost() comment3.params= diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryItem.java b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.java similarity index 87% rename from Semester 2/Programming 2/Project/Part 2/LibraryItem.java rename to Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.java index dbc3000..599c202 100644 --- a/Semester 2/Programming 2/Project/Part 2/LibraryItem.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryItem.java @@ -1,12 +1,11 @@ import java.util.Scanner; -import java.util.ArrayList; import java.util.NoSuchElementException; /** * Superclass of items / assets stored in a Library. * * @author George Wilkinson - * @version 3.1 + * @version 4.1 */ public abstract class LibraryItem { @@ -80,9 +79,12 @@ public abstract class LibraryItem * Field Mutator End */ - /* - * Print to terminal, relevant field variables - */ + /** + * Forms field variables in a desired format, prints + * to the PrintWriter, and flush to the file. + * Takes Parameter + * PrintWriter @writer + */ public void printDetails() { System.out.println("Item Code: " + itemCode + @@ -95,9 +97,11 @@ public abstract class LibraryItem System.out.println( "Available to Loan"); } - /* - * Passed a scanner object, assign values to relevant field variables - */ + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner + */ public void readItemData( Scanner detailScanner ) { if ( detailScanner != null ) { diff --git a/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.class b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.class new file mode 100644 index 0000000..623b679 Binary files /dev/null and b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.class differ diff --git a/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.ctxt new file mode 100644 index 0000000..cbabb7c --- /dev/null +++ b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.ctxt @@ -0,0 +1,42 @@ +#BlueJ class context +comment0.params=reservationNo\ itemCode\ userID\ startDate\ noOfDays +comment0.target=LibraryReservation(java.lang.String,\ java.lang.String,\ java.lang.String,\ java.lang.String,\ int) +comment0.text=\n\ Constructor\ for\ objects\ of\ class\ LibraryReservation\n +comment1.params= +comment1.target=LibraryReservation() +comment1.text=\n\ Default\ Constructor\ for\ objects\ of\ class\ LibraryReservation\n +comment10.params=startDate +comment10.target=void\ setStartDate(java.lang.String) +comment11.params=noOfDays +comment11.target=void\ setNoOfDays(int) +comment12.params= +comment12.target=java.lang.String\ toString() +comment12.text=\n\ Concatenates\ values\ to\ output\ a\ formatted\ string.\n +comment13.params= +comment13.target=void\ printDetails() +comment13.text=\n\ Prints\ to\ terminal,\ the\ details\ of\ the\ reservation.\n +comment14.params=writer +comment14.target=void\ writeData(java.io.PrintWriter) +comment14.text=\n\ Forms\ field\ variables\ in\ a\ desired\ format,\ prints\n\ to\ the\ PrintWriter,\ and\ flush\ to\ the\ file.\n\ Takes\ Parameter\n\ \ PrintWriter\ @writer\n +comment15.params=detailScanner +comment15.target=void\ readData(java.util.Scanner) +comment15.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n +comment2.params= +comment2.target=java.lang.String\ getReservationNo() +comment2.text=\n\ Accessor\ Start\n +comment3.params= +comment3.target=java.lang.String\ getItemCode() +comment4.params= +comment4.target=java.lang.String\ userID() +comment5.params= +comment5.target=java.util.Date\ getStartDate() +comment6.params= +comment6.target=int\ getNoOfDays() +comment7.params=reservationNo +comment7.target=void\ setReservationNo(java.lang.String) +comment7.text=\n\ Mutator\ Start\n +comment8.params=itemCode +comment8.target=void\ setItemCode(java.lang.String) +comment9.params=userID +comment9.target=void\ setUserID(java.lang.String) +numComments=16 diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryReservation.java b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.java similarity index 83% rename from Semester 2/Programming 2/Project/Part 2/LibraryReservation.java rename to Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.java index fbd4836..3cfcd62 100644 --- a/Semester 2/Programming 2/Project/Part 2/LibraryReservation.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryReservation.java @@ -31,14 +31,86 @@ public class LibraryReservation this.noOfDays = noOfDays; } + /** + * Default Constructor for objects of class LibraryReservation + */ public LibraryReservation(){} + /** + * Accessor Start + */ + + public String getReservationNo() + { + return reservationNo; + } + + public String getItemCode() + { + return itemCode; + } + + public String userID() + { + return userID; + } + + public Date getStartDate() + { + return startDate; + } + + public int getNoOfDays() + { + return noOfDays; + } + + /** + * Accessor End + */ + + /** + * Mutator Start + */ + + public void setReservationNo( String reservationNo ) + { + this.reservationNo = reservationNo; + } + + public void setItemCode( String itemCode ) + { + this.itemCode = itemCode; + } + + public void setUserID( String userID ) + { + this.userID = userID; + } + + public void setStartDate( String startDate ) + { + this.startDate = DateUtil.convertStringToDate( startDate ); + } + + public void setNoOfDays( int noOfDays ) + { + this.noOfDays = noOfDays; + } + + /** + * Mutator End + */ + + /** + * Concatenates values to output a formatted string. + */ public String toString() { return reservationNo + " " + userID + " " + itemCode; } - /* + /** * Prints to terminal, the details of the reservation. */ public void printDetails() @@ -50,12 +122,23 @@ public class LibraryReservation "\nDuration: " + noOfDays + " days" ); } + /** + * Forms field variables in a desired format, prints + * to the PrintWriter, and flush to the file. + * Takes Parameter + * PrintWriter @writer + */ public void writeData( PrintWriter writer ) { writer.print( reservationNo + "," + itemCode + "," + userID + "," + DateUtil.convertDateToShortString( startDate ) + "," + noOfDays ); writer.flush(); } + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner + */ public void readData( Scanner detailScanner ) { if ( detailScanner != null ) { @@ -66,98 +149,4 @@ public class LibraryReservation this.noOfDays = Integer.parseInt( detailScanner.next().trim() ); } } - - /* - * Start Accessor - */ - - /* - * Return value of @reservationNo - */ - public String getReservationNo() - { - return reservationNo; - } - - /* - * Return value of @itemCode - */ - public String getItemCode() - { - return itemCode; - } - - /* - * Return value of @userID - */ - public String getUserID() - { - return userID; - } - - /* - * Return value of @startDate - */ - public Date getStartDate() - { - return startDate; - } - - /* - * Return value of @noOfDays - */ - public int getNoOfDays() - { - return noOfDays; - } - - /* - * End Accessor - * - * Start Mutator - */ - - /* - * Set @reservationNo to a new value - */ - public void setReservationNo( String reservationNo ) - { - this.reservationNo = reservationNo; - } - - /* - * Set @itemCode to a new value - */ - public void setItemCode( String itemCode ) - { - this.itemCode = itemCode; - } - - /* - * Set @userID to a new value - */ - public void setUserID( String userID ) - { - this.userID = userID; - } - - /* - * Set @startDate to a new value - */ - public void setStartDate( String startDate ) - { - this.startDate = DateUtil.convertStringToDate( startDate ); - } - - /* - * Set @noOfDays to a new value - */ - public void setNoOfDays( int noOfDays ) - { - this.noOfDays = noOfDays; - } - - /* - * End Mutator - */ } diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryUser.class b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.class similarity index 61% rename from Semester 2/Programming 2/Project/Part 2/LibraryUser.class rename to Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.class index 743acac..8e3ccd4 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/LibraryUser.class and b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryUser.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.ctxt similarity index 76% rename from Semester 2/Programming 2/Project/Part 2/LibraryUser.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.ctxt index d551c9e..f9ccbd8 100644 --- a/Semester 2/Programming 2/Project/Part 2/LibraryUser.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.ctxt @@ -1,7 +1,7 @@ #BlueJ class context comment0.params= comment0.target=LibraryUser() -comment0.text=\n\ Constructor\ for\ objects\ of\ class\ LibraryUser.\ As\ fields\ \n +comment0.text=\n\ Constructor\ for\ objects\ of\ class\ LibraryUser.\n comment1.params= comment1.target=java.lang.String\ getUserID() comment1.text=\n\ Accessor\ start\ -\ return\ values\ of\ corresponding\ variables.\n @@ -9,13 +9,13 @@ comment10.params=title comment10.target=void\ setTitle(java.lang.String) comment11.params=writer comment11.target=void\ writeData(java.io.PrintWriter) -comment11.text=\n\ Passed\ a\ PrintWriter,\ append\ field\ variables\ in\ a\ set\ format,\ and\ flush\ the\ buffer.\n +comment11.text=\n\ Forms\ field\ variables\ in\ a\ desired\ format,\ prints\n\ to\ the\ PrintWriter,\ and\ flush\ to\ the\ file.\n\ Takes\ Parameter\n\ \ PrintWriter\ @writer\n comment12.params= comment12.target=void\ printDetails() -comment12.text=\n\ Print\ to\ terminal,\ all\ relevant\ fields.\n +comment12.text=\n\ Print\ to\ terminal\ all\ relevant\ fields.\n comment13.params=detailScanner comment13.target=void\ readData(java.util.Scanner) -comment13.text=\n\ Passed\ a\ scanner\ object,\ assign\ relevant\ values\ to\ field\ variables.\n +comment13.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n comment2.params= comment2.target=java.lang.String\ getSurname() comment3.params= diff --git a/Semester 2/Programming 2/Project/Part 2/LibraryUser.java b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.java similarity index 67% rename from Semester 2/Programming 2/Project/Part 2/LibraryUser.java rename to Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.java index 8db603b..2736f29 100644 --- a/Semester 2/Programming 2/Project/Part 2/LibraryUser.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/LibraryUser.java @@ -3,7 +3,7 @@ * Class LibraryUser to create a user of a library. * * @George Wilkinson - * @1.0 + * @2.3 */ import java.util.Scanner; @@ -15,30 +15,35 @@ public class LibraryUser private String userID, surname, firstName, otherInitials, title; /** - * Constructor for objects of class LibraryUser. As fields + * Constructor for objects of class LibraryUser. */ public LibraryUser(){} /* * Accessor start - return values of corresponding variables. */ - public String getUserID(){ + public String getUserID() + { return userID; } - public String getSurname(){ + public String getSurname() + { return surname; } - public String getFirstName(){ + public String getFirstName() + { return firstName; } - public String getOtherInitials(){ + public String getOtherInitials() + { return otherInitials; } - public String getTitle(){ + public String getTitle() + { return title; } @@ -47,23 +52,28 @@ public class LibraryUser * Mutator Start - Set value of corresponding variables */ - public void setUserID( String userID ){ + public void setUserID( String userID ) + { this.userID = userID; } - public void setSurname( String surname ){ + public void setSurname( String surname ) + { this.surname = surname; } - public void setFirstName( String firstName ){ + public void setFirstName( String firstName ) + { this.firstName = firstName; } - public void setOtherInitials( String otherInitials ){ + public void setOtherInitials( String otherInitials ) + { this.otherInitials = otherInitials; } - public void setTitle( String title ){ + public void setTitle( String title ) + { this.title = title; } @@ -71,8 +81,11 @@ public class LibraryUser * Mutator End */ - /* - * Passed a PrintWriter, append field variables in a set format, and flush the buffer. + /** + * Forms field variables in a desired format, prints + * to the PrintWriter, and flush to the file. + * Takes Parameter + * PrintWriter @writer */ public void writeData( PrintWriter writer ) { @@ -81,7 +94,7 @@ public class LibraryUser } /* - * Print to terminal, all relevant fields. + * Print to terminal all relevant fields. */ public void printDetails() { @@ -89,8 +102,10 @@ public class LibraryUser "\nName: " + title + " " + firstName + " " + otherInitials + " " + surname ); } - /* - * Passed a scanner object, assign relevant values to field variables. + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner */ public void readData( Scanner detailScanner ) { diff --git a/Semester 2/Programming 2/Project/Part 2/Periodical.class b/Semester 2/Programming 2/Project/Part 4 Complete/Periodical.class similarity index 94% rename from Semester 2/Programming 2/Project/Part 2/Periodical.class rename to Semester 2/Programming 2/Project/Part 4 Complete/Periodical.class index 70f9287..eda0955 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/Periodical.class and b/Semester 2/Programming 2/Project/Part 4 Complete/Periodical.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/Periodical.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/Periodical.ctxt similarity index 85% rename from Semester 2/Programming 2/Project/Part 2/Periodical.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/Periodical.ctxt index 2f0574a..e3a01ef 100644 --- a/Semester 2/Programming 2/Project/Part 2/Periodical.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/Periodical.ctxt @@ -13,5 +13,5 @@ comment3.target=void\ printDetails() comment3.text=\n\ Print\ to\ terminal,\ relevant\ field\ variable's\ values.\n comment4.params=detailScanner comment4.target=void\ readItemData(java.util.Scanner) -comment4.text=\n\ Passed\ a\ scanner,\ assign\ relevant\ values\ to\ field\ variables.\n +comment4.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n numComments=5 diff --git a/Semester 2/Programming 2/Project/Part 2/Periodical.java b/Semester 2/Programming 2/Project/Part 4 Complete/Periodical.java similarity index 90% rename from Semester 2/Programming 2/Project/Part 2/Periodical.java rename to Semester 2/Programming 2/Project/Part 4 Complete/Periodical.java index f2a28d2..ed9e243 100644 --- a/Semester 2/Programming 2/Project/Part 2/Periodical.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/Periodical.java @@ -3,7 +3,7 @@ * Subclass of LibraryItem to create a periodical ( e.g. newspaper, tabloid ). * * @George Wilkinson - * @2.3 + * @2.5 */ import java.util.Scanner; @@ -42,8 +42,10 @@ public class Periodical extends PrintedItem super.printDetails(); } - /* - * Passed a scanner, assign relevant values to field variables. + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner */ public void readItemData( Scanner detailScanner ){ if ( detailScanner != null ) { diff --git a/Semester 2/Programming 2/Project/Part 2/PrintedItem.class b/Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.class similarity index 95% rename from Semester 2/Programming 2/Project/Part 2/PrintedItem.class rename to Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.class index 219c507..62a9df4 100644 Binary files a/Semester 2/Programming 2/Project/Part 2/PrintedItem.class and b/Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.class differ diff --git a/Semester 2/Programming 2/Project/Part 2/PrintedItem.ctxt b/Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.ctxt similarity index 82% rename from Semester 2/Programming 2/Project/Part 2/PrintedItem.ctxt rename to Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.ctxt index 7c972b9..a4f1f89 100644 --- a/Semester 2/Programming 2/Project/Part 2/PrintedItem.ctxt +++ b/Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.ctxt @@ -14,4 +14,5 @@ comment4.target=void\ printDetails() comment4.text=\n\ Field\ Mutator\ End\n comment5.params=detailScanner comment5.target=void\ readItemData(java.util.Scanner) +comment5.text=\n\ Populate\ the\ fields\ with\ details\ from\ the\ scanner\n\ Takes\ Parameters\n\ \ Scanner\ @detailScanner\n numComments=6 diff --git a/Semester 2/Programming 2/Project/Part 2/PrintedItem.java b/Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.java similarity index 90% rename from Semester 2/Programming 2/Project/Part 2/PrintedItem.java rename to Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.java index de8467e..b86ae86 100644 --- a/Semester 2/Programming 2/Project/Part 2/PrintedItem.java +++ b/Semester 2/Programming 2/Project/Part 4 Complete/PrintedItem.java @@ -3,7 +3,7 @@ * Subclass of LibraryItem to create objects of printed items in a library. * * @George Wilkinson - * @1.0 + * @1.1 */ import java.util.Scanner; @@ -52,6 +52,11 @@ public abstract class PrintedItem extends LibraryItem super.printDetails(); } + /** + * Populate the fields with details from the scanner + * Takes Parameters + * Scanner @detailScanner + */ public void readItemData( Scanner detailScanner ){ if ( detailScanner != null ) { this.noOfPages = Integer.parseInt( detailScanner.next().trim() ); diff --git a/Semester 2/Programming 2/Project/Part 2/README.TXT b/Semester 2/Programming 2/Project/Part 4 Complete/README.TXT similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/README.TXT rename to Semester 2/Programming 2/Project/Part 4 Complete/README.TXT diff --git a/Semester 2/Programming 2/Project/Part 2/data/item_data_1.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_1.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/item_data_1.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_1.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/item_data_1_v2.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_1_v2.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/item_data_1_v2.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_1_v2.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/item_data_2.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_2.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/item_data_2.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_2.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/item_data_2_generic_test.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_2_generic_test.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/item_data_2_generic_test.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/item_data_2_generic_test.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/items_all.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/items_all.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/items_all.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/items_all.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/items_and_user_data.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/items_and_user_data.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/items_and_user_data.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/items_and_user_data.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/library_user_data.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/library_user_data.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/library_user_data.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/library_user_data.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/testreservationwrite.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/testreservationwrite.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/testreservationwrite.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/testreservationwrite.txt diff --git a/Semester 2/Programming 2/Project/Part 2/data/testuserwrite.txt b/Semester 2/Programming 2/Project/Part 4 Complete/data/testuserwrite.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/data/testuserwrite.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/data/testuserwrite.txt diff --git a/Semester 2/Programming 2/Project/Part 2/doc/Book.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/Book.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/Book.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/Book.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/DateUtil.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/DateUtil.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/DateUtil.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/DateUtil.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/Diary.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/Diary.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/Diary.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/Diary.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/Library.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/Library.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/Library.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/Library.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/LibraryItem.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/LibraryItem.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/LibraryItem.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/LibraryItem.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/allclasses-frame.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/allclasses-frame.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/allclasses-frame.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/allclasses-frame.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/allclasses-noframe.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/allclasses-noframe.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/allclasses-noframe.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/allclasses-noframe.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/constant-values.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/constant-values.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/constant-values.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/constant-values.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/index.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/index.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/index.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/index.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/logfile.txt b/Semester 2/Programming 2/Project/Part 4 Complete/doc/logfile.txt similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/logfile.txt rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/logfile.txt diff --git a/Semester 2/Programming 2/Project/Part 2/doc/package-frame.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/package-frame.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/package-frame.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/package-frame.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/package-list b/Semester 2/Programming 2/Project/Part 4 Complete/doc/package-list similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/package-list rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/package-list diff --git a/Semester 2/Programming 2/Project/Part 2/doc/package-summary.html b/Semester 2/Programming 2/Project/Part 4 Complete/doc/package-summary.html similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/package-summary.html rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/package-summary.html diff --git a/Semester 2/Programming 2/Project/Part 2/doc/resources/inherit.gif b/Semester 2/Programming 2/Project/Part 4 Complete/doc/resources/inherit.gif similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/resources/inherit.gif rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/resources/inherit.gif diff --git a/Semester 2/Programming 2/Project/Part 2/doc/stylesheet.css b/Semester 2/Programming 2/Project/Part 4 Complete/doc/stylesheet.css similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/doc/stylesheet.css rename to Semester 2/Programming 2/Project/Part 4 Complete/doc/stylesheet.css diff --git a/Semester 2/Programming 2/Project/Part 2/nullnull b/Semester 2/Programming 2/Project/Part 4 Complete/nullnull similarity index 100% rename from Semester 2/Programming 2/Project/Part 2/nullnull rename to Semester 2/Programming 2/Project/Part 4 Complete/nullnull diff --git a/Semester 2/Programming 2/Project/Part 4 Complete/package.bluej b/Semester 2/Programming 2/Project/Part 4 Complete/package.bluej new file mode 100644 index 0000000..30276f6 --- /dev/null +++ b/Semester 2/Programming 2/Project/Part 4 Complete/package.bluej @@ -0,0 +1,179 @@ +#BlueJ package file +dependency1.from=Library +dependency1.to=Book +dependency1.type=UsesDependency +dependency2.from=Library +dependency2.to=Periodical +dependency2.type=UsesDependency +dependency3.from=Library +dependency3.to=LibraryItem +dependency3.type=UsesDependency +dependency4.from=Library +dependency4.to=CD +dependency4.type=UsesDependency +dependency5.from=Library +dependency5.to=DVD +dependency5.type=UsesDependency +dependency6.from=Library +dependency6.to=LibraryUser +dependency6.type=UsesDependency +dependency7.from=LibraryReservation +dependency7.to=DateUtil +dependency7.type=UsesDependency +dependency8.from=Library +dependency8.to=LibraryReservation +dependency8.type=UsesDependency +objectbench.height=76 +objectbench.width=940 +package.editor.height=874 +package.editor.width=814 +package.editor.x=0 +package.editor.y=31 +package.numDependencies=8 +package.numTargets=11 +package.showExtends=true +package.showUses=true +project.charset=UTF-8 +target1.editor.height=700 +target1.editor.width=900 +target1.editor.x=1017 +target1.editor.y=76 +target1.height=50 +target1.name=PrintedItem +target1.naviview.expanded=true +target1.showInterface=false +target1.type=AbstractTarget +target1.typeParameters= +target1.width=110 +target1.x=130 +target1.y=240 +target10.editor.height=700 +target10.editor.width=900 +target10.editor.x=960 +target10.editor.y=146 +target10.height=50 +target10.name=AudioVisual +target10.naviview.expanded=true +target10.showInterface=false +target10.type=AbstractTarget +target10.typeParameters= +target10.width=110 +target10.x=380 +target10.y=240 +target11.editor.height=700 +target11.editor.width=900 +target11.editor.x=40 +target11.editor.y=51 +target11.height=50 +target11.name=LibraryReservation +target11.naviview.expanded=true +target11.showInterface=false +target11.type=ClassTarget +target11.typeParameters= +target11.width=160 +target11.x=230 +target11.y=440 +target2.editor.height=786 +target2.editor.width=960 +target2.editor.x=34 +target2.editor.y=174 +target2.height=50 +target2.name=CD +target2.naviview.expanded=true +target2.showInterface=false +target2.type=ClassTarget +target2.typeParameters= +target2.width=80 +target2.x=360 +target2.y=340 +target3.editor.height=700 +target3.editor.width=900 +target3.editor.x=557 +target3.editor.y=177 +target3.height=60 +target3.name=LibraryItem +target3.naviview.expanded=true +target3.showInterface=false +target3.type=AbstractTarget +target3.typeParameters= +target3.width=120 +target3.x=250 +target3.y=110 +target4.editor.height=1049 +target4.editor.width=1920 +target4.editor.x=0 +target4.editor.y=31 +target4.height=50 +target4.name=DVD +target4.naviview.expanded=true +target4.showInterface=false +target4.type=ClassTarget +target4.typeParameters= +target4.width=80 +target4.x=470 +target4.y=380 +target5.editor.height=700 +target5.editor.width=900 +target5.editor.x=55 +target5.editor.y=274 +target5.height=50 +target5.name=LibraryUser +target5.naviview.expanded=true +target5.showInterface=false +target5.type=ClassTarget +target5.typeParameters= +target5.width=110 +target5.x=100 +target5.y=170 +target6.editor.height=700 +target6.editor.width=1619 +target6.editor.x=192 +target6.editor.y=267 +target6.height=50 +target6.name=Periodical +target6.naviview.expanded=true +target6.showInterface=false +target6.type=ClassTarget +target6.typeParameters= +target6.width=90 +target6.x=60 +target6.y=380 +target7.editor.height=1049 +target7.editor.width=1920 +target7.editor.x=0 +target7.editor.y=31 +target7.height=50 +target7.name=Book +target7.naviview.expanded=true +target7.showInterface=false +target7.type=ClassTarget +target7.typeParameters= +target7.width=80 +target7.x=180 +target7.y=340 +target8.editor.height=700 +target8.editor.width=900 +target8.editor.x=40 +target8.editor.y=51 +target8.height=50 +target8.name=DateUtil +target8.naviview.expanded=true +target8.showInterface=false +target8.type=ClassTarget +target8.typeParameters= +target8.width=80 +target8.x=70 +target8.y=10 +target9.editor.height=1049 +target9.editor.width=1920 +target9.editor.x=0 +target9.editor.y=31 +target9.height=50 +target9.name=Library +target9.naviview.expanded=true +target9.showInterface=false +target9.type=ClassTarget +target9.typeParameters= +target9.width=100 +target9.x=260 +target9.y=240