1 /** 2 * com.mckoi.database.BlobStoreInterface 21 Jan 2003 3 * 4 * Mckoi SQL Database ( http://www.mckoi.com/database ) 5 * Copyright (C) 2000, 2001, 2002 Diehl and Associates, Inc. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * Version 2 as published by the Free Software Foundation. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License Version 2 for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * Version 2 along with this program; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 * 20 * Change Log: 21 * 22 * 23 */ 24 25 package com.mckoi.database; 26 27 import java.io.IOException; 28 import com.mckoi.database.global.Ref; 29 30 /** 31 * A very restricted interface for accessing a blob store. This is used by a 32 * MasterTableDataSource implementation to query and resolve blob information. 33 * 34 * @author Tobias Downer 35 */ 36 37 public interface BlobStoreInterface { 38 39 /** 40 * Given a large object reference identifier, generates a Ref implementation 41 * that provides access to the information in the large object. The Ref 42 * implementation returned by this object is a read-only static object. 43 * This may return either a BlobRef or a ClobRef object depending on the 44 * type of the object. 45 */ 46 Ref getLargeObject(long reference_id) throws IOException; 47 48 /** 49 * Tells the BlobStore that a static reference has been established in a 50 * table to the blob referenced by the given id. This is used to count 51 * references to a blob, and possibly clean up a blob if there are no 52 * references remaining to it. 53 */ 54 void establishReference(long reference_id); 55 56 /** 57 * Tells the BlobStore that a static reference has been released to the 58 * given blob. This would typically be called when the row in the database 59 * is removed. 60 */ 61 void releaseReference(long reference_id); 62 63 } 64 65