Search in sources :

Example 1 with InputStreamBuilder

use of io.vertigo.dynamo.file.model.InputStreamBuilder in project vertigo by KleeGroup.

the class FsFullFileStorePlugin method read.

/**
 * {@inheritDoc}
 */
@Override
public FileInfo read(final FileInfoURI uri) {
    /* read metadata*/
    try {
        final String metadataUri = obtainFullMetaDataFilePath(uri);
        final Path metadataPath = Paths.get(metadataUri);
        final List<String> infos = Files.readAllLines(metadataPath, Charset.forName(METADATA_CHARSET));
        // récupération des infos
        final String fileName = infos.get(0);
        final String mimeType = infos.get(1);
        final Instant lastModified = DateUtil.parseToInstant(infos.get(2), INFOS_DATE_PATTERN);
        final Long length = Long.valueOf(infos.get(3));
        final InputStreamBuilder inputStreamBuilder = new FileInputStreamBuilder(new File(obtainFullFilePath(uri)));
        final VFile vFile = fileManager.createFile(fileName, mimeType, lastModified, length, inputStreamBuilder);
        // retourne le fileinfo avec le fichier et son URI
        final FsFileInfo fsFileInfo = new FsFileInfo(uri.getDefinition(), vFile);
        fsFileInfo.setURIStored(uri);
        return fsFileInfo;
    } catch (final IOException e) {
        throw WrappedException.wrap(e, "Can't read fileInfo " + uri.toURN());
    }
}
Also used : Path(java.nio.file.Path) InputStreamBuilder(io.vertigo.dynamo.file.model.InputStreamBuilder) Instant(java.time.Instant) IOException(java.io.IOException) VFile(io.vertigo.dynamo.file.model.VFile) File(java.io.File) VFile(io.vertigo.dynamo.file.model.VFile)

Example 2 with InputStreamBuilder

use of io.vertigo.dynamo.file.model.InputStreamBuilder in project vertigo by KleeGroup.

the class DbFileStorePlugin method read.

/**
 * {@inheritDoc}
 */
@Override
public FileInfo read(final FileInfoURI uri) {
    Assertion.checkNotNull(uri);
    checkDefinitionStoreBinding(uri.getDefinition());
    // -----
    final URI<Entity> dtoUri = new URI<>(storeDtDefinition, uri.getKey());
    final Entity fileInfoDto = getStoreManager().getDataStore().readOne(dtoUri);
    final InputStreamBuilder inputStreamBuilder = new DataStreamInputStreamBuilder(getValue(fileInfoDto, DtoFields.FILE_DATA, DataStream.class));
    final String fileName = getValue(fileInfoDto, DtoFields.FILE_NAME, String.class);
    final String mimeType = getValue(fileInfoDto, DtoFields.MIME_TYPE, String.class);
    final Instant lastModified = getValue(fileInfoDto, DtoFields.LAST_MODIFIED, Instant.class);
    final Long length = getValue(fileInfoDto, DtoFields.LENGTH, Long.class);
    final VFile vFile = fileManager.createFile(fileName, mimeType, lastModified, length, inputStreamBuilder);
    return new DatabaseFileInfo(uri.getDefinition(), vFile);
}
Also used : Entity(io.vertigo.dynamo.domain.model.Entity) InputStreamBuilder(io.vertigo.dynamo.file.model.InputStreamBuilder) DataStream(io.vertigo.lang.DataStream) Instant(java.time.Instant) URI(io.vertigo.dynamo.domain.model.URI) FileInfoURI(io.vertigo.dynamo.domain.model.FileInfoURI) VFile(io.vertigo.dynamo.file.model.VFile)

Example 3 with InputStreamBuilder

use of io.vertigo.dynamo.file.model.InputStreamBuilder in project vertigo by KleeGroup.

the class TwoTablesDbFileStorePlugin method read.

/**
 * {@inheritDoc}
 */
@Override
public FileInfo read(final FileInfoURI fileInfoUri) {
    checkDefinitionStoreBinding(fileInfoUri.getDefinition());
    // Ramène FileMetada
    final URI<Entity> dtoMetaDataUri = new URI<>(storeMetaDataDtDefinition, fileInfoUri.getKey());
    final DtObject fileMetadataDto = getStoreManager().getDataStore().readOne(dtoMetaDataUri);
    final Object fdtId = getValue(fileMetadataDto, DtoFields.FDT_ID, Object.class);
    // Ramène FileData
    final URI<Entity> dtoDataUri = new URI<>(storeFileDtDefinition, fdtId);
    final DtObject fileDataDto = getStoreManager().getDataStore().readOne(dtoDataUri);
    // Construction du vFile.
    final InputStreamBuilder inputStreamBuilder = new DataStreamInputStreamBuilder(getValue(fileDataDto, DtoFields.FILE_DATA, DataStream.class));
    final String fileName = getValue(fileMetadataDto, DtoFields.FILE_NAME, String.class);
    final String mimeType = getValue(fileMetadataDto, DtoFields.MIME_TYPE, String.class);
    final Instant lastModified = getValue(fileMetadataDto, DtoFields.LAST_MODIFIED, Instant.class);
    final Long length = getValue(fileMetadataDto, DtoFields.LENGTH, Long.class);
    final VFile vFile = fileManager.createFile(fileName, mimeType, lastModified, length, inputStreamBuilder);
    // TODO passer par une factory de FileInfo à partir de la FileInfoDefinition (comme DomainFactory)
    final FileInfo fileInfo = new DatabaseFileInfo(fileInfoUri.getDefinition(), vFile);
    fileInfo.setURIStored(fileInfoUri);
    return fileInfo;
}
Also used : Entity(io.vertigo.dynamo.domain.model.Entity) DataStream(io.vertigo.lang.DataStream) DtObject(io.vertigo.dynamo.domain.model.DtObject) Instant(java.time.Instant) URI(io.vertigo.dynamo.domain.model.URI) FileInfoURI(io.vertigo.dynamo.domain.model.FileInfoURI) VFile(io.vertigo.dynamo.file.model.VFile) FileInfo(io.vertigo.dynamo.file.model.FileInfo) InputStreamBuilder(io.vertigo.dynamo.file.model.InputStreamBuilder) DtObject(io.vertigo.dynamo.domain.model.DtObject)

Example 4 with InputStreamBuilder

use of io.vertigo.dynamo.file.model.InputStreamBuilder in project vertigo by KleeGroup.

the class FsFileStorePlugin method read.

/**
 * {@inheritDoc}
 */
@Override
public FileInfo read(final FileInfoURI uri) {
    // récupération de l'objet en base
    final URI<Entity> dtoUri = createDtObjectURI(uri);
    final DtObject fileInfoDto = getStoreManager().getDataStore().readOne(dtoUri);
    // récupération du fichier
    final String fileName = getValue(fileInfoDto, DtoFields.FILE_NAME, String.class);
    final String mimeType = getValue(fileInfoDto, DtoFields.MIME_TYPE, String.class);
    final Instant lastModified = getValue(fileInfoDto, DtoFields.LAST_MODIFIED, Instant.class);
    final Long length = getValue(fileInfoDto, DtoFields.LENGTH, Long.class);
    final String filePath = getValue(fileInfoDto, DtoFields.FILE_PATH, String.class);
    final InputStreamBuilder inputStreamBuilder = new FileInputStreamBuilder(new File(documentRoot + filePath));
    final VFile vFile = fileManager.createFile(fileName, mimeType, lastModified, length, inputStreamBuilder);
    // retourne le fileinfo avec le fichier et son URI
    final FsFileInfo fsFileInfo = new FsFileInfo(uri.getDefinition(), vFile);
    fsFileInfo.setURIStored(uri);
    return fsFileInfo;
}
Also used : Entity(io.vertigo.dynamo.domain.model.Entity) InputStreamBuilder(io.vertigo.dynamo.file.model.InputStreamBuilder) DtObject(io.vertigo.dynamo.domain.model.DtObject) Instant(java.time.Instant) VFile(io.vertigo.dynamo.file.model.VFile) File(java.io.File) VFile(io.vertigo.dynamo.file.model.VFile)

Example 5 with InputStreamBuilder

use of io.vertigo.dynamo.file.model.InputStreamBuilder in project vertigo by KleeGroup.

the class FileManagerTest method testCreateTempFileWithNoFile.

@Test
public void testCreateTempFileWithNoFile() {
    final String fileName = "monTestFile.txt";
    final String typeMime = "monTypeMime";
    final Instant lastModified = Instant.now();
    final long length = 123;
    final InputStreamBuilder inputStreamBuilder = new InputStreamBuilder() {

        @Override
        public InputStream createInputStream() {
            return new StringBufferInputStream("Contenu test");
        }
    };
    final VFile vFile = fileManager.createFile(fileName, typeMime, lastModified, length, inputStreamBuilder);
    checkVFile(vFile, fileName, lastModified, typeMime, length);
}
Also used : StringBufferInputStream(java.io.StringBufferInputStream) InputStreamBuilder(io.vertigo.dynamo.file.model.InputStreamBuilder) Instant(java.time.Instant) VFile(io.vertigo.dynamo.file.model.VFile) Test(org.junit.Test)

Aggregations

InputStreamBuilder (io.vertigo.dynamo.file.model.InputStreamBuilder)7 Instant (java.time.Instant)7 VFile (io.vertigo.dynamo.file.model.VFile)6 Entity (io.vertigo.dynamo.domain.model.Entity)3 DtObject (io.vertigo.dynamo.domain.model.DtObject)2 FileInfoURI (io.vertigo.dynamo.domain.model.FileInfoURI)2 URI (io.vertigo.dynamo.domain.model.URI)2 DataStream (io.vertigo.lang.DataStream)2 File (java.io.File)2 IOException (java.io.IOException)2 StringBufferInputStream (java.io.StringBufferInputStream)2 Test (org.junit.Test)2 FileInfo (io.vertigo.dynamo.file.model.FileInfo)1 URLConnection (java.net.URLConnection)1 Path (java.nio.file.Path)1