#36 Added images to Plant database
This commit is contained in:
@@ -1,10 +1,13 @@
|
||||
package ch.zhaw.gartenverwaltung.io;
|
||||
|
||||
import ch.zhaw.gartenverwaltung.json.PlantImageDeserializer;
|
||||
import ch.zhaw.gartenverwaltung.types.HardinessZone;
|
||||
import ch.zhaw.gartenverwaltung.types.Plant;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.module.SimpleModule;
|
||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||
import com.fasterxml.jackson.datatype.jsr310.deser.MonthDayDeserializer;
|
||||
import javafx.scene.image.Image;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
@@ -31,10 +34,14 @@ public class JsonPlantDatabase implements PlantDatabase {
|
||||
* Creating constant objects required to deserialize the {@link MonthDay} classes
|
||||
*/
|
||||
private final static JavaTimeModule timeModule = new JavaTimeModule();
|
||||
private final static SimpleModule imageModule = new SimpleModule();
|
||||
|
||||
static {
|
||||
DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("MM-dd");
|
||||
MonthDayDeserializer dateDeserializer = new MonthDayDeserializer(dateFormat);
|
||||
timeModule.addDeserializer(MonthDay.class, dateDeserializer);
|
||||
|
||||
imageModule.addDeserializer(Image.class, new PlantImageDeserializer());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -75,8 +82,9 @@ public class JsonPlantDatabase implements PlantDatabase {
|
||||
}
|
||||
if (dataSource != null) {
|
||||
currentZone = zone;
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.registerModule(timeModule);
|
||||
ObjectMapper mapper = new ObjectMapper()
|
||||
.registerModule(timeModule)
|
||||
.registerModule(imageModule);
|
||||
|
||||
List<Plant> result;
|
||||
result = mapper.readerForListOf(Plant.class).readValue(dataSource);
|
||||
|
||||
@@ -17,11 +17,12 @@ public class GrowthPhaseTypeDeserializer extends StdDeserializer<GrowthPhaseType
|
||||
@Override
|
||||
public GrowthPhaseType deserialize(JsonParser parser, DeserializationContext context) throws IOException {
|
||||
GrowthPhaseType result = null;
|
||||
String token = parser.getText();
|
||||
try {
|
||||
result = GrowthPhaseType.valueOf(parser.getText().toUpperCase());
|
||||
result = GrowthPhaseType.valueOf(token.toUpperCase());
|
||||
} catch (IllegalArgumentException e) {
|
||||
// TODO: Log
|
||||
System.err.println("bad growth phase type");
|
||||
System.err.printf("Bad growth phase type \"%s\"\n", token);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -18,11 +18,12 @@ public class HardinessZoneDeserializer extends StdDeserializer<HardinessZone> {
|
||||
@Override
|
||||
public HardinessZone deserialize(JsonParser parser, DeserializationContext context) throws IOException {
|
||||
HardinessZone result = null;
|
||||
String token = parser.getText();
|
||||
try {
|
||||
result = HardinessZone.valueOf(parser.getText().toUpperCase());
|
||||
result = HardinessZone.valueOf(token.toUpperCase());
|
||||
} catch (IllegalArgumentException e) {
|
||||
// TODO: Log
|
||||
System.err.println("bad growth phase type");
|
||||
System.err.printf("Unknown Hardiness Zone \"%s\"\n", token);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package ch.zhaw.gartenverwaltung.json;
|
||||
|
||||
import ch.zhaw.gartenverwaltung.io.PlantDatabase;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
import javafx.scene.image.Image;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
|
||||
public class PlantImageDeserializer extends JsonDeserializer<Image> {
|
||||
|
||||
@Override
|
||||
public Image deserialize(JsonParser parser, DeserializationContext context) throws IOException {
|
||||
Image result = null;
|
||||
URL imageUrl = PlantDatabase.class.getResource(String.format("images/%s", parser.getText()));
|
||||
if (imageUrl != null) {
|
||||
try (InputStream is = new FileInputStream(imageUrl.getFile())) {
|
||||
result = new Image(is);
|
||||
} catch (IllegalArgumentException e) {
|
||||
// TODO: Log
|
||||
e.printStackTrace();
|
||||
System.err.printf("Cannot find Image \"%s\"\n", imageUrl.getFile());
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package ch.zhaw.gartenverwaltung.types;
|
||||
|
||||
import javafx.scene.image.Image;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@@ -9,6 +11,7 @@ public record Plant(
|
||||
long id,
|
||||
String name,
|
||||
String description,
|
||||
Image image,
|
||||
String spacing,
|
||||
int light,
|
||||
String soil,
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
Potato, Onion
|
||||
Photos by Lars Blankers: https://unsplash.com/@lmablankers?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
|
||||
|
||||
Carrot
|
||||
Photo by Maja Vujic: https://unsplash.com/@majavujic87?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.4 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
@@ -6,6 +6,7 @@
|
||||
"light": 6,
|
||||
"spacing": "35",
|
||||
"soil": "sandy",
|
||||
"image": "potato.jpg",
|
||||
"pests": [
|
||||
{
|
||||
"name": "Rot",
|
||||
@@ -86,6 +87,7 @@
|
||||
"id": 1,
|
||||
"name": "Early Carrot",
|
||||
"description": "Carrot, (Daucus carota), herbaceous, generally biennial plant of the Apiaceae family that produces an edible taproot. Among common varieties root shapes range from globular to long, with lower ends blunt to pointed. Besides the orange-coloured roots, white-, yellow-, and purple-fleshed varieties are known.",
|
||||
"image": "carrot.jpg",
|
||||
"lifecycle": [
|
||||
{
|
||||
"startDate": "02-20",
|
||||
@@ -167,6 +169,7 @@
|
||||
"id": 2,
|
||||
"name": "Summertime Onion",
|
||||
"description": "Onion, (Allium cepa), herbaceous biennial plant in the amaryllis family (Amaryllidaceae) grown for its edible bulb. The onion is likely native to southwestern Asia but is now grown throughout the world, chiefly in the temperate zones. Onions are low in nutrients but are valued for their flavour and are used widely in cooking. They add flavour to such dishes as stews, roasts, soups, and salads and are also served as a cooked vegetable.",
|
||||
"image": "onion.jpg",
|
||||
"lifecycle": [
|
||||
{
|
||||
"startDate": "03-15",
|
||||
|
||||
Reference in New Issue
Block a user