timeSource = (ITimeSource) Class.forName(timeSourceClass)
.newInstance();
} else {
timeSource = new SystemTimeTimeSource();
}
Simulation simulation = new Simulation(timeSource);
JsonNumber resolution = simulationObject.getJsonNumber("resolution");
simulation.setResolution(resolution != null ? resolution.longValue()
: 1000L);
JsonNumber temperature = simulationObject.getJsonNumber("temperature");
if (temperature != null) {
simulation.getContext().setTemperature(temperature.doubleValue());
}
JsonNumber brightness = simulationObject.getJsonNumber("brightness");
if (brightness != null) {
simulation.getContext().setBrightness(brightness.doubleValue());
}
JsonArray colorArray = simulationObject.getJsonArray("lightColor");
if (colorArray != null && colorArray.size() == 3) {
simulation.getContext().setLightColor(
new int[] { colorArray.getInt(0), colorArray.getInt(1),
colorArray.getInt(2) });
}
JsonArray rooms = simulationObject.getJsonArray("rooms");
if (rooms != null) {
for (JsonObject roomDescription : rooms
.getValuesAs(JsonObject.class)) {
Room room = readRoom(roomDescription);
simulation.addRoom(room);
}
}
JsonObject preferencesObject = simulationObject
.getJsonObject("preferences");
if (preferencesObject != null) {
for (String key : preferencesObject.keySet()) {
simulation.getContext().setPreference(key,
preferencesObject.getString(key));
}
}
return simulation;
}