@Override public DataAndNewMetadata<R> prepareNewFactory(String currentFactoryStorageId, R currentFactoryCopy){ NewDataMetadata metadata = new NewDataMetadata(); metadata.baseVersionId=currentFactoryStorageId; dataSerialisationManager.prepareNewFactoryMetadata(metadata); return new DataAndNewMetadata<>(currentFactoryCopy,metadata); }
@Override public DataAndNewMetadata<R> prepareNewFactory(String currentFactoryStorageId, R currentFactoryCopy){ NewDataMetadata metadata = new NewDataMetadata(); metadata.baseVersionId=currentFactoryStorageId; return new DataAndNewMetadata<>(currentFactoryCopy,metadata); }
/** * for future data * @param mergeDiffInfo diff * @return change summary */ default S createFutureChangeSummary(MergeDiffInfo<R> mergeDiffInfo){ return createChangeSummary(mergeDiffInfo); } }
@Override public void updateCurrentFactory(DataAndNewMetadata<R> update, String user, String comment, MergeDiffInfo<R> mergeDiff) { S changeSummary = null; if (mergeDiff!=null){ changeSummary=changeSummaryCreator.createChangeSummary(mergeDiff); } final StoredDataMetadata<S> storedDataMetadata = new StoredDataMetadata<>( LocalDateTime.now(), UUID.randomUUID().toString(), user, comment, update.metadata.baseVersionId, update.metadata.dataModelVersion, changeSummary ); final DataAndStoredMetadata<R,S> updateData = new DataAndStoredMetadata<>(update.root, storedDataMetadata); writeFile(currentFactoryPath, dataSerialisationManager.write(updateData.root)); writeFile(currentFactoryPathMetadata, dataSerialisationManager.writeStorageMetadata(updateData.metadata)); fileSystemFactoryStorageHistory.updateHistory(updateData.metadata,updateData.root); }
@Override public DataAndStoredMetadata<R,S> getCurrentFactory() { StoredDataMetadata<S> storedDataMetadata = dataSerialisationManager.readStoredFactoryMetadata(readFile(currentFactoryPathMetadata)); return new DataAndStoredMetadata<>(dataSerialisationManager.read(readFile(currentFactoryPath), storedDataMetadata.dataModelVersion), storedDataMetadata); }
public FactoryUpdateLog<R> revertTo(StoredDataMetadata storedDataMetadata, String user) { R historyFactory = getHistoryFactory(storedDataMetadata.id); DataAndNewMetadata<R> current = prepareNewFactory(); current = new DataAndNewMetadata<>(historyFactory,current.metadata); return updateCurrentFactory(current,user,"revert",s->true); }
@Override public void updateCurrentFactory(DataAndNewMetadata<R> update, String user, String comment, MergeDiffInfo<R> mergeDiff) { final StoredDataMetadata<S> storedDataMetadata = new StoredDataMetadata<>( LocalDateTime.now(), UUID.randomUUID().toString(), user, comment, update.metadata.baseVersionId, update.metadata.dataModelVersion, changeSummaryCreator.createChangeSummary(mergeDiff)); final DataAndStoredMetadata<R,S> updateData = new DataAndStoredMetadata<>(update.root, storedDataMetadata); storage.put(updateData.metadata.id, updateData); currentFactoryStorageId =updateData.metadata.id; }
@Override public ScheduledDataMetadata<S> addFutureFactory(R futureFactory, NewScheduledDataMetadata futureFactoryMetadata, String user, String comment, MergeDiffInfo<R> mergeDiff) { final ScheduledDataMetadata<S> storedFactoryMetadata = new ScheduledDataMetadata<>( LocalDateTime.now(), UUID.randomUUID().toString(), user, comment, futureFactoryMetadata.newDataMetadata.baseVersionId, futureFactoryMetadata.newDataMetadata.dataModelVersion, changeSummaryCreator.createFutureChangeSummary(mergeDiff), futureFactoryMetadata.scheduled ); final DataAndScheduledMetadata<R,S> updateData = new DataAndScheduledMetadata<>(futureFactory, storedFactoryMetadata); future.put(updateData.metadata.id, updateData); return storedFactoryMetadata; }
public R getHistoryFactory(String id) { return dataStorage.getHistoryFactory(id); }
public Collection<StoredDataMetadata<S>> getHistoryFactoryList() { return dataStorage.getHistoryFactoryList(); }
@Override public String getCurrentFactoryStorageId() { StoredDataMetadata<S> storedDataMetadata = dataSerialisationManager.readStoredFactoryMetadata(readFile(currentFactoryPathMetadata)); return storedDataMetadata.id; }
@Override public void loadInitialFactory() { currentFactoryStorageId = UUID.randomUUID().toString(); StoredDataMetadata<S> metadata = new StoredDataMetadata<>(currentFactoryStorageId, "System", "initial", currentFactoryStorageId, 0,null); storage.put(currentFactoryStorageId,new DataAndStoredMetadata<>(initialFactory, metadata)); }
default String writeScheduledMetadata(StoredDataMetadata<S> metadata) { return writeStorageMetadata(metadata); } }
public String writeScheduledMetadata(ScheduledDataMetadata<S> metadata) { return defaultDataSerialisation.writeScheduledMetadata(metadata); }
private R getPreviousHistoryFactory(String id) { return dataStorage.getPreviousHistoryFactory(id); }
public StoredDataMetadata<S> readStoredFactoryMetadata(String data) { return defaultDataDeSerialisation.readStorageMetadata(data); }
public String write(R root) { return defaultDataSerialisation.write(root); }
public ScheduledDataMetadata<S> readScheduledFactoryMetadata(String data) { return defaultDataDeSerialisation.readScheduledMetadata(data); }
public MergeDiffInfo<R> simulateUpdateCurrentFactory(DataAndNewMetadata<R> possibleUpdate, Function<String, Boolean> permissionChecker){ R commonVersion = dataStorage.getHistoryFactory(possibleUpdate.metadata.baseVersionId); return factoryManager.simulateUpdate(commonVersion , possibleUpdate.root, permissionChecker); }
public String writeStorageMetadata(StoredDataMetadata<S> metadata) { return defaultDataSerialisation.writeStorageMetadata(metadata); }