public class MapDbAppStorage extends java.lang.Object implements AppStorage
Modifier | Constructor and Description |
---|---|
protected |
MapDbAppStorage(java.lang.String fileSystemName,
com.google.common.base.Supplier<org.mapdb.DB> db) |
Modifier and Type | Method and Description |
---|---|
void |
addDependency(java.lang.String nodeId,
java.lang.String name,
java.lang.String toNodeId)
Adds a dependency from node with ID
nodeId to node with ID toNodeId . |
void |
addDoubleTimeSeriesData(java.lang.String nodeId,
int version,
java.lang.String timeSeriesName,
java.util.List<DoubleDataChunk> chunks)
Adds data (double) to the time series with names
timeSeriesNames associated with node with ID nodeId . |
void |
addStringTimeSeriesData(java.lang.String nodeId,
int version,
java.lang.String timeSeriesName,
java.util.List<StringDataChunk> chunks)
Adds data (string) to the time series with names
timeSeriesNames associated with node with ID nodeId . |
void |
clearTimeSeries(java.lang.String nodeId)
Deletes time series associated with node with ID
nodeId |
void |
close()
Closes any resource associated with this storage.
|
static MapDbAppStorage |
createHeap(java.lang.String fileSystemName) |
static MapDbAppStorage |
createMem(java.lang.String fileSystemName) |
static MapDbAppStorage |
createMmapFile(java.lang.String fileSystemName,
java.io.File dbFile) |
NodeInfo |
createNode(java.lang.String parentNodeId,
java.lang.String name,
java.lang.String nodePseudoClass,
java.lang.String description,
int version,
NodeGenericMetadata genericMetadata)
Creates a new node in the tree under a parent node.
|
NodeInfo |
createRootNodeIfNotExists(java.lang.String name,
java.lang.String nodePseudoClass)
Returns the root node of the tree, creating it if it does not exist.
|
void |
createTimeSeries(java.lang.String nodeId,
TimeSeriesMetadata metadata)
Creates a time series associated with node with ID
nodeId . |
boolean |
dataExists(java.lang.String nodeId,
java.lang.String name)
Returns
true if data named name associated with the node with ID nodeId exists. |
java.lang.String |
deleteNode(java.lang.String nodeId)
Deletes the node with ID
nodeId . |
void |
flush()
Flush any changes to underlying storage.
|
java.util.Set<NodeInfo> |
getBackwardDependencies(java.lang.String nodeId)
Gets
NodeInfo objects of nodes which depend on the node with ID nodeId . |
java.util.Optional<NodeInfo> |
getChildNode(java.lang.String parentString,
java.lang.String name)
Gets
NodeInfo for child node with name name of the node with ID nodeId , empty if such a node does not exist. |
java.util.List<NodeInfo> |
getChildNodes(java.lang.String nodeId)
Gets
NodeInfo for child nodes of the node with ID nodeId . |
java.util.Set<java.lang.String> |
getDataNames(java.lang.String nodeId)
Returns the lists of names of data associated to the node with ID
nodeId . |
java.util.Set<NodeDependency> |
getDependencies(java.lang.String nodeId)
Gets all dependencies (
NodeDependency objects) of node with ID nodeId . |
java.util.Set<NodeInfo> |
getDependencies(java.lang.String nodeId,
java.lang.String name)
Gets
NodeInfo objects for dependencies of node with ID nodeId , and associated to the dependency name name . |
java.util.Map<java.lang.String,java.util.List<DoubleDataChunk>> |
getDoubleTimeSeriesData(java.lang.String nodeId,
java.util.Set<java.lang.String> timeSeriesNames,
int version)
Gets data (double) for the time series with names
timeSeriesNames associated with node with ID nodeId . |
java.lang.String |
getFileSystemName() |
NodeInfo |
getNodeInfo(java.lang.String nodeId)
Gets NodeInfo object for the node with ID
nodeId . |
java.util.Optional<NodeInfo> |
getParentNode(java.lang.String nodeId)
Gets
NodeInfo for parent node of the node with ID nodeId , empty if such a node does not exist. |
java.util.Map<java.lang.String,java.util.List<StringDataChunk>> |
getStringTimeSeriesData(java.lang.String nodeId,
java.util.Set<java.lang.String> timeSeriesNames,
int version)
Gets data (string) for the time series with names
timeSeriesNames associated with node with ID nodeId . |
java.util.Set<java.lang.Integer> |
getTimeSeriesDataVersions(java.lang.String nodeId)
Gets versions of time series data associated with node with ID
nodeId . |
java.util.Set<java.lang.Integer> |
getTimeSeriesDataVersions(java.lang.String nodeId,
java.lang.String timeSeriesName)
Gets versions of data for the time series with name
timeSeriesName associated with node with ID nodeId . |
java.util.List<TimeSeriesMetadata> |
getTimeSeriesMetadata(java.lang.String nodeId,
java.util.Set<java.lang.String> timeSeriesNames)
Returns metadata of time series associated with node with ID
nodeId and with name in timeSeriesNames . |
java.util.Set<java.lang.String> |
getTimeSeriesNames(java.lang.String nodeId)
Returns names of all time series associated with node with ID
nodeId . |
boolean |
isClosed()
Check if storage is closed.
|
boolean |
isRemote() |
boolean |
isWritable(java.lang.String nodeId) |
java.util.Optional<java.io.InputStream> |
readBinaryData(java.lang.String nodeId,
java.lang.String name)
Reads data associated to the node with ID
nodeId . |
boolean |
removeData(java.lang.String nodeId,
java.lang.String name)
Removes the data blob named
name associated with the node with ID nodeId . |
void |
removeDependency(java.lang.String nodeId,
java.lang.String name,
java.lang.String toNodeId)
Removes a dependency named
name from node with ID nodeId to node with ID toNodeId . |
void |
renameNode(java.lang.String nodeId,
java.lang.String name)
Rename the node with ID
nodeId |
void |
setDescription(java.lang.String nodeId,
java.lang.String description) |
void |
setParentNode(java.lang.String nodeId,
java.lang.String newParentNodeId)
Sets new parent node for the node with ID
nodeId . |
boolean |
timeSeriesExists(java.lang.String nodeId,
java.lang.String timeSeriesName)
Returns
true if a time series named timeSeriesName associated with the node with ID nodeId exists. |
void |
updateModificationTime(java.lang.String nodeId) |
java.io.OutputStream |
writeBinaryData(java.lang.String nodeId,
java.lang.String name)
Returns an
OutputStream to write data associated to the node with ID nodeId . |
protected MapDbAppStorage(java.lang.String fileSystemName, com.google.common.base.Supplier<org.mapdb.DB> db)
public static MapDbAppStorage createMem(java.lang.String fileSystemName)
public static MapDbAppStorage createHeap(java.lang.String fileSystemName)
public static MapDbAppStorage createMmapFile(java.lang.String fileSystemName, java.io.File dbFile)
public java.lang.String getFileSystemName()
getFileSystemName
in interface AppStorage
public boolean isRemote()
isRemote
in interface AppStorage
public NodeInfo createRootNodeIfNotExists(java.lang.String name, java.lang.String nodePseudoClass)
AppStorage
createRootNodeIfNotExists
in interface AppStorage
public NodeInfo getNodeInfo(java.lang.String nodeId)
AppStorage
nodeId
.getNodeInfo
in interface AppStorage
public void setDescription(java.lang.String nodeId, java.lang.String description)
setDescription
in interface AppStorage
public void updateModificationTime(java.lang.String nodeId)
updateModificationTime
in interface AppStorage
public boolean isWritable(java.lang.String nodeId)
isWritable
in interface AppStorage
public java.util.List<NodeInfo> getChildNodes(java.lang.String nodeId)
AppStorage
NodeInfo
for child nodes of the node with ID nodeId
.getChildNodes
in interface AppStorage
public java.util.Optional<NodeInfo> getChildNode(java.lang.String parentString, java.lang.String name)
AppStorage
NodeInfo
for child node with name name
of the node with ID nodeId
, empty if such a node does not exist.getChildNode
in interface AppStorage
public java.util.Optional<NodeInfo> getParentNode(java.lang.String nodeId)
AppStorage
NodeInfo
for parent node of the node with ID nodeId
, empty if such a node does not exist.getParentNode
in interface AppStorage
public void setParentNode(java.lang.String nodeId, java.lang.String newParentNodeId)
AppStorage
nodeId
.setParentNode
in interface AppStorage
public NodeInfo createNode(java.lang.String parentNodeId, java.lang.String name, java.lang.String nodePseudoClass, java.lang.String description, int version, NodeGenericMetadata genericMetadata)
AppStorage
NodeInfo
corresponding to the newly created node.createNode
in interface AppStorage
public void renameNode(java.lang.String nodeId, java.lang.String name)
AppStorage
nodeId
renameNode
in interface AppStorage
public java.lang.String deleteNode(java.lang.String nodeId)
AppStorage
nodeId
.deleteNode
in interface AppStorage
public java.util.Optional<java.io.InputStream> readBinaryData(java.lang.String nodeId, java.lang.String name)
AppStorage
nodeId
. A node may have several data blobs associated to it,
with different names. The parameters name
specifies which of those data is requested.readBinaryData
in interface AppStorage
public java.io.OutputStream writeBinaryData(java.lang.String nodeId, java.lang.String name)
AppStorage
OutputStream
to write data associated to the node with ID nodeId
.
A node may have several data blobs associated to it, with different names.writeBinaryData
in interface AppStorage
public boolean dataExists(java.lang.String nodeId, java.lang.String name)
AppStorage
true
if data named name
associated with the node with ID nodeId
exists.dataExists
in interface AppStorage
public java.util.Set<java.lang.String> getDataNames(java.lang.String nodeId)
AppStorage
nodeId
.getDataNames
in interface AppStorage
public boolean removeData(java.lang.String nodeId, java.lang.String name)
AppStorage
name
associated with the node with ID nodeId
.removeData
in interface AppStorage
public void createTimeSeries(java.lang.String nodeId, TimeSeriesMetadata metadata)
AppStorage
nodeId
.createTimeSeries
in interface AppStorage
public java.util.Set<java.lang.String> getTimeSeriesNames(java.lang.String nodeId)
AppStorage
nodeId
.getTimeSeriesNames
in interface AppStorage
public boolean timeSeriesExists(java.lang.String nodeId, java.lang.String timeSeriesName)
AppStorage
true
if a time series named timeSeriesName
associated with the node with ID nodeId
exists.timeSeriesExists
in interface AppStorage
public java.util.List<TimeSeriesMetadata> getTimeSeriesMetadata(java.lang.String nodeId, java.util.Set<java.lang.String> timeSeriesNames)
AppStorage
nodeId
and with name in timeSeriesNames
.getTimeSeriesMetadata
in interface AppStorage
public java.util.Set<java.lang.Integer> getTimeSeriesDataVersions(java.lang.String nodeId)
AppStorage
nodeId
.getTimeSeriesDataVersions
in interface AppStorage
public java.util.Set<java.lang.Integer> getTimeSeriesDataVersions(java.lang.String nodeId, java.lang.String timeSeriesName)
AppStorage
timeSeriesName
associated with node with ID nodeId
.getTimeSeriesDataVersions
in interface AppStorage
public java.util.Map<java.lang.String,java.util.List<DoubleDataChunk>> getDoubleTimeSeriesData(java.lang.String nodeId, java.util.Set<java.lang.String> timeSeriesNames, int version)
AppStorage
timeSeriesNames
associated with node with ID nodeId
.getDoubleTimeSeriesData
in interface AppStorage
public void addDoubleTimeSeriesData(java.lang.String nodeId, int version, java.lang.String timeSeriesName, java.util.List<DoubleDataChunk> chunks)
AppStorage
timeSeriesNames
associated with node with ID nodeId
.addDoubleTimeSeriesData
in interface AppStorage
public java.util.Map<java.lang.String,java.util.List<StringDataChunk>> getStringTimeSeriesData(java.lang.String nodeId, java.util.Set<java.lang.String> timeSeriesNames, int version)
AppStorage
timeSeriesNames
associated with node with ID nodeId
.getStringTimeSeriesData
in interface AppStorage
public void addStringTimeSeriesData(java.lang.String nodeId, int version, java.lang.String timeSeriesName, java.util.List<StringDataChunk> chunks)
AppStorage
timeSeriesNames
associated with node with ID nodeId
.addStringTimeSeriesData
in interface AppStorage
public void clearTimeSeries(java.lang.String nodeId)
AppStorage
nodeId
clearTimeSeries
in interface AppStorage
public void addDependency(java.lang.String nodeId, java.lang.String name, java.lang.String toNodeId)
AppStorage
nodeId
to node with ID toNodeId
.
The dependency will be associated with the specified name
.addDependency
in interface AppStorage
public java.util.Set<NodeInfo> getDependencies(java.lang.String nodeId, java.lang.String name)
AppStorage
NodeInfo
objects for dependencies of node with ID nodeId
, and associated to the dependency name name
.getDependencies
in interface AppStorage
public java.util.Set<NodeDependency> getDependencies(java.lang.String nodeId)
AppStorage
NodeDependency
objects) of node with ID nodeId
.getDependencies
in interface AppStorage
public java.util.Set<NodeInfo> getBackwardDependencies(java.lang.String nodeId)
AppStorage
NodeInfo
objects of nodes which depend on the node with ID nodeId
.getBackwardDependencies
in interface AppStorage
public void removeDependency(java.lang.String nodeId, java.lang.String name, java.lang.String toNodeId)
AppStorage
name
from node with ID nodeId
to node with ID toNodeId
.removeDependency
in interface AppStorage
public void flush()
AppStorage
flush
in interface AppStorage
public boolean isClosed()
AppStorage
isClosed
in interface AppStorage
public void close()
AppStorage
close
in interface AppStorage
close
in interface java.lang.AutoCloseable