1 /* 2 * Copyright (c) 2002-2021, City of Paris 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice 10 * and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice 13 * and the following disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its 17 * contributors may be used to endorse or promote products derived from 18 * this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 * 32 * License 1.0 33 */ 34 package fr.paris.lutece.plugins.blobstore.business.filesystem; 35 36 import fr.paris.lutece.plugins.blobstore.business.BytesBlobStore; 37 import fr.paris.lutece.plugins.blobstore.business.InputStreamBlobStore; 38 39 import java.io.IOException; 40 import java.io.InputStream; 41 42 /** 43 * 44 * Uses filesystem to store blobs. 45 * 46 */ 47 public interface IFileSystemBlobStoreDAO 48 { 49 /** 50 * Inserts the blobStore. 51 * 52 * @param blobStore 53 * blobStore 54 * @param strBasePath 55 * base directory 56 * @param depth 57 * the depth 58 * @throws IOException 59 * ioexception 60 * @throws FileAlreadyExistsException 61 * if the file already exists 62 */ 63 void insert( BytesBlobStore blobStore, String strBasePath, Integer depth ) throws IOException, FileAlreadyExistsException; 64 65 /** 66 * Inserts the InputStreamDatabaseBlobStore. 67 * 68 * @param blobStore 69 * blobStore 70 * @param strBasePath 71 * base directory 72 * @param depth 73 * the depth 74 * @throws FileAlreadyExistsException 75 * if the file already exists 76 * @throws IOException 77 * ioexception 78 */ 79 void insert( InputStreamBlobStore blobStore, String strBasePath, Integer depth ) throws FileAlreadyExistsException, IOException; 80 81 /** 82 * Load the data from the table. 83 * 84 * @param strId 85 * The identifier 86 * @param strBasePath 87 * base directory 88 * @param depth 89 * the depth 90 * @return the instance of the DatabaseBlobStore 91 * @throws IOException 92 * ioexception 93 */ 94 BytesBlobStore load( String strId, String strBasePath, Integer depth ) throws IOException; 95 96 /** 97 * Loads the InputStreamDatabaseBlobStore. 98 * 99 * @param strId 100 * id 101 * @param strBasePath 102 * base path 103 * @param depth 104 * the depth 105 * @return the InputStreamDatabaseBlobStore 106 * @throws IOException 107 * ioexception 108 */ 109 InputStream loadInputStream( String strId, String strBasePath, Integer depth ) throws IOException; 110 111 /** 112 * Updates the file. 113 * 114 * @param blobStore 115 * the blob 116 * @param strBasePath 117 * the base directory 118 * @param depth 119 * the depth 120 * @throws IOException 121 * ioexception 122 */ 123 void store( BytesBlobStore blobStore, String strBasePath, Integer depth ) throws IOException; 124 125 /** 126 * Updates the file. 127 * 128 * @param blobStore 129 * the blob 130 * @param strBasePath 131 * the base directory 132 * @param depth 133 * the depth 134 * @throws IOException 135 * ioexception 136 */ 137 void storeInputStream( InputStreamBlobStore blobStore, String strBasePath, Integer depth ) throws IOException; 138 139 /** 140 * Removes the file. 141 * 142 * @param strKey 143 * the key 144 * @param strBasePath 145 * the base directory 146 * @param depth 147 * the depth 148 * @return <code>true</code> if the file is deleted, <code>false</code> otherwise 149 * @throws IOException 150 * ioexception 151 */ 152 boolean delete( String strKey, String strBasePath, Integer depth ) throws IOException; 153 }