@SuppressWarnings("null") @Override public Scenario get() { if (localCache == null) { localCache = (Scenario) ScenarioIO.read( serializedScenario, scenarioClass); } return localCache; }
static String toJson(FabriRechtScenario scenario) { return ScenarioIO.write(scenario); }
@Override public Predicate<?> doDeserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { checkArgument(json.isJsonPrimitive()); try { final Predicate<?> obj = (Predicate<?>) deserializeObject(json.getAsString()); return obj; } catch (final IOException e) { throw new IllegalArgumentException(e); } catch (final ClassNotFoundException e) { throw new IllegalArgumentException(e); } }
/** * Tests whether the specified scenario can be correctly written to disk, it * compares the equality of the specified object with a parsed object and it * compares the equality of the serialized string. * @param input The scenario to test with IO. */ public static void assertScenarioIO(Scenario input) { final String serialized = ScenarioIO.write(input); final Scenario parsed = ScenarioIO.read(serialized); final String serializedAgain = ScenarioIO.write(parsed); System.out.println(serialized); assertThat(input).isEqualTo(parsed); assertThat(serialized).isEqualTo(serializedAgain); }
/** * Tests {@link ScenarioIO#readerAdapter(com.google.common.base.Function)}. * @throws IOException When IO fails. */ @Test public void testReaderAdapter() throws IOException { final Scenario s = Scenario.builder() .addModel(TimeModel.builder().withTickLength(7L)) .build(); final Path tmpDir = Files.createTempDirectory("rinsim-scenario-io-test"); final Path file = Paths.get(tmpDir.toString(), "test.scen"); ScenarioIO.write(s, file); final Scenario out = ScenarioIO.reader().apply(file); final Scenario convertedOut = verifyNotNull(ScenarioIO.readerAdapter(ScenarioConverters.toRealtime()) .apply(file)); assertThat(s).isEqualTo(out); assertThat(s).isNotEqualTo(convertedOut); assertThat(convertedOut.getModelBuilders()) .contains(TimeModel.builder() .withRealTime() .withStartInClockMode(ClockMode.SIMULATED) .withTickLength(7L)); Files.delete(file); Files.delete(tmpDir); }
/** * Allows to adapt the default reader ({@link #reader()}) by converting all * read scenarios. {@link ScenarioConverters} contains functions that can be * used for this. * @param converter A converter that transforms a scenario. * @return A new reader function. */ public static Function<Path, Scenario> readerAdapter( Function<Scenario, Scenario> converter) { return Functions.compose(converter, reader()); }
private static Gson initialize() { final GsonBuilder builder = new GsonBuilder(); builder .registerTypeAdapter(ProblemClass.class, adapt(ProblemClassIO.INSTANCE)) .registerTypeHierarchyAdapter(TimeWindowPolicy.class, adapt(TimeWindowHierarchyIO.INSTANCE)) .registerTypeAdapter(Scenario.class, adapt(ScenarioObjIO.INSTANCE)) .registerTypeAdapter(ParcelDTO.class, adapt(ParcelIO.INSTANCE)) .registerTypeAdapter(VehicleDTO.class, adapt(VehicleIO.INSTANCE)) .registerTypeAdapter(Point.class, new PointIO()) .registerTypeAdapter(TimeWindow.class, new TimeWindowIO()) .registerTypeAdapter(Unit.class, adapt(UnitIO.INSTANCE)) .registerTypeAdapter(Supplier.class, adapt(SupplierIO.INSTANCE)) .registerTypeHierarchyAdapter(Graph.class, adapt(GraphIO.INSTANCE)) .registerTypeAdapter(Measure.class, adapt(MeasureIO.INSTANCE)) .registerTypeHierarchyAdapter(Enum.class, adapt(EnumIO.INSTANCE)) .registerTypeAdapter(StopCondition.class, adapt(StopConditionIO.INSTANCE)) .registerTypeAdapter(Class.class, adapt(ClassIO.INSTANCE)) .registerTypeAdapter(ImmutableList.class, adapt(ImmutableListIO.INSTANCE)) .registerTypeAdapter(ImmutableSet.class, adapt(ImmutableSetIO.INSTANCE)) .registerTypeAdapter(ModelBuilder.class, adapt(ModelBuilderIO.INSTANCE)); return builder.create(); }
/** * Allows to adapt the default reader ({@link #reader()}) by converting all * read scenarios. {@link ScenarioConverters} contains functions that can be * used for this. * @param converter A converter that transforms a scenario. * @return A new reader function. */ public static Function<Path, Scenario> readerAdapter( Function<Scenario, Scenario> converter) { return Functions.compose(converter, reader()); }
private static Gson initialize() { final GsonBuilder builder = new GsonBuilder(); builder .registerTypeAdapter(ProblemClass.class, adapt(ProblemClassIO.INSTANCE)) .registerTypeHierarchyAdapter(TimeWindowPolicy.class, adapt(TimeWindowHierarchyIO.INSTANCE)) .registerTypeAdapter(Scenario.class, adapt(ScenarioObjIO.INSTANCE)) .registerTypeAdapter(ParcelDTO.class, adapt(ParcelIO.INSTANCE)) .registerTypeAdapter(VehicleDTO.class, adapt(VehicleIO.INSTANCE)) .registerTypeAdapter(Point.class, new PointIO()) .registerTypeAdapter(TimeWindow.class, new TimeWindowIO()) .registerTypeAdapter(Unit.class, adapt(UnitIO.INSTANCE)) .registerTypeAdapter(Supplier.class, adapt(SupplierIO.INSTANCE)) .registerTypeHierarchyAdapter(Graph.class, adapt(GraphIO.INSTANCE)) .registerTypeAdapter(Measure.class, adapt(MeasureIO.INSTANCE)) .registerTypeHierarchyAdapter(Enum.class, adapt(EnumIO.INSTANCE)) .registerTypeAdapter(StopCondition.class, adapt(StopConditionIO.INSTANCE)) .registerTypeAdapter(Class.class, adapt(ClassIO.INSTANCE)) .registerTypeAdapter(ImmutableList.class, adapt(ImmutableListIO.INSTANCE)) .registerTypeAdapter(ImmutableSet.class, adapt(ImmutableSetIO.INSTANCE)) .registerTypeAdapter(ModelBuilder.class, adapt(ModelBuilderIO.INSTANCE)); return builder.create(); }
/** * Convert the specified JSON string to a {@link FabriRechtScenario}. * @param json The JSON string to parse. * @return A new instance of [@link {@link FabriRechtScenario}. */ public static FabriRechtScenario fromJson(String json) { return ScenarioIO.read(json, AutoValue_FabriRechtScenario.class); }
/** * Write the scenario to disk in JSON format. * @param scenario The scenario to write. * @param writer The writer to use. * @throws IOException When writing fails. */ public static void toJson(FabriRechtScenario scenario, Writer writer) throws IOException { final String s = ScenarioIO.write(scenario); writer.append(s); writer.close(); }
Builder() { configurationsSet = newLinkedHashSet(); scenariosBuilder = ImmutableSet.builder(); scenarioProviderBuilder = Optional.absent(); fileReader = ScenarioIO.reader(); resultListeners = newArrayList(); showGui = false; repetitions = 1; seedRepetitions = 1; masterSeed = 0L; numThreads = Runtime.getRuntime().availableProcessors(); numBatches = 1; compositeTaskSize = 1; computerType = Computers.LOCAL; postProc = PostProcessors.defaultPostProcessor(); experimentOrdering = DEFAULT_EXPERIMENT_ORDERING; }
@Override public Predicate<?> doDeserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) { checkArgument(json.isJsonPrimitive()); try { final Predicate<?> obj = (Predicate<?>) deserializeObject(json.getAsString()); return obj; } catch (final IOException e) { throw new IllegalArgumentException(e); } catch (final ClassNotFoundException e) { throw new IllegalArgumentException(e); } }
/** * Reads a {@link Scenario} from disk. * @param file The file to read from. * @return A {@link Scenario} instance. * @throws IOException When reading fails. */ public static Scenario read(Path file) throws IOException { return read(file, AutoValue_Scenario.class); }
/** * Writes the specified {@link Scenario} to disk in the JSON format. * @param s The scenario. * @param to The file to write to. * @throws IOException In case anything went wrong during writing the * scenario. */ public static void write(Scenario s, Path to) throws IOException { Files.write(to, Splitter.on(System.lineSeparator()).split(write(s)), Charsets.UTF_8); }
Builder() { configurationsSet = newLinkedHashSet(); scenariosBuilder = ImmutableSet.builder(); scenarioProviderBuilder = Optional.absent(); fileReader = ScenarioIO.reader(); resultListeners = newArrayList(); showGui = false; repetitions = 1; seedRepetitions = 1; masterSeed = 0L; numThreads = Runtime.getRuntime().availableProcessors(); numBatches = 1; compositeTaskSize = 1; computerType = Computers.LOCAL; postProc = PostProcessors.defaultPostProcessor(); experimentOrdering = DEFAULT_EXPERIMENT_ORDERING; }
@SuppressWarnings("null") @Override public Scenario get() { if (localCache == null) { localCache = (Scenario) ScenarioIO.read( serializedScenario, scenarioClass); } return localCache; }
/** * Writes the specified {@link Scenario} to disk in the JSON format. * @param s The scenario. * @param to The file to write to. * @throws IOException In case anything went wrong during writing the * scenario. */ public static void write(Scenario s, Path to) throws IOException { Files.write(to, Splitter.on(System.lineSeparator()).split(write(s)), Charsets.UTF_8); }