From 7a7ce8a604101443dfc5517e2174b0e8b9f58c96 Mon Sep 17 00:00:00 2001 From: Stefan Schroeder <4sschroeder@gmail.com> Date: Mon, 3 Nov 2014 20:54:53 +0100 Subject: [PATCH] add json-writer and constants --- .../jsprit/core/problem/io/JsonConstants.java | 45 +++++++++++ .../jsprit/core/problem/io/VrpJsonWriter.java | 74 +++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java create mode 100644 jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java b/jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java new file mode 100644 index 00000000..2cd36ccd --- /dev/null +++ b/jsprit-core/src/main/java/jsprit/core/problem/io/JsonConstants.java @@ -0,0 +1,45 @@ +package jsprit.core.problem.io; + +/** + * Created by stefan on 03.11.14. + */ +public class JsonConstants { + + public static class Address { + + public static String ID = "id"; + + public static String LON = "lon"; + + public static String LAT = "lat"; + + } + + public static class TimeWindow { + + public static final String START = "start"; + + public static final String END = "end"; + } + + public static String JOB = "job"; + + public static class Job { + + public static final String SIZE = "size"; + + public static final String ADDRESS = "address"; + + public static final String ID = "id"; + + + public static final String SERVICE_DURATION = "service_duration"; + + public static final String NAME = "name"; + + public static final String SKILLS = "required_skills"; + + public static final String TIME_WINDOW = "time_window"; + + } +} diff --git a/jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java new file mode 100644 index 00000000..2be0e3c7 --- /dev/null +++ b/jsprit-core/src/main/java/jsprit/core/problem/io/VrpJsonWriter.java @@ -0,0 +1,74 @@ +package jsprit.core.problem.io; + +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; +import jsprit.core.problem.job.Service; +import jsprit.core.problem.solution.route.activity.TimeWindow; +import jsprit.core.util.Coordinate; + +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * Created by stefan on 03.11.14. + */ +public class VrpJsonWriter { + + private Service service; + + public VrpJsonWriter(Service service) { + this.service = service; + } + + public void write(String filename){ + try { + JsonGenerator jsonGenerator = new JsonFactory().createGenerator(new FileOutputStream(filename)); + jsonGenerator.setPrettyPrinter(new DefaultPrettyPrinter()); + jsonGenerator.writeStartObject(); + jsonGenerator.writeStringField(JsonConstants.Job.ID,service.getId()); + jsonGenerator.writeStringField(JsonConstants.Job.NAME,service.getName()); + jsonGenerator.writeObjectFieldStart(JsonConstants.Job.ADDRESS); + jsonGenerator.writeStringField(JsonConstants.Address.ID, service.getLocationId()); + jsonGenerator.writeNumberField(JsonConstants.Address.LON, service.getCoord().getX()); + jsonGenerator.writeNumberField(JsonConstants.Address.LAT,service.getCoord().getY()); + jsonGenerator.writeEndObject(); + jsonGenerator.writeNumberField(JsonConstants.Job.SERVICE_DURATION, service.getServiceDuration()); + + jsonGenerator.writeObjectFieldStart(JsonConstants.Job.TIME_WINDOW); + jsonGenerator.writeNumberField(JsonConstants.TimeWindow.START,service.getTimeWindow().getStart()); + jsonGenerator.writeNumberField(JsonConstants.TimeWindow.END,service.getTimeWindow().getEnd()); + jsonGenerator.writeEndObject(); + + jsonGenerator.writeArrayFieldStart(JsonConstants.Job.SIZE); + for(int i=0;i