@Override public R getHistoryFactory(String id) { DataAndStoredMetadata<R,S> data = storage.get(id); return data.root.internal().copy(); }
public R getFutureFactory(String id) { DataAndScheduledMetadata<R,S> data = future.get(id); return data.root.internal().copy(); }
@Override public DataAndStoredMetadata<R,S> getCurrentFactory() { DataAndStoredMetadata<R,S> result = storage.get(currentFactoryStorageId); return new DataAndStoredMetadata<>(result.root.internal().copy(),result.metadata); }
public MergeResult(R currentRoot) { this.previousRoot = currentRoot.internal().copy(); this.currentRoot = currentRoot; }
public FactoryUpdateLog<R> updateCurrentFactory(DataAndNewMetadata<R> update, String user, String comment, Function<String,Boolean> permissionChecker) { R commonVersion = dataStorage.getHistoryFactory(update.metadata.baseVersionId); FactoryUpdateLog<R> factoryLog = factoryManager.update(commonVersion,update.root, permissionChecker); if (!factoryLog.failedUpdate()&& factoryLog.successfullyMerged()){ DataAndNewMetadata<R> copy = new DataAndNewMetadata<>(factoryManager.getCurrentFactory().internal().copy(),update.metadata); dataStorage.updateCurrentFactory(copy,user,comment,factoryLog.mergeDiffInfo); } return factoryLog; }
/** copy a root data element * @return root copy */ public R copy(){ return rootFactory.internal().copy(); }
@SuppressWarnings("unchecked") public L create(Data data){ //TODO add generic root to data? R rootFactory= (R) data.internal().getRoot(); final R copy = rootFactory.internal().copy(); return subRootFactoryProvider.apply(copy).internalFactory().create(); }