implemented Method getFilteredPlantListByString in PlantListModel

This commit is contained in:
schrom01 2022-10-30 09:32:55 +01:00
parent b6b5138e9f
commit 3e586093ba
2 changed files with 37 additions and 2 deletions

View File

@ -20,8 +20,8 @@ public class PlantListModel {
/** /**
* Comparators to create sorted Plant List * Comparators to create sorted Plant List
*/ */
static final Comparator<Plant> sortByName = (Plant o1, Plant o2) -> o1.name().compareTo(o2.name()); static final Comparator<Plant> sortByName = Comparator.comparing(Plant::name);
static final Comparator<Plant> SortById = (Plant o1, Plant o2) -> Long.compare(o1.id(), o2.id()); static final Comparator<Plant> SortById = Comparator.comparingLong(Plant::id);
/** /**
* Constructor to create Database Object. * Constructor to create Database Object.
@ -98,4 +98,19 @@ public class PlantListModel {
plantDatabase.getPlantById(zone, id).ifPresent(plantList::add); plantDatabase.getPlantById(zone, id).ifPresent(plantList::add);
return plantList; return plantList;
} }
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));
}
}
} }

View File

@ -146,4 +146,24 @@ 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());
}
} }