Package com.logicaldoc.core.store

# Interface Store

All Superinterfaces:
  `Comparable<Store>`

All Known Implementing Classes:
  `AbstractStore`, `FSStore`, `MockStore`

public interface Store extends Comparable<Store>
The Store manages the repository where document files are maintained and all general resources are stored.

Author:
  Michael Scholz, Marco Meschieri

## Method Summary

Modifier and Type
Method
Description
`void`
`delete(long docId)`
Deletes all resources of a document from the store.
`void`
`delete(StoreResource resource)`
Deletes a specific resource of a document from the store.
`void`
`destroy()`
Destroy method
`boolean`
`exists(StoreResource resource)`
Checks if the passed resource exists in the document's container
`static Store`
`get()`
Gets the object available in the application context
`byte[]`
`getBytes(StoreResource resource)`
Obtains the document's raw bytes for the specified resource
`byte[]`
`getBytes(StoreResource resource, long start, long length)`
Obtains the document's raw bytes for the specified resource
`int`
`getId()`
The unique identifier
`List<String>`
`getParameterNames()`
Implementations should return the list of the required parameters.
`Map<String,String>`
`getParameters()`
Returns the map of parameters
`Map<String,Store>`
`getStoreDefinitions()`
Retrieves the stores definitions grouped by type
`InputStream`
`getStream(StoreResource resource)`
Obtains the document's content for the specified resource
`String`
`getString(StoreResource resource)`
Obtains the resource's content as string for the specified resource
`long`
`getTotalSize()`
Computes the total size of the documents repository(in bytes)
`void`
`init()`
Initialization method
`boolean`
`isEnabled()`
Tests if the store is enabled
`List<StoreResource>`
`listResources(long docId, String fileVersion)`
Lists all resources in the document's container
`int`
`moveResourcesToStore(long docId, int targetStoreId)`
Moves all the resources of a document from it's original location to a different store
`Store`
`newStore(int id)`
Instantiate a new store and fully configures it.
`void`
`setId(int id)`
Sets the unique identifier
`long`
`size(StoreResource resource)`
Computed the size of a specific resource.
`void`
`store(File file, StoreResource resource)`
Stores a file
`void`
`store(InputStream stream, StoreResource resource)`
This method has to store a resource in the document's container.
`boolean`
`test()`
Tests if the store can read and write
`void`
`writeToFile(StoreResource resource, File out)`
Writes the specified resource in a file
`void`
`writeToStream(StoreResource resource, OutputStream output)`
Writes the specified resource in an output stream
`void`
`writeToStream(StoreResource resource, OutputStream output, long start, long length)`
Writes the specified resource in an output stream

### Methods inherited from interface java.lang.Comparable

`compareTo`

## Method Details

### get

static Store get()
Gets the object available in the application context

Returns:
  the instance of this object in the application context

### getId

int getId()
The unique identifier

Returns:
  the store identifier

### setId

void setId(int id)
Sets the unique identifier

Parameters:
  `id` - the store identifier

### store

void store(InputStream stream, StoreResource resource) throws IOException
This method has to store a resource in the document's container. The location where (DBMS, Filesystem, other) the document should be stored is defined by the concrete implementation. It is possible to store a new document or a new version of an existing document.

Parameters:
  `stream` - Document as InputStream
  `resource` - Resource to be stored, make sure to provide the right document's ID
Throws:
  `IOException` - the content cannot be stored

### store

void store(File file, StoreResource resource) throws IOException
Stores a file

Parameters:
  `file` - the file to store
  `resource` - Resource to be stored, make sure to provide the right document's ID
Throws:
  `IOException` - the content cannot be stored

### delete

void delete(long docId)
Deletes all resources of a document from the store.

Parameters:
  `docId` - The document identifier

### delete

void delete(StoreResource resource)
Deletes a specific resource of a document from the store.

Parameters:
  `resource` - The resource to be deleted

### listResources

List<StoreResource> listResources(long docId, String fileVersion)
Lists all resources in the document's container

Parameters:
  `docId` - The document's identifier
  `fileVersion` - If specified, lists the resources for that specific file version only
Returns:
  list of resources

### size

long size(StoreResource resource)
Computed the size of a specific resource.

Parameters:
  `resource` - The resource
Returns:
  the size in bytes

### exists

boolean exists(StoreResource resource)
Checks if the passed resource exists in the document's container

Parameters:
  `resource` - The resource
Returns:
  true only if the resource already exists

### writeToFile

void writeToFile(StoreResource resource, File out) throws IOException
Writes the specified resource in a file

Parameters:
  `resource` - The resource
  `out` - File that will receive the resource's content
Throws:
  `IOException` - error writing the file or reading the resource

### writeToStream

void writeToStream(StoreResource resource, OutputStream output, long start, long length) throws IOException
Writes the specified resource in an output stream

Parameters:
  `resource` - The resource
  `output` - The output stream
  `start` - Index of the starting byte
  `length` - Total packet length
Throws:
  `IOException` - error writing the stream or reading the resource

### writeToStream

void writeToStream(StoreResource resource, OutputStream output) throws IOException
Writes the specified resource in an output stream

Parameters:
  `resource` - The resource
  `output` - The output stream
Throws:
  `IOException` - error writing the stream or reading the resource

### getStream

InputStream getStream(StoreResource resource) throws IOException
Obtains the document's content for the specified resource

Parameters:
  `resource` - The resource
Returns:
  The document file's content
Throws:
  `IOException` - cannot open the stream

### getBytes

byte[] getBytes(StoreResource resource) throws IOException
Obtains the document's raw bytes for the specified resource

Parameters:
  `resource` - The resource
Returns:
  The document file's bytes
Throws:
  `IOException` - cannot open the resource to get the bytes

### getBytes

byte[] getBytes(StoreResource resource, long start, long length) throws IOException
Obtains the document's raw bytes for the specified resource

Parameters:
  `resource` - The resource
  `start` - Index of the starting byte
  `length` - Total packet length
Returns:
  The document file's bytes
Throws:
  `IOException` - cannot open the resource to get the bytes

### moveResourcesToStore

int moveResourcesToStore(long docId, int targetStoreId) throws IOException
Moves all the resources of a document from it's original location to a different store

Parameters:
  `docId` - identifier of the document to process
  `targetStoreId` - identifier of the store that will receive the files
Returns:
  number of moved resources
Throws:
  `IOException` - In case of error during the process

### getString

String getString(StoreResource resource)
Obtains the resource's content as string for the specified resource

Parameters:
  `resource` - The resource
Returns:
  The document file's as string representation

### getTotalSize

long getTotalSize()
Computes the total size of the documents repository(in bytes)

Returns:
  sum of the sizes of all the documents expressed in bytes

### getParameterNames

List<String> getParameterNames()
Implementations should return the list of the required parameters. A parameter is stored in the context as store.id.parameter = value

Returns:
  list of parameter names

### getParameters

Map<String,String> getParameters()
Returns the map of parameters

Returns:
  a map with settings setting_name - setting_value

### test

boolean test()
Tests if the store can read and write

Returns:
  if the store can read and write

### isEnabled

boolean isEnabled()
Tests if the store is enabled

Returns:
  if the store is enabled

### init

@PostConstruct void init()
Initialization method

### destroy

@PreDestroy void destroy()
Destroy method

### newStore

Store newStore(int id)
Instantiate a new store and fully configures it.

Parameters:
  `id` - identifier of the store to create
Returns:
  the created instance

### getStoreDefinitions

Map<String,Store> getStoreDefinitions()
Retrieves the stores definitions grouped by type

Returns:
  a map with definitions type - store prototype