1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

add json-writer and constants

This commit is contained in:
Stefan Schroeder 2014-11-03 20:54:53 +01:00
parent c14534da91
commit 7a7ce8a604
2 changed files with 119 additions and 0 deletions

View file

@ -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";
}
}

View file

@ -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<service.getSize().getNuOfDimensions();i++){
jsonGenerator.writeNumber(service.getSize().get(i));
}
jsonGenerator.writeEndArray();
jsonGenerator.writeArrayFieldStart(JsonConstants.Job.SKILLS);
for(String skill : service.getRequiredSkills().values()){
jsonGenerator.writeString(skill);
}
jsonGenerator.writeEndArray();
jsonGenerator.writeEndObject();
jsonGenerator.flush();
jsonGenerator.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Service service = Service.Builder.newInstance("s1").setLocationId("s1_loc").setCoord(Coordinate.newInstance(40, 10))
.addSizeDimension(0, 20).addSizeDimension(1, 40)
.setServiceTime(100.)
.setTimeWindow(TimeWindow.newInstance(10, 20))
.addRequiredSkill("drilling-machine")
.addRequiredSkill("screw-driver").build();
new VrpJsonWriter(service).write("output/jsonwriter.json");
}
}