#27 gardenplanmodel fully implemented
This commit is contained in:
parent
0987b42086
commit
9e14920fbb
|
@ -2,105 +2,89 @@ package ch.zhaw.gartenverwaltung.gardenplan;
|
||||||
|
|
||||||
import ch.zhaw.gartenverwaltung.io.GardenPlan;
|
import ch.zhaw.gartenverwaltung.io.GardenPlan;
|
||||||
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
|
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
|
||||||
|
import ch.zhaw.gartenverwaltung.io.JsonGardenPlan;
|
||||||
import ch.zhaw.gartenverwaltung.io.TaskDatabase;
|
import ch.zhaw.gartenverwaltung.io.TaskDatabase;
|
||||||
import ch.zhaw.gartenverwaltung.io.PlantDatabase;
|
import ch.zhaw.gartenverwaltung.taskList.PlantNotFoundException;
|
||||||
import ch.zhaw.gartenverwaltung.types.*;
|
import ch.zhaw.gartenverwaltung.taskList.TaskListModel;
|
||||||
|
import ch.zhaw.gartenverwaltung.types.Crop;
|
||||||
|
import ch.zhaw.gartenverwaltung.types.Plant;
|
||||||
|
import ch.zhaw.gartenverwaltung.types.Task;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.time.LocalDate;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Gardenplan model manages the crops in the gardenplan.
|
||||||
|
*/
|
||||||
public class Gardenplanmodel {
|
public class Gardenplanmodel {
|
||||||
private GardenPlan gardenplan;
|
private GardenPlan gardenPlan;
|
||||||
private TaskDatabase taskDatabase;
|
private List<Crop> cropList;
|
||||||
private PlantDatabase plantDatabase;
|
private TaskListModel taskListModel;
|
||||||
// private TaskListmodel;
|
|
||||||
private List<Crop> cropList = Collections.emptyList();
|
|
||||||
|
|
||||||
public Gardenplanmodel() {
|
/**
|
||||||
try {
|
* Constructor of Gardenplan model
|
||||||
cropList = gardenplan.getCrops();
|
*
|
||||||
} catch (IOException ioException){
|
* @param taskListModel holds a reference to the task list object.
|
||||||
System.err.println("The task can not be created!");
|
*/
|
||||||
|
public Gardenplanmodel(TaskListModel taskListModel) throws IOException {
|
||||||
|
this.taskListModel = taskListModel;
|
||||||
|
gardenPlan = new JsonGardenPlan();
|
||||||
|
cropList = gardenPlan.getCrops();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* Creates a Crop with a {@link Plant} and the planting date of the plant. Then let the Tasklistmodel create the
|
||||||
|
* gardening {@link Task} for the crop. Store the crop in the gardenplan file and the cache.
|
||||||
|
*
|
||||||
|
* @param plant The plant which is wnated to be planted
|
||||||
|
* @param plantingDate The date, when the plant is planted
|
||||||
|
* @throws IOException If the database cannot be accessed
|
||||||
|
* @throws HardinessZoneNotSetException If the hardinesszone could not be added
|
||||||
|
* @throws PlantNotFoundException If the plant is not found in the database.
|
||||||
|
*/
|
||||||
|
public void plantAsCrop(Plant plant, LocalDate plantingDate) throws IOException, HardinessZoneNotSetException, PlantNotFoundException {
|
||||||
|
Crop crop = new Crop(plant.id(),plantingDate);
|
||||||
|
//TODO Add Area to Plant
|
||||||
|
crop.withArea(0);
|
||||||
|
|
||||||
public void plantCrop(Crop crop){
|
|
||||||
cropList.add(crop);
|
cropList.add(crop);
|
||||||
|
gardenPlan.saveCrop(crop);
|
||||||
try {
|
taskListModel.planTasksForCrop(crop);
|
||||||
gardenplan.saveCrop(crop);
|
|
||||||
createGardeningTasks(crop);
|
|
||||||
} catch (IOException ioException){
|
|
||||||
System.err.println("The task can not be created!");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* Removes a {@link Crop} from the file and the cache
|
||||||
|
*
|
||||||
|
* @param crop The plant which is wnated to be planted
|
||||||
|
* @throws IOException If the database cannot be accessed
|
||||||
|
*/
|
||||||
|
public void removeCrop(Crop crop) throws IOException {
|
||||||
|
|
||||||
public void removeCrop(Crop crop){
|
|
||||||
cropList.remove(crop);
|
cropList.remove(crop);
|
||||||
try {
|
gardenPlan.removeCrop(crop);
|
||||||
gardenplan.removeCrop(crop);
|
taskListModel.removeTasksForCrop(crop);
|
||||||
//TaskListModel.removeTasksForCrop(crop)
|
|
||||||
} catch (IOException ioException){
|
|
||||||
System.err.println("The task can not be created!");
|
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
}
|
* Returns a list of {@link Crop}s which are currently in the gardenplan.
|
||||||
|
*
|
||||||
public List<Crop> getCrops(){
|
* @throws IOException If the database cannot be accessed
|
||||||
|
*/
|
||||||
|
public List<Crop> getCrops() throws IOException {
|
||||||
if(cropList.isEmpty()){
|
if(cropList.isEmpty()){
|
||||||
try {
|
cropList = gardenPlan.getCrops();
|
||||||
cropList = gardenplan.getCrops();
|
|
||||||
} catch (IOException ioException){
|
|
||||||
System.err.println("Crops could not be loaded");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return cropList;
|
return cropList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<Crop> getCrop(Long id){
|
/**
|
||||||
try {
|
* Returns an Optional of {@link Crop} if the crop is the gardenplan
|
||||||
return gardenplan.getCropById(id);
|
*
|
||||||
|
* @param cropId The date, when the plant is planted
|
||||||
} catch (IOException ioException){
|
* @throws IOException If the database cannot be accessed
|
||||||
System.err.println("The task can not be created!");
|
*/
|
||||||
}
|
public Optional<Crop> getCrop(Long cropId) throws IOException {
|
||||||
return null;
|
return gardenPlan.getCropById(cropId);
|
||||||
}
|
|
||||||
|
|
||||||
private void createGardeningTasks(Crop crop) throws IOException, HardinessZoneNotSetException {
|
|
||||||
//TaskListModel.generateTasksForCrop(crop)
|
|
||||||
long plantId = crop.getPlantId();
|
|
||||||
Optional plant;
|
|
||||||
Task task;
|
|
||||||
|
|
||||||
Plant plantL = plant;
|
|
||||||
|
|
||||||
|
|
||||||
plant = plantDatabase.getPlantById(HardinessZone.ZONE_8A, plantId);
|
|
||||||
|
|
||||||
if(plant.isPresent()){
|
|
||||||
List<GrowthPhase> growthPhases = plantL.lifecycleForGroup(0);
|
|
||||||
GrowthPhase growthPhase = growthPhases.get(0);
|
|
||||||
List<TaskTemplate> taskTemplatesForLyfecycle= growthPhase.taskTemplates();
|
|
||||||
|
|
||||||
task = taskTemplatesForLyfecycle.get(0).generateTask(crop.getStartDate());
|
|
||||||
taskDatabase.saveTask(task);
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//TODO need to get the plants templates, or through the Growphase
|
|
||||||
// plant.getPlantTemplates
|
|
||||||
// CreateTaskWithTasktemplate
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue