Compare commits
No commits in common. "f452b73233b47652879496b9daae9ccfe079ce04" and "691d2a63458886096dfad304fb7e392f1aeabae1" have entirely different histories.
f452b73233
...
691d2a6345
|
@ -27,6 +27,3 @@ These branches are for bugfixes.
|
||||||
|
|
||||||
These branches are for javadoc and project documentation (such as the readme, class diagrams etc.).
|
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.
|
|
||||||
|
|
|
@ -3,12 +3,10 @@ package ch.zhaw.gartenverwaltung.plantList;
|
||||||
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
|
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
|
||||||
import ch.zhaw.gartenverwaltung.io.JsonPlantDatabase;
|
import ch.zhaw.gartenverwaltung.io.JsonPlantDatabase;
|
||||||
import ch.zhaw.gartenverwaltung.io.PlantDatabase;
|
import ch.zhaw.gartenverwaltung.io.PlantDatabase;
|
||||||
import ch.zhaw.gartenverwaltung.types.GrowthPhaseType;
|
|
||||||
import ch.zhaw.gartenverwaltung.types.HardinessZone;
|
import ch.zhaw.gartenverwaltung.types.HardinessZone;
|
||||||
import ch.zhaw.gartenverwaltung.types.Plant;
|
import ch.zhaw.gartenverwaltung.types.Plant;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.MonthDay;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -22,8 +20,8 @@ public class PlantListModel {
|
||||||
/**
|
/**
|
||||||
* Comparators to create sorted Plant List
|
* Comparators to create sorted Plant List
|
||||||
*/
|
*/
|
||||||
static final Comparator<Plant> sortByName = Comparator.comparing(Plant::name);
|
static final Comparator<Plant> sortByName = (Plant o1, Plant o2) -> o1.name().compareTo(o2.name());
|
||||||
static final Comparator<Plant> SortById = Comparator.comparingLong(Plant::id);
|
static final Comparator<Plant> SortById = (Plant o1, Plant o2) -> Long.compare(o1.id(), o2.id());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor to create Database Object.
|
* Constructor to create Database Object.
|
||||||
|
@ -100,64 +98,4 @@ public class PlantListModel {
|
||||||
plantDatabase.getPlantById(zone, id).ifPresent(plantList::add);
|
plantDatabase.getPlantById(zone, id).ifPresent(plantList::add);
|
||||||
return plantList;
|
return plantList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param zone selected hardiness zone
|
|
||||||
* @param searchString the string to search plant List, set '#' as first char the search by id.
|
|
||||||
* @return List of plants found in Plant List which contain the search String in the name or description
|
|
||||||
* @throws HardinessZoneNotSetException If no {@link HardinessZone} was specified
|
|
||||||
* @throws IOException If the database cannot be accessed
|
|
||||||
*/
|
|
||||||
public List<Plant> getFilteredPlantListByString(HardinessZone zone, String searchString) throws HardinessZoneNotSetException, IOException {
|
|
||||||
if(searchString.charAt(0) == '#') {
|
|
||||||
try {
|
|
||||||
return getFilteredPlantListById(zone, Long.parseLong(searchString.substring(1)));
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return getFilteredPlantList(zone, plant -> plant.name().contains(searchString) || plant.description().contains(searchString));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param type GrowPhaseType to filter
|
|
||||||
* @param zone selected hardiness zone
|
|
||||||
* @param from the earliest date to for the filter
|
|
||||||
* @param to the lastest date for the filter
|
|
||||||
* @return List of Plants with selected saison
|
|
||||||
* @throws HardinessZoneNotSetException If no {@link HardinessZone} was specified
|
|
||||||
* @throws IOException If the database cannot be accessed
|
|
||||||
*/
|
|
||||||
private List<Plant> getFilteredPlantListBySaison(GrowthPhaseType type, HardinessZone zone, MonthDay from, MonthDay to) throws HardinessZoneNotSetException, IOException {
|
|
||||||
return getFilteredPlantList(zone, plant -> plant.lifecycle().stream().anyMatch(growthPhase -> growthPhase.startDate().compareTo(from) >= 0 && (growthPhase.startDate().compareTo(to) <= 0) && growthPhase.type() == type));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param zone selected hardiness zone
|
|
||||||
* @param from the earliest date to for the filter
|
|
||||||
* @param to the lastest date for the filter
|
|
||||||
* @return List of Plants with selected saison
|
|
||||||
* @throws HardinessZoneNotSetException If no {@link HardinessZone} was specified
|
|
||||||
* @throws IOException If the database cannot be accessed
|
|
||||||
*/
|
|
||||||
public List<Plant> getFilteredPlantListByPlantingSaison(HardinessZone zone, MonthDay from, MonthDay to) throws HardinessZoneNotSetException, IOException {
|
|
||||||
return getFilteredPlantListBySaison(GrowthPhaseType.PLANT, zone, from, to);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param zone selected hardiness zone
|
|
||||||
* @param from the earliest date to for the filter
|
|
||||||
* @param to the lastest date for the filter
|
|
||||||
* @return List of Plants with selected saison
|
|
||||||
* @throws HardinessZoneNotSetException If no {@link HardinessZone} was specified
|
|
||||||
* @throws IOException If the database cannot be accessed
|
|
||||||
*/
|
|
||||||
public List<Plant> getFilteredPlantListByHarvestSaison(HardinessZone zone, MonthDay from, MonthDay to) throws HardinessZoneNotSetException, IOException {
|
|
||||||
return getFilteredPlantListBySaison(GrowthPhaseType.HARVEST, zone, from, to);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,14 +3,14 @@ package ch.zhaw.gartenverwaltung.plantList;
|
||||||
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
|
import ch.zhaw.gartenverwaltung.io.HardinessZoneNotSetException;
|
||||||
import ch.zhaw.gartenverwaltung.io.JsonPlantDatabase;
|
import ch.zhaw.gartenverwaltung.io.JsonPlantDatabase;
|
||||||
import ch.zhaw.gartenverwaltung.io.PlantDatabase;
|
import ch.zhaw.gartenverwaltung.io.PlantDatabase;
|
||||||
import ch.zhaw.gartenverwaltung.types.*;
|
import ch.zhaw.gartenverwaltung.types.HardinessZone;
|
||||||
|
import ch.zhaw.gartenverwaltung.types.Plant;
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.MonthDay;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -48,11 +48,7 @@ class PlantListModelTest {
|
||||||
0,
|
0,
|
||||||
"sandy to loamy, loose soil, free of stones",
|
"sandy to loamy, loose soil, free of stones",
|
||||||
new ArrayList<>(),
|
new ArrayList<>(),
|
||||||
List.of(new GrowthPhase(MonthDay.of(6, 4), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.HARVEST, HardinessZone.ZONE_8A, new ArrayList<>()),
|
new ArrayList<>())
|
||||||
new GrowthPhase(MonthDay.of(4, 3), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>()),
|
|
||||||
new GrowthPhase(MonthDay.of(8, 5), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>()),
|
|
||||||
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<>())))
|
|
||||||
);
|
);
|
||||||
examplePlantList.add(new Plant(
|
examplePlantList.add(new Plant(
|
||||||
0,
|
0,
|
||||||
|
@ -63,8 +59,7 @@ class PlantListModelTest {
|
||||||
6,
|
6,
|
||||||
"sandy",
|
"sandy",
|
||||||
new ArrayList<>(),
|
new ArrayList<>(),
|
||||||
List.of(new GrowthPhase(MonthDay.of(6, 4), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.HARVEST, HardinessZone.ZONE_8A, new ArrayList<>()),
|
new ArrayList<>())
|
||||||
new GrowthPhase(MonthDay.of(6, 4), MonthDay.of(12, 4), 0, new WateringCycle(0, 0, null), GrowthPhaseType.PLANT, HardinessZone.ZONE_8A, new ArrayList<>())))
|
|
||||||
);
|
);
|
||||||
examplePlantList.add(new Plant(
|
examplePlantList.add(new Plant(
|
||||||
1,
|
1,
|
||||||
|
@ -75,7 +70,7 @@ class PlantListModelTest {
|
||||||
0,
|
0,
|
||||||
"sandy to loamy, loose soil, free of stones",
|
"sandy to loamy, loose soil, free of stones",
|
||||||
new ArrayList<>(),
|
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<>())))
|
new ArrayList<>())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,44 +149,4 @@ class PlantListModelTest {
|
||||||
assertEquals(1, plantListResult.size());
|
assertEquals(1, plantListResult.size());
|
||||||
assertEquals(examplePlantList.get(0), plantListResult.get(0));
|
assertEquals(examplePlantList.get(0), plantListResult.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void getFilteredPlantListByString() throws HardinessZoneNotSetException, IOException {
|
|
||||||
model.setCurrentZone(HardinessZone.ZONE_1A);
|
|
||||||
List<Plant> plantListResult = model.getFilteredPlantListByString(HardinessZone.ZONE_8A, "#2");
|
|
||||||
assertEquals(0, plantListResult.size());
|
|
||||||
plantListResult = model.getFilteredPlantListByString(HardinessZone.ZONE_8A, "#20");
|
|
||||||
assertEquals(1, plantListResult.size());
|
|
||||||
assertEquals(examplePlantList.get(0), plantListResult.get(0));
|
|
||||||
plantListResult = model.getFilteredPlantListByString(HardinessZone.ZONE_8A, "#a2");
|
|
||||||
assertEquals(0, plantListResult.size());
|
|
||||||
plantListResult = model.getFilteredPlantListByString(HardinessZone.ZONE_8A, "onion");
|
|
||||||
assertEquals(1, plantListResult.size());
|
|
||||||
assertEquals(examplePlantList.get(0), plantListResult.get(0));
|
|
||||||
plantListResult = model.getFilteredPlantListByString(HardinessZone.ZONE_8A, "white roots");
|
|
||||||
assertEquals(1, plantListResult.size());
|
|
||||||
assertEquals(examplePlantList.get(1), plantListResult.get(0));
|
|
||||||
plantListResult = model.getFilteredPlantListByString(HardinessZone.ZONE_8A, "apple");
|
|
||||||
assertEquals(0, plantListResult.size());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void getFilteredPlantListByPlantingSaison() throws HardinessZoneNotSetException, IOException {
|
|
||||||
model.setCurrentZone(HardinessZone.ZONE_1A);
|
|
||||||
List<Plant> plantListResult = model.getFilteredPlantListByPlantingSaison(HardinessZone.ZONE_8A, MonthDay.of(4, 4), MonthDay.of(8, 4));
|
|
||||||
assertEquals(2, plantListResult.size());
|
|
||||||
assertEquals(examplePlantList.get(2), plantListResult.get(0));
|
|
||||||
assertEquals(examplePlantList.get(1), plantListResult.get(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void getFilteredPlantListByHarvestSaison() throws HardinessZoneNotSetException, IOException {
|
|
||||||
model.setCurrentZone(HardinessZone.ZONE_1A);
|
|
||||||
List<Plant> plantListResult = model.getFilteredPlantListByHarvestSaison(HardinessZone.ZONE_8A, MonthDay.of(4, 4), MonthDay.of(8, 4));
|
|
||||||
assertEquals(2, plantListResult.size());
|
|
||||||
assertEquals(examplePlantList.get(1), plantListResult.get(0));
|
|
||||||
assertEquals(examplePlantList.get(0), plantListResult.get(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue