@Override public String getCurrentFactoryStorageId() { StoredDataMetadata<S> storedDataMetadata = dataSerialisationManager.readStoredFactoryMetadata(readFile(currentFactoryPathMetadata)); return storedDataMetadata.id; }
@Override public void loadInitialFactory() { fileSystemFactoryStorageHistory.initFromFileSystem(); if (!Files.exists(currentFactoryPath)){ NewDataMetadata metadata = new NewDataMetadata(); metadata.baseVersionId= UUID.randomUUID().toString(); DataAndNewMetadata<R> initialFactoryAndStorageMetadata = new DataAndNewMetadata<>(initialFactory,metadata); updateCurrentFactory(initialFactoryAndStorageMetadata,"System","initial factory",null); } }
@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); }
/** * Microservice with filesystem data storage * @param rootFactory factory root * @param path filesystem path to store * @param <V> Visitor * @param <L> root liveobject * @param <R> Root * @param <S> Summary * @return microservice */ @SuppressWarnings("unchecked") public static <V,L,R extends FactoryBase<L,V,R>,S> Microservice<V,L,R,S> buildFilesystemMicroservice(R rootFactory, Path path){ Class<R> rootClass = (Class<R>) rootFactory.getClass(); DataSerialisationManager<R,S> defaultSerialisationManager = new DataSerialisationManager<>(new JacksonSerialisation<>(1),new JacksonDeSerialisation<>(rootClass,1),new ArrayList<>(),1); return new Microservice<>(new FactoryManager<>(new LoggingFactoryExceptionHandler(new ResettingHandler())), new FileSystemDataStorage<>(path, rootFactory,defaultSerialisationManager)); }
@Override public DataAndStoredMetadata<R,S> getCurrentFactory() { StoredDataMetadata<S> storedDataMetadata = dataSerialisationManager.readStoredFactoryMetadata(readFile(currentFactoryPathMetadata)); return new DataAndStoredMetadata<>(dataSerialisationManager.read(readFile(currentFactoryPath), storedDataMetadata.dataModelVersion), storedDataMetadata); }