diff --git a/README.md b/README.md index 8e56120..5b5577e 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,19 @@ -# PM3-HS22-IT21b_WIN-Team1 -PM3 FivePlants Gartenverwaltung +# GardenPlanner -## Class Diagram -Umletino: https://www.umletino.com/umletino.html +## Installations- und Gebrauchsanweisung +### Vorbedingungen + - Das Java Runtime Environment (JRE) muss in der Version 17 auf Ihrem Computer installiert sein. + - Das Java Development Kit (JDK) muss in der Version 17 auf Ihrem Computer installiert sein. -Draft File: doc/ClassDiagramDraft.uxf +### Installation und Starten der Applikation +1. Laden sie die neuste Version der Applikation herunter. Sie finden die Applikation hier: + https://github.zhaw.ch/schrom01/PM3-HS22-IT21b_WIN-Team1/tags +2. Extrahieren sie die heruntergeladene ZIP-Datei +3. Öffnen sie ein Kommandozeilenfenster und navigieren sie an den Speicherort der Entpack-ten Applikation. +4. Führen sie den Befehl: «./gradlew.bat run» (auf Windows) oder «./gradlew run» (auf ma-cOS und Linux) aus. -## Branch model -- production branch: `main` +### Anwendung +Eine Bedienungsanleitung finden Sie im Dokument [a "Technischer Bericht II"](doc/PM3-HS22-IT21b_WIN-Technischer_Bericht_II-Team1.pdf) im Kapitel 6.3.3. -This branch has a working version of the code. - -- development branch: `dev` - -This branch should contain a running (although not necessarily working) version of the code. Working states are to be merged into the `main` branch regularly. - -- feature: `feature_xy_` - -These branches contain features in active development. When the code is ready it will be merged into the `dev` branch. - -- bugfix: `bugfix_xy_` - -These branches are for bugfixes. - -- documentation: `doc_xy_` - -These branches are for javadoc and project documentation (such as the readme, class diagrams etc.). - - -## User Manual -- Search Plant List: if first Char is '#': only exact match in ID. +## Projektdokumentation +Die gesamte Projektdokumentation ist im Dokument [a "Technischer Bericht II"](doc/PM3-HS22-IT21b_WIN-Technischer_Bericht_II-Team1.pdf) zu finden. \ No newline at end of file diff --git a/doc/Classdiagramm/ClassDiagramDraft.uxf b/doc/Classdiagramm/ClassDiagramDraft.uxf deleted file mode 100644 index 1a1da0a..0000000 --- a/doc/Classdiagramm/ClassDiagramDraft.uxf +++ /dev/null @@ -1,92 +0,0 @@ -10UMLClass7203010030MainUMLClass1240250300140<<Interface>> -PlantDatabase --- -+ getPlantList(zone: HardinessZone): List<Plant> -+ getPlant(id: long): Optional<Plant>UMLClass94058022040TaskListControllerUMLClass124010300180<<Record>> -Plant --- -+ id: long -+ name: String -+ description: String -+ spacing: int -+ lifecycle: List<GrowthPhase> --- -+ calculateStartDate(harvestDate: Date): Date -+ generateTasks() -UMLClass1210580210120TaskListModel --- -- tasks: ListProperty<Task> -- taskDb: TaskDatabase --- -+ getTask(id: long): Optional<Task> -+ saveTask(task: Task) -+ removeTask(task: Task)UMLClass590560250110GardenPlanModel --- -- tasks: ListProperty<Task> -- gardenPlan: GardenPlan --- -+ savePlanting(planting: UserPlanting) -+ removePlanting(planting: UserPlanting)UMLClass34055018080GardenPlanControllerUMLClass1660720490240Task --- -+ id: long -+ name: String {readOnly} -+ description: String {readOnly} -+ startDate: Date {readOnly} -+ isReadOnly: boolean {readOnly} -- interval: int -- endDate: Date --- -+ Task(name: String, description: String, startDate: String, isReadOnly: boolean): Task -+ withInterval(interval: int): Task -+ withEndDate(endDate: Date): Task -+ withId(id: long): Task --- -+ getInterval(): Optional<int> -+ getEndDate(): Optional<Date>UMLClass1170760280140<<Interface>> -TaskDatabase --- -+ getTaskList(start: Date, end: Date): List<Task> -+ saveTask(Task task) throws ??Exception -+ removeTask(Task task) throws ??ExceptionUMLClass780310100100MainWindowUMLClass440180180130MainWindowControllerUMLClass1340107021070NotificationService --- -- taskDb: TaskDatabase --- -+ tick()UMLClass16401210240140<<Interface>> -WeatherProvider --- -+ getWeatherForecast: WeatherForecastUMLClass16201040400100WeatherService --- -- weatherPovider: WeatherProvider -- taskDb: TaskDatabase --- -+ WeatherService(provider: WeatherProvider, taskDb: TaskDatabase) -- updateTasks()UMLClass162010260150<<Record>> -GrowthPhase --- -+ startDate: Date -+ endDate: Date -+ type: GrowthPhaseType - -Relation15308011030lt=<->>>>>90;10;10;10Text420019070Note: --- -{final, readOnly} omitted on public data fields in <<Record>> Entities for clarity -style=wordwrapRelation144082024030lt=<.220;10;10;10Relation13006903090lt=<.10;70;10;10UMLClass600980210120<<Record>> -UserPlanting --- -+ plantId: long -+ asSowing: boolean -+ startDate: Date -+ area: intRelation13801803090lt=<.10;10;10;70UMLClass195010140120<<Enumeration>> -GrowthPhaseType --- -SOW -PLANT -HARVESTRelation18707010030lt=<->>>>80;10;10;10Relation11505908030lt=<->>>>60;10;10;10Relation70089030110lt=<.10;90;10;10Relation51058010030lt=<->>>>80;10;10;10UMLClass570760280140<<Interface>> -GardenPlan --- -+ getPlantings(): List<UserPlanting> -+ addPlanting(plantId: long, startDate) -+ savePlanting(planting: UserPlanting) -Relation69066030120lt=<.10;100;10;10UMLClass6039018080PlantingCell -{extends ListCell<>}UMLClass054029080PlantingCellFactory -{implements Callback<ListView<UserPlanting> >}Relation14046030100lt=<.10;10;10;80Relation1750113030100lt=<.10;80;10;10Relation1350890120200lt=<.10;10;100;180Relation1380890260220lt=<.10;10;240;200UMLClass1090106020050JsonTaskDatabaseRelation118089030190lt=<<-10;10;10;170UMLClass162031020050JsonPlantDatabaseRelation153032011030lt=<<-10;10;90;10UMLClass30080020050JsonGardenPlanRelation49081010030lt=<<-80;10;10;10Relation2805708030lt=<.10;10;60;10Relation850400220200lt=<.200;180;10;10Relation440400390170lt=<.10;150;370;10UMLClass85012016060PlantListControllerRelation7605090280lt=<.70;260;10;10Relation610230190140lt=<.10;10;170;120Relation87017080210lt=<.60;10;10;190UMLClass102029016060PlantListModelRelation1000150110160lt=<.90;140;10;10Relation11703109030lt=<.70;10;10;10 \ No newline at end of file diff --git a/doc/Classdiagramm/layer-diagram.png b/doc/Classdiagramm/layer-diagram.png deleted file mode 100644 index 6e6fdfe..0000000 Binary files a/doc/Classdiagramm/layer-diagram.png and /dev/null differ diff --git a/doc/Classdiagramm/layer-diagram.uxf b/doc/Classdiagramm/layer-diagram.uxf deleted file mode 100644 index 6330af5..0000000 --- a/doc/Classdiagramm/layer-diagram.uxf +++ /dev/null @@ -1,7 +0,0 @@ -10UMLPackage39060340100UIUMLPackage390180460120DomainUMLPackage390330460120Technical ServicesUMLPackage4009010060Views (JFX)UMLPackage40022010060IOUMLPackage40037010060JacksonUMLPackage51022010060TypesUMLPackage62022010060ModelsUMLPackage5109011060Controllers (JFX)UMLPackage51037010060LoggingUMLPackage62037010060JavaFXUMLPackage73022011060ServicesUMLPackage73037011060HTTP/APIRelation5701509070lt=.> -70;10;10;50Relation57029011080lt=.> -90;10;10;60Relation340120350400lt=.> -60;10;10;10;10;380;330;380;330;310Relation77027030120lt=.> -10;10;10;100Relation36025060180lt=.> -40;10;10;10;10;160;40;160Relation61012070120lt=.> -10;10;50;10;50;100 \ No newline at end of file diff --git a/doc/Classdiagramm/pm3-dcd.png b/doc/Classdiagramm/pm3-dcd.png deleted file mode 100644 index a94ebe3..0000000 Binary files a/doc/Classdiagramm/pm3-dcd.png and /dev/null differ diff --git a/doc/Classdiagramm/pm3-dcd.uxf b/doc/Classdiagramm/pm3-dcd.uxf deleted file mode 100644 index 5d662bd..0000000 --- a/doc/Classdiagramm/pm3-dcd.uxf +++ /dev/null @@ -1,144 +0,0 @@ -10UMLClass48236010030MainUMLClass1082380370100<<Interface>> -PlantDatabase --- -+ getPlantList(zone: HardinessZone): List<Plant> -+ getPlantById(zone: HardinessZone id: long): Optional<Plant>UMLClass67271022040TaskListControllerUMLClass1132110300180<<Record>> -Plant --- -+ id: long -+ name: String -+ description: String -+ spacing: int -+ lifecycle: List<GrowthPhase> --- -+ calculateStartDate(harvestDate: Date): Date -+ generateTasks() -UMLClass942710210120TaskListModel --- -- tasks: ListProperty<Task> -- taskDb: TaskDatabase --- -+ getTask(id: long): Optional<Task> -+ saveTask(task: Task) -+ removeTask(task: Task)UMLClass322690250120GardenPlanModel --- -- tasks: ListProperty<Crop> -- gardenPlan: GardenPlan --- -+ plantAsCrop(planting: UserPlanting) -+ removePlanting(planting: UserPlanting)UMLClass7268018080GardenPlanControllerUMLClass1362830490240Task --- -+ id: long -+ name: String {readOnly} -+ description: String {readOnly} -+ startDate: Date {readOnly} -+ isOptional: boolean {readOnly} -- interval: int -- endDate: Date --- -+ Task(name: String, description: String, startDate: String, isReadOnly: boolean): Task -+ withInterval(interval: int): Task -+ withEndDate(endDate: Date): Task -+ withId(id: long): Task --- -+ getInterval(): Optional<int> -+ getEndDate(): Optional<Date>UMLClass902930280140<<Interface>> -TaskDatabase --- -+ getTaskList(start: Date, end: Date): List<Task> -+ saveTask(Task task) throws ??Exception -+ removeTask(Task task) throws ??ExceptionUMLClass44244017080MainWindowControllerUMLClass962131021070NotificationService --- -- taskDb: TaskDatabase --- -+ tick()UMLClass1412131024090<<Interface>> -WeatherProvider --- -+ getWeatherForecast: WeatherForecastUMLClass13921150400100WeatherService --- -- weatherPovider: WeatherProvider -- taskDb: TaskDatabase --- -+ WeatherService(provider: WeatherProvider, taskDb: TaskDatabase) -- updateTasks()UMLClass1502110260150<<Record>> -GrowthPhase --- -+ startDate: MonthDay -+ endDate: MonthDay -+ type: GrowthPhaseType - -Relation142218010040lt=<->>>>> -m1=* -m2=180;10;10;10Text15213019070Note: --- -{final, readOnly} omitted on public data fields in <<Record>> Entities for clarity -style=wordwrapRelation117297021050lt=<. -m1=* -m2=1 -returns >190;20;10;20Relation1032820140130lt=<- -m1=1 external database -m2=1 internal list -accesses10;110;10;10UMLClass3221120240150Crop --- -- cropId: Long -+ plantId: long {final, readOnly} -+ startDate: LocalDate {final, readOnly} -+ area: Double --- -+ withId(long): Crop -+ withArea(double): Crop --- -+ getCropId(): Optional<Long>Relation126228070120lt=<. -m1=* -m2=1 -returns10;10;10;100UMLClass1632290130100<<Enumeration>> -GrowthPhaseType --- -SOW -PLANT -HARVESTRelation158225070120lt=<->>>> -m1=1 -m2=*50;90;10;90;10;10Relation8827208030lt=<->>>>60;10;10;10Relation4321020110120lt=<. -m1=* -m2=1 -returns / saves10;100;10;10Relation24271010030lt=<->>>>80;10;10;10UMLClass302890280140<<Interface>> -GardenPlan --- -+ getPlantings(): List<UserPlanting> -+ addPlanting(plantId: long, startDate) -+ savePlanting(planting: UserPlanting) -Relation42280080110lt=<. -m1=1 -m2=1 -accesses10;90;10;10Relation152212403090lt=<.10;70;10;10Relation1062106080270lt=<- -m1=1 -m2=1 -accesses10;10;10;250Relation11421060270170lt=<- -m1=1 -m2=1 -adds Tasks10;10;10;140;250;140UMLClass822114020050JsonTaskDatabaseRelation912106030100lt=<<-10;10;10;80UMLClass156243020050JsonPlantDatabaseRelation144244014030lt=<<-10;10;120;10UMLClass3293020050JsonGardenPlanRelation22294010030lt=<<-80;10;10;10Relation582510220220lt=<.200;200;10;10Relation172510340190lt=<.10;170;320;10UMLClass58225016060PlantListControllerRelation5223803080lt=<.10;60;10;10Relation60230080210lt=<.60;10;10;190UMLClass73239016060PlantListModelRelation73228090130lt=<.70;110;10;10Relation88240022070lt=<- -m1=1\nexternal\ndatabase -m2=1\ninternal\nlist -accesses >200;20;10;20Relation582019050lt=- -m1=0..n -m2=0..1 -teaches to >10;20;170;20UMLClass1412530420200TaskTemplate --- -+ name: String {readOnly} -+ description: String {readOnly} -+ relativeStartDate: int {readOnly} -- interval: Integer -- relativeEndDate: Integer -- isOptional: boolean --- -+ Task(name: String, description: String, startDate: String): TaskTemplate -+ setRelativeEndDate(relativeEndDate: int) -+ setInterval(interval: Integer) -+ generateTask(realStartDate: LocalDate): Task -Relation1752180130490lt=<->>>>> -m1=* -m2=180;460;110;460;110;10;10;10Relation160272090130lt=<. -m1=* -m2=1 -generates10;110;10;10Relation56277040040lt=<- -delegates generating Tasks380;20;10;20 \ No newline at end of file diff --git a/doc/Datenbankmodell/plant_db-erm.uxf b/doc/Datenbankmodell/plant_db-erm.uxf deleted file mode 100644 index 9983ebf..0000000 --- a/doc/Datenbankmodell/plant_db-erm.uxf +++ /dev/null @@ -1,11 +0,0 @@ -10UMLClass45018016060Plant -valign=centerUMLClass90014016060HardinessZone -valign=centerUMLClass29045016060Lifecycle -valign=centerUMLUseCase3201209040_plant_id_UMLUseCase1404109040_lc_id_UMLUseCase1090709040_zone_id_UMLUseCase430807040nameUMLUseCase5206010040descriptionUMLUseCase28019010040spacingUMLUseCase111015010040nameUMLUseCase24036010040sow_startUMLUseCase36036010040sow_endUMLUseCase49047010040plant_startUMLUseCase46054010040plant_endUMLUseCase36058010040harvest_startUMLUseCase22057010040harvest_endRelation37020010030lt=-10;10;80;10Relation3901308070lt=-13;18;60;50UMLUseCase31011011060layer=0UMLUseCase10806011060layer=0UMLUseCase13040011060layer=0Relation46010060100lt=-13;18;40;80Relation5608040120lt=-13;18;10;100Relation10509010070lt=-73;18;10;50Relation10501509040lt=-63;18;10;20Relation21043011060lt=-83;38;10;10Relation3003907080lt=-43;58;10;10Relation3803904080lt=-13;58;20;10Relation4404607050lt=-13;18;50;30Relation4404806080lt=-13;18;40;60Relation38049040110lt=-13;18;20;90Relation27049090100lt=-63;18;10;80UMLSpecialState72034022090PlantLifecycle -type=decisionRelation88029018090lt=-160;10;10;70UMLUseCase10402809040zone_idUMLUseCase10403309040plant_idUMLUseCase10404009040lc_idUMLUseCase1020270130110layer=0Relation92034014060lt=-120;10;10;40Relation90039016050lt=-140;30;10;10Relation44039034090lt=- -m1=m -m2=m10;60;320;10Relation590230220140lt=- -m1= 1 -m2=m10;10;200;120Relation850190140180lt=- -m1=1 -m2=m120;10;10;160 \ No newline at end of file diff --git a/doc/Dömanenmodell/Diagram 2022-10-17 09-22-54.uxf b/doc/Dömanenmodell/Diagram 2022-10-17 09-22-54.uxf deleted file mode 100644 index b662132..0000000 --- a/doc/Dömanenmodell/Diagram 2022-10-17 09-22-54.uxf +++ /dev/null @@ -1,70 +0,0 @@ -12UMLClass85237212072Gardener --- -Name -TypeUMLClass144372120120Plant --- -name -descriptionUMLClass60037212084Garden --- -Location -hardiness zoneUMLClass38437212072Bed --- -AreaUMLClass115262412036WeatherUMLClass85281612036CalendarUMLClass8529614472Community --- -Plant Information -UMLClass28863612072Growth phase --- -durationUMLClass85262412084Gardening task --- -start date -end date -intervalRelation852156120240lt=- -m1=0..* -m2=1..* -< is part of 10;180;10;10Relation70837216860lt=- -m1=1 -m2=1..* -< has 120;20;10;20Relation25237215660lt=- -m1=1 -m2=0..* -< contains 110;20;10;20Relation252444156216lt=- -m1=1 -m2=1..* -has >10;10;80;10;80;160Relation49237213260lt=- -m1=1 -m2=1..* -< contains 90;20;10;20Relation900432120216lt=- -m1=1 -m2=1..* -< manages 10;10;10;160Relation96062421660lt=- -m1=1 -m2=1..* -< manipulates160;20;10;20Relation900696108144lt=- -m1=1 -m2=0..* -< contains10;10;10;100Relation960408468468lt=- -m1=1 -m2=1 -< informs 10;360;310;360;310;10;10;10UMLClass1263612084Need --- -start date -end dateRelation60432108228lt=- -m1=1..* -m2=1..* -has >10;170;10;10;70;10Relation60672816120lt=- -m1=1 -m2=1 -requires >660;10;520;10;520;80;10;80;10;40UMLClass45658812036Team -Relation564432312180lt=- -m1=1 -m2=1..* -contains of >10;130;240;10Relation56460031260lt=- -m1=1 -m2=0..* -manages >10;20;240;20Relation960156216240lt=- -m1=0..n -m2=1..n -exchanges Informatione >10;10;10;180Relation12064819260lt=- -m1=0..n -m2=1 -< contains 10;20;140;20 \ No newline at end of file diff --git a/doc/Dömanenmodell/Diagram 2022-10-17 09-22-57.png b/doc/Dömanenmodell/Diagram 2022-10-17 09-22-57.png deleted file mode 100644 index ee0237e..0000000 Binary files a/doc/Dömanenmodell/Diagram 2022-10-17 09-22-57.png and /dev/null differ diff --git a/doc/PM3-HS22-IT21b_WIN-Technischer_Bericht_II-Team1.pdf b/doc/PM3-HS22-IT21b_WIN-Technischer_Bericht_II-Team1.pdf new file mode 100644 index 0000000..03eb07e Binary files /dev/null and b/doc/PM3-HS22-IT21b_WIN-Technischer_Bericht_II-Team1.pdf differ