vault backup: 2024-04-12 09:39:31
This commit is contained in:
31
.obsidian/workspace.json
vendored
31
.obsidian/workspace.json
vendored
@@ -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",
|
||||
|
Binary file not shown.
@@ -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
|
Binary file not shown.
@@ -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
|
@@ -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
|
||||
|
BIN
Semester 2/Programming 2/Project/Part 4 Complete.zip
Normal file
BIN
Semester 2/Programming 2/Project/Part 4 Complete.zip
Normal file
Binary file not shown.
Binary file not shown.
@@ -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
|
@@ -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() );
|
Binary file not shown.
@@ -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
|
@@ -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 ) {
|
Binary file not shown.
@@ -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
|
@@ -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 ) {
|
Binary file not shown.
@@ -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
|
@@ -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 ) {
|
BIN
Semester 2/Programming 2/Project/Part 4 Complete/Library.class
Normal file
BIN
Semester 2/Programming 2/Project/Part 4 Complete/Library.class
Normal file
Binary file not shown.
@@ -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
|
@@ -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<String>( customerMap.keySet() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the keys of @itemsMap as a list.
|
||||
*/
|
||||
public ArrayList getItemCodes()
|
||||
{
|
||||
return new ArrayList<String>( itemsMap.keySet() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the keys of @libraryReservationMap as a list.
|
||||
*/
|
||||
public ArrayList getReservationNos()
|
||||
{
|
||||
return new ArrayList<String>( libraryReservationMap.keySet() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the values of @customerMap as a list.
|
||||
*/
|
||||
public ArrayList getUsers()
|
||||
{
|
||||
return new ArrayList<LibraryUser>( customerMap.values() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the values of @itemsMap as a list.
|
||||
*/
|
||||
public ArrayList getItems()
|
||||
{
|
||||
return new ArrayList<LibraryItem>( itemsMap.values() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the values of @libraryReservationMap as a list.
|
||||
*/
|
||||
public ArrayList getLibraryReservations()
|
||||
{
|
||||
return new ArrayList<LibraryReservation>( 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.
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
@@ -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=
|
@@ -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,8 +79,11 @@ 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()
|
||||
{
|
||||
@@ -95,8 +97,10 @@ 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 ) {
|
||||
|
Binary file not shown.
@@ -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
|
@@ -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
|
||||
*/
|
||||
}
|
Binary file not shown.
@@ -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=
|
@@ -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 )
|
||||
{
|
Binary file not shown.
@@ -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
|
@@ -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 ) {
|
Binary file not shown.
@@ -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
|
@@ -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() );
|
Before Width: | Height: | Size: 57 B After Width: | Height: | Size: 57 B |
179
Semester 2/Programming 2/Project/Part 4 Complete/package.bluej
Normal file
179
Semester 2/Programming 2/Project/Part 4 Complete/package.bluej
Normal file
@@ -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
|
Reference in New Issue
Block a user