Код: Выделить всё
public class SessionFlowModel {
@JsonDeserialize(using = JsonObservableListAdapter.class)
protected ObservableList selectableMatrix; // matrix indicating whether a transition between two exercises is possible or not
protected ObservableList exercises; // the list of exercises for the x-axis and y-axis
@JsonIgnore
protected DynamicSessionCtrl ctrl; // reference to the UI controller to inform the UI on necessary updates
// getter and setter here
}
Код: Выделить всё
public void saveFlow(File file, SessionFlowModel flowModel) {
try {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.writeValue(file, flowModel);
} catch (Exception e) {
debugLogger.fine("Cannot save flowModel to " + file.getAbsolutePath());
e.printStackTrace();
}
}
public void loadFlow(File file, SessionFlowModel flowModel) {
try {
ObjectMapper objectMapper = new ObjectMapper();
SessionFlowModel readModel = objectMapper.readValue(file,SessionFlowModel.class);
flowModel.setExercises(readModel.getExercises());
flowModel.setObservableSelectableMatrix(readModel.getSelectableMatrix());
} catch (Exception e) {
debugLogger.fine("Cannot load flowModel from " + file.getAbsolutePath());
e.printStackTrace();
}
}
Код: Выделить всё
public class JsonObservableListAdapter extends JsonDeserializer {
public JsonObservableListAdapter() {
}
@Override
public ObservableList deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JacksonException {
ObservableList matrix = FXCollections.observableArrayList();
ObjectMapper objectMapper = (ObjectMapper) parser.getCodec();
JsonNode node = objectMapper.readTree(parser);
JsonNode childList = node.get("selectableMatrix");
for (Iterator i = childList.iterator(); i.hasNext();) {
JsonNode childNode = i.next();
}
return matrix;
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -triggered