refactor: Made Task::id nullable/Optional for semantic reasons
better use of builder semantics in task and crop creation
This commit is contained in:
parent
2312149256
commit
95b0f7e13d
|
@ -103,10 +103,9 @@ public class JsonTaskList implements TaskList {
|
|||
if(taskMap.isEmpty()) {
|
||||
loadTaskListFromFile();
|
||||
}
|
||||
if(task.getId() == 0) {
|
||||
task.withId(idProvider.incrementAndGet());
|
||||
}
|
||||
taskMap.put(task.getId(), task);
|
||||
long id = task.getId().orElse(idProvider.incrementAndGet());
|
||||
|
||||
taskMap.put(id, task.withId(id));
|
||||
writeTaskListToFile();
|
||||
}
|
||||
|
||||
|
@ -122,8 +121,9 @@ public class JsonTaskList implements TaskList {
|
|||
if(taskMap.isEmpty()) {
|
||||
loadTaskListFromFile();
|
||||
}
|
||||
if(taskMap.containsKey(task.getId())){
|
||||
taskMap.remove(task.getId());
|
||||
Long taskId = task.getId().orElseThrow(IOException::new);
|
||||
if(taskMap.containsKey(taskId)){
|
||||
taskMap.remove(taskId);
|
||||
writeTaskListToFile();
|
||||
}
|
||||
}
|
||||
|
@ -163,7 +163,7 @@ public class JsonTaskList implements TaskList {
|
|||
|
||||
taskMap = result.stream()
|
||||
.collect(HashMap::new,
|
||||
(res, task) -> res.put(task.getId(), task),
|
||||
(res, task) -> res.put(task.getId().orElse(0L), task),
|
||||
(existing, replacement) -> {});
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ import java.util.Optional;
|
|||
* May be created using the builder pattern.
|
||||
*/
|
||||
public class Task {
|
||||
private long id;
|
||||
private Long id;
|
||||
private final String name;
|
||||
private final String description;
|
||||
private final LocalDate startDate;
|
||||
|
@ -62,7 +62,7 @@ public class Task {
|
|||
}
|
||||
|
||||
// Getters
|
||||
public long getId() { return id; }
|
||||
public Optional<Long> getId() { return Optional.ofNullable(id); }
|
||||
public String getName() { return name; }
|
||||
public String getDescription() { return description; }
|
||||
public LocalDate getStartDate() { return startDate; }
|
||||
|
|
|
@ -34,6 +34,7 @@ public class TaskTemplate {
|
|||
public void setRelativeEndDate(Integer relativeEndDate) {
|
||||
this.relativeEndDate = relativeEndDate;
|
||||
}
|
||||
|
||||
public void setInterval(Integer interval) {
|
||||
this.interval = interval;
|
||||
}
|
||||
|
@ -45,13 +46,10 @@ public class TaskTemplate {
|
|||
}
|
||||
|
||||
public Task generateTask(LocalDate realStartDate, long cropId) {
|
||||
Task task = new Task(name, description, realStartDate.plusDays(relativeStartDate), cropId);
|
||||
if (relativeEndDate != null) {
|
||||
task.withEndDate(realStartDate.plusDays(relativeEndDate));
|
||||
}
|
||||
if (interval != null) {
|
||||
task.withInterval(interval);
|
||||
}
|
||||
return task;
|
||||
LocalDate endDate = relativeEndDate != null ? realStartDate.plusDays(relativeEndDate) : null;
|
||||
|
||||
return new Task(name, description, realStartDate.plusDays(relativeStartDate), cropId)
|
||||
.withInterval(interval)
|
||||
.withEndDate(endDate);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,8 @@ public class JsonTaskListTest {
|
|||
@Test
|
||||
@DisplayName("Remove task.")
|
||||
void removeTask() {
|
||||
Task task = new Task("Dummy", "Dummy", LocalDate.parse("2022-05-31", formatter), 1).withId(2);
|
||||
Task task = new Task("Dummy", "Dummy", LocalDate.parse("2022-05-31", formatter), 1)
|
||||
.withId(2);
|
||||
try {
|
||||
testDatabase.removeTask(task);
|
||||
List<Task> taskList;
|
||||
|
|
|
@ -55,8 +55,8 @@ public class GardenPlanModelTest {
|
|||
new GrowthPhase(MonthDay.of(2, 8), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>()),
|
||||
new GrowthPhase(MonthDay.of(10, 2), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>())));
|
||||
|
||||
exampleCropOnion = new Crop(examplePlantOnion.id(), LocalDate.of(2023,3,1));
|
||||
exampleCropOnion.withId(3);
|
||||
exampleCropOnion = new Crop(examplePlantOnion.id(), LocalDate.of(2023, 3, 1))
|
||||
.withId(3);
|
||||
examplePlantCarrot = new Plant(
|
||||
1,
|
||||
"Early Carrot",
|
||||
|
@ -67,18 +67,18 @@ public class GardenPlanModelTest {
|
|||
"sandy to loamy, loose soil, free of stones",
|
||||
new ArrayList<>(),
|
||||
List.of(new GrowthPhase(MonthDay.of(4, 4), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>())));
|
||||
exampleCropCarrot = new Crop(examplePlantCarrot.id(), LocalDate.now());
|
||||
exampleCropCarrot.withId(5);
|
||||
exampleCropCarrot = new Crop(examplePlantCarrot.id(), LocalDate.now())
|
||||
.withId(5);
|
||||
|
||||
exampleCrop1 = new Crop(1, LocalDate.of(2023,2,25));
|
||||
exampleCrop1.withId(0);
|
||||
exampleCrop1.withArea(0.5);
|
||||
exampleCrop2 = new Crop(1,LocalDate.of(2023,3,1));
|
||||
exampleCrop2.withId(1);
|
||||
exampleCrop2.withArea(0.5);
|
||||
exampleCrop3 = new Crop(0,LocalDate.of(2023,3,1));
|
||||
exampleCrop3.withId(2);
|
||||
exampleCrop3.withArea(1.0);
|
||||
exampleCrop1 = new Crop(1, LocalDate.of(2023, 2, 25))
|
||||
.withId(0)
|
||||
.withArea(0.5);
|
||||
exampleCrop2 = new Crop(1, LocalDate.of(2023, 3, 1))
|
||||
.withId(1)
|
||||
.withArea(0.5);
|
||||
exampleCrop3 = new Crop(0, LocalDate.of(2023, 3, 1))
|
||||
.withId(2)
|
||||
.withArea(1.0);
|
||||
|
||||
exampleCrops = new ArrayList<>();
|
||||
exampleCrops.add(exampleCrop1);
|
||||
|
@ -107,7 +107,7 @@ public class GardenPlanModelTest {
|
|||
@Test
|
||||
void plantAsCrop() throws HardinessZoneNotSetException, IOException, PlantNotFoundException {
|
||||
|
||||
model.plantAsCrop(examplePlantOnion, LocalDate.of(2023,3,1));
|
||||
model.plantAsCrop(examplePlantOnion, LocalDate.of(2023, 3, 1));
|
||||
Optional<Crop> exampleCrop = model.getCrop(2L);
|
||||
assertTrue(exampleCrop.isPresent());
|
||||
assertEquals(model.getCrops().get(2), exampleCrop.get());
|
||||
|
@ -119,6 +119,6 @@ public class GardenPlanModelTest {
|
|||
exampleCrop1.withId(2);
|
||||
exampleCrop1.withArea(1.5);
|
||||
model.removeCrop(exampleCrop1);
|
||||
assertEquals(2,model.getCrops().size());
|
||||
assertEquals(2, model.getCrops().size());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue