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