Package org.openrefine.model.changes
Class LazyChangeDataStore
- java.lang.Object
-
- org.openrefine.model.changes.LazyChangeDataStore
-
- All Implemented Interfaces:
ChangeDataStore
public class LazyChangeDataStore extends Object implements ChangeDataStore
AChangeDataStorewhich does not persist its change data, meaning that they do not have to be computed explicitly.The
ChangeDataobjects are simply stored in an in-memory map, to be restored later. This is suitable in contexts where project data must not be persisted and workflows are meant to be run as pipelines from the import to the export stage.
-
-
Constructor Summary
Constructors Constructor Description LazyChangeDataStore(Runner runner)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddiscardAll(long historyEntryId)Discards all change data objects which belong to a given history entry id.voiddispose()Stops all the processes and shuts down the thread pool.List<ChangeDataId>getChangeDataIds(long historyEntryId)Retrieve the list of change data ids associated with a given history entry.ProcessManagergetProcessManager()booleanneedsRefreshing(long historyEntryId)Returns true when a change data object is being fetched by a process and should therefore be refreshed as the process may have refreshed the contents on disk.<T> ChangeData<T>retrieve(ChangeDataId changeDataId, ChangeDataSerializer<T> serializer)Loads back aChangeDatathat has been persisted before.<T> ChangeData<T>retrieveOrCompute(ChangeDataId changeDataId, ChangeDataSerializer<T> serializer, Function<Optional<ChangeData<T>>,ChangeData<T>> completionProcess, String description)Retrieves a change data if it exists already, and if it does not (or is incomplete), start a process to finish computing it.<T> voidstore(ChangeData<T> data, ChangeDataId changeDataId, ChangeDataSerializer<T> serializer, Optional<ProgressReporter> progressReporter)Stores aChangeData, which might imply explicitly computing all its values (if the store persists its changes).<T> ProgressingFuture<Void>storeAsync(ChangeData<T> data, ChangeDataId changeDataId, ChangeDataSerializer<T> serializer)Asynchronously stores aChangeData, which might imply explicitly computing all its values (if the store persists its changes).
-
-
-
Constructor Detail
-
LazyChangeDataStore
public LazyChangeDataStore(Runner runner)
-
-
Method Detail
-
getProcessManager
public ProcessManager getProcessManager()
- Specified by:
getProcessManagerin interfaceChangeDataStore
-
store
public <T> void store(ChangeData<T> data, ChangeDataId changeDataId, ChangeDataSerializer<T> serializer, Optional<ProgressReporter> progressReporter) throws IOException
Description copied from interface:ChangeDataStoreStores aChangeData, which might imply explicitly computing all its values (if the store persists its changes).- Specified by:
storein interfaceChangeDataStore- Parameters:
data- the data to storechangeDataId- the id of the change data to storeserializer- to serialize the data to a file, for instanceprogressReporter- reports the progress of the change data computation and serialization- Throws:
IOException- if serialization failed
-
storeAsync
public <T> ProgressingFuture<Void> storeAsync(ChangeData<T> data, ChangeDataId changeDataId, ChangeDataSerializer<T> serializer)
Description copied from interface:ChangeDataStoreAsynchronously stores aChangeData, which might imply explicitly computing all its values (if the store persists its changes).- Specified by:
storeAsyncin interfaceChangeDataStore- Parameters:
data- the data to storechangeDataId- the id of the change data to storeserializer- to serialize the data to a file, for instance
-
retrieve
public <T> ChangeData<T> retrieve(ChangeDataId changeDataId, ChangeDataSerializer<T> serializer) throws IOException
Description copied from interface:ChangeDataStoreLoads back aChangeDatathat has been persisted before.- Specified by:
retrievein interfaceChangeDataStore- Parameters:
changeDataId- the id of the change data to retrieveserializer- the deserializer to read it back from a file- Throws:
IOException
-
retrieveOrCompute
public <T> ChangeData<T> retrieveOrCompute(ChangeDataId changeDataId, ChangeDataSerializer<T> serializer, Function<Optional<ChangeData<T>>,ChangeData<T>> completionProcess, String description) throws IOException
Description copied from interface:ChangeDataStoreRetrieves a change data if it exists already, and if it does not (or is incomplete), start a process to finish computing it.- Specified by:
retrieveOrComputein interfaceChangeDataStore- Parameters:
changeDataId- the id of the change data to retrieveserializer- the serializer to read it back from a file and to write its completion if it is incompletecompletionProcess- a function taking the existing state of the change data and returning the complete versiondescription- a description of the completion process, to be reported to the user- Throws:
IOException
-
needsRefreshing
public boolean needsRefreshing(long historyEntryId)
Description copied from interface:ChangeDataStoreReturns true when a change data object is being fetched by a process and should therefore be refreshed as the process may have refreshed the contents on disk.- Specified by:
needsRefreshingin interfaceChangeDataStore
-
discardAll
public void discardAll(long historyEntryId)
Description copied from interface:ChangeDataStoreDiscards all change data objects which belong to a given history entry id.- Specified by:
discardAllin interfaceChangeDataStore
-
getChangeDataIds
public List<ChangeDataId> getChangeDataIds(long historyEntryId)
Description copied from interface:ChangeDataStoreRetrieve the list of change data ids associated with a given history entry.- Specified by:
getChangeDataIdsin interfaceChangeDataStore
-
dispose
public void dispose()
Description copied from interface:ChangeDataStoreStops all the processes and shuts down the thread pool.- Specified by:
disposein interfaceChangeDataStore
-
-