00001 /** 00002 * C-JDBC: Clustered JDBC. 00003 * Copyright (C) 2002-2004 French National Institute For Research In Computer 00004 * Science And Control (INRIA). 00005 * Contact: c-jdbc@objectweb.org 00006 * 00007 * This library is free software; you can redistribute it and/or modify it 00008 * under the terms of the GNU Lesser General Public License as published by the 00009 * Free Software Foundation; either version 2.1 of the License, or any later 00010 * version. 00011 * 00012 * This library is distributed in the hope that it will be useful, but WITHOUT 00013 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00014 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 00015 * for more details. 00016 * 00017 * You should have received a copy of the GNU Lesser General Public License 00018 * along with this library; if not, write to the Free Software Foundation, 00019 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 00020 * 00021 * Initial developer(s): Emmanuel Cecchet. 00022 * Contributor(s): Nicolas Modrzyk. 00023 */ 00024 00025 package org.objectweb.cjdbc.controller.cache.result; 00026 00027 import org.objectweb.cjdbc.common.sql.AbstractWriteRequest; 00028 import org.objectweb.cjdbc.common.sql.ParsingGranularities; 00029 import org.objectweb.cjdbc.common.sql.UpdateRequest; 00030 import org.objectweb.cjdbc.controller.cache.result.entries.CacheEntry; 00031 00032 /** 00033 * This is a query cache implementation with a database granularity: 00034 * <ul> 00035 * <li><code>DATABASE</code>: the cache is flushed each time the database is 00036 * updated (every INSERT, UPDATE, DELETE, ... statement).</li> 00037 * </ul> 00038 * 00039 * @author <a href="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet </a> 00040 * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a> 00041 * @version 1.0 00042 */ 00043 00044 public class ResultCacheDatabase extends ResultCache 00045 { 00046 00047 /** 00048 * Builds a new ResultCache with a database granularity. 00049 * 00050 * @param maxEntries maximum number of entries 00051 * @param pendingTimeout pending timeout for concurrent queries 00052 */ 00053 public ResultCacheDatabase(int maxEntries, int pendingTimeout) 00054 { 00055 super(maxEntries, pendingTimeout); 00056 parsingGranularity = ParsingGranularities.NO_PARSING; 00057 } 00058 00059 /** 00060 * @see org.objectweb.cjdbc.controller.cache.result.ResultCache#processAddToCache 00061 */ 00062 protected void processAddToCache(CacheEntry qe) 00063 { 00064 return; 00065 } 00066 00067 /** 00068 * @see org.objectweb.cjdbc.controller.cache.result.AbstractResultCache#isUpdateNecessary(org.objectweb.cjdbc.common.sql.UpdateRequest) 00069 */ 00070 public boolean isUpdateNecessary(UpdateRequest request) 00071 { 00072 return true; 00073 } 00074 00075 /** 00076 * @see org.objectweb.cjdbc.controller.cache.result.ResultCache#processWriteNotify(org.objectweb.cjdbc.common.sql.AbstractWriteRequest) 00077 */ 00078 protected void processWriteNotify(AbstractWriteRequest request) 00079 { 00080 flushCache(); 00081 } 00082 00083 /** 00084 * @see org.objectweb.cjdbc.controller.cache.result.ResultCache#getName() 00085 */ 00086 public String getName() 00087 { 00088 return "database"; 00089 } 00090 00091 }