public AnalysisViewModel(FormStore formStore, String analysisId) {
this.id = analysisId;
this.formStore = formStore;
this.saved = formStore.getAnalysis(analysisId).transform(maybe -> maybe.transform(a -> {
LOGGER.info("Saved pivot model retrieved");
return new TypedAnalysis<PivotModel>(a.getId(), a.getLabel(), a.getParentId(), PivotModel.fromJson(a.getModel()));
}));
this.draftModel = new StatefulValue<>(Optional.absent());
this.draftMetadata = new StatefulValue<>(ImmutableDraftMetadata.builder().build());
this.workingModel = Observable.transform(saved, draftMetadata, draftModel, (savedModel, metadata, model) -> {
LOGGER.info("Loaded working model");
return new WorkingModel<PivotModel>(analysisId, savedModel, metadata, model, PivotViewModel.EMPTY);
});
Observable<PivotModel> pivotModel = workingModel.transform(wm -> {
LOGGER.info("Working pivot model updated");
return wm.getModel();
});
this.pivotViewModel = new PivotViewModel(pivotModel, formStore);
}