Class S3FileStorePlugin
java.lang.Object
io.vertigo.datastore.plugins.filestore.s3.S3FileStorePlugin
- All Implemented Interfaces:
io.vertigo.core.node.component.Activeable,io.vertigo.core.node.component.CoreComponent,io.vertigo.core.node.component.Plugin,io.vertigo.core.node.definition.DefinitionProvider,io.vertigo.core.node.definition.SimpleDefinitionProvider,FileStorePlugin
public final class S3FileStorePlugin
extends Object
implements FileStorePlugin, io.vertigo.core.node.component.Activeable, io.vertigo.core.node.definition.SimpleDefinitionProvider
Store file data in S3 and metadatas in database.
- Author:
- skerdudou, xdurand, mlaroche
-
Constructor Summary
ConstructorsConstructorDescriptionS3FileStorePlugin(Optional<String> name, String storeDataDefinitionName, String bucketName, String fileInfoClassName, Optional<Boolean> readOnlyOpt, Optional<Boolean> useTagsOpt, Optional<Integer> purgeDelayMinutesOpt, io.vertigo.commons.transaction.VTransactionManager transactionManager, io.vertigo.connectors.s3.S3Connector s3Connector, io.vertigo.core.analytics.AnalyticsManager analyticsManager) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionio.vertigo.core.analytics.health.HealthMeasurecheckIo()Save a file.voiddelete(FileInfoURI uri) Delete a file.voidCall by Daemon to purge old filesGet's the FileInfo Class that are handled by the particular plugingetName()List<? extends io.vertigo.core.node.definition.Definition> provideDefinitions(io.vertigo.core.node.definition.DefinitionSpace definitionSpace) read(FileInfoURI uri) Load a file by its URI.voidstart()voidstop()voidSave a file.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.vertigo.core.node.definition.DefinitionProvider
addDefinitionResourceConfigMethods inherited from interface io.vertigo.core.node.definition.SimpleDefinitionProvider
get
-
Constructor Details
-
S3FileStorePlugin
@Inject public S3FileStorePlugin(Optional<String> name, String storeDataDefinitionName, String bucketName, String fileInfoClassName, Optional<Boolean> readOnlyOpt, Optional<Boolean> useTagsOpt, Optional<Integer> purgeDelayMinutesOpt, io.vertigo.commons.transaction.VTransactionManager transactionManager, io.vertigo.connectors.s3.S3Connector s3Connector, io.vertigo.core.analytics.AnalyticsManager analyticsManager) Constructor.- Parameters:
name- Store namepurgeDelayMinutesOpt- purge files older than this delay. In S3, if you can, you should use the lifecycle policy to automatically delete old file. But some CSP don't have this feature implemented yet and in that case you should use this algorithmic purge. Also note that this algorithmic purge will perform many API call, so be aware that this purge could incurs extra costs.transactionManager- used to stick at Vertigo transaction levels3Connector- S3 connectoranalyticsManager- Analytics ManagerstoreDtName- Database entitybucket- S3 bucket namefileInfoClass- file info classreadOnly- read only store. Default to falseuseTags- tag state on s3 files (state = uncommited|commited). Default to true. Can hang in some race conditions. Ex: during a transaction, create a file, re-read the same file but do not consume input stream, then commit transaction
-
-
Method Details
-
start
public void start()- Specified by:
startin interfaceio.vertigo.core.node.component.Activeable
-
stop
public void stop()- Specified by:
stopin interfaceio.vertigo.core.node.component.Activeable
-
provideDefinitions
public List<? extends io.vertigo.core.node.definition.Definition> provideDefinitions(io.vertigo.core.node.definition.DefinitionSpace definitionSpace) - Specified by:
provideDefinitionsin interfaceio.vertigo.core.node.definition.SimpleDefinitionProvider
-
deleteOldFiles
public void deleteOldFiles()Call by Daemon to purge old files -
getName
- Specified by:
getNamein interfaceFileStorePlugin- Returns:
- Store name
-
read
Load a file by its URI.- Specified by:
readin interfaceFileStorePlugin- Parameters:
uri- FileURI requested- Returns:
- FileInfo for this uri (null if not found).
-
create
Save a file. Input FileInfo must have an empty URI : insert mode- Specified by:
createin interfaceFileStorePlugin- Parameters:
fileInfo- File to save (creation)- Returns:
- the created FileInfo
-
update
Save a file. Input FileInfo must have an URI : update mode- Specified by:
updatein interfaceFileStorePlugin- Parameters:
fileInfo- File to save (modification)
-
delete
Delete a file.- Specified by:
deletein interfaceFileStorePlugin- Parameters:
uri- File's URI to remove
-
getFileInfoClass
Get's the FileInfo Class that are handled by the particular plugin- Specified by:
getFileInfoClassin interfaceFileStorePlugin- Returns:
-
checkIo
public io.vertigo.core.analytics.health.HealthMeasure checkIo()- Returns:
- HealthMeasure of this plugin
-