implemented Method getFilteredPlantListByString in PlantListModel
This commit is contained in:
parent
b6b5138e9f
commit
3e586093ba
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue