1 /** 2 * C-JDBC: Clustered JDBC. 3 * Copyright (C) 2002-2005 French National Institute For Research In Computer 4 * Science And Control (INRIA). 5 * Contact: c-jdbc@objectweb.org 6 * 7 * This library is free software; you can redistribute it and/or modify it 8 * under the terms of the GNU Lesser General Public License as published by the 9 * Free Software Foundation; either version 2.1 of the License, or any later 10 * version. 11 * 12 * This library is distributed in the hope that it will be useful, but WITHOUT 13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 15 * for more details. 16 * 17 * You should have received a copy of the GNU Lesser General Public License 18 * along with this library; if not, write to the Free Software Foundation, 19 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. 20 * 21 * Initial developer(s): Nicolas Modrzyk 22 * Contributor(s): 23 */ 24 25 package org.objectweb.cjdbc.controller.cache.result.rules; 26 27 import org.objectweb.cjdbc.common.sql.SelectRequest; 28 import org.objectweb.cjdbc.common.xml.DatabasesXmlTags; 29 import org.objectweb.cjdbc.controller.cache.result.AbstractResultCache; 30 import org.objectweb.cjdbc.controller.cache.result.CacheBehavior; 31 import org.objectweb.cjdbc.controller.cache.result.entries.AbstractResultCacheEntry; 32 import org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntryEager; 33 import org.objectweb.cjdbc.controller.virtualdatabase.ControllerResultSet; 34 35 /** 36 * EagerCaching means that all entries in the cache are always coherent and any 37 * update query (insert,delete,update,...) will automatically invalidate the 38 * corresponding entry in the cache. This was the previous cache behavior for 39 * all queries 40 * 41 * @author <a HREF="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a> 42 * @version 1.0 43 */ 44 public class EagerCaching extends CacheBehavior 45 { 46 private long timeout; 47 48 /** 49 * Define this CacheBehavior as EagerCaching 50 * 51 * @param timeout Timeout for this cache entry 52 */ 53 public EagerCaching(long timeout) 54 { 55 this.timeout = timeout; 56 } 57 58 /** 59 * @see org.objectweb.cjdbc.controller.cache.result.CacheBehavior#getCacheEntry(SelectRequest, 60 * ControllerResultSet, AbstractResultCache) 61 */ 62 public AbstractResultCacheEntry getCacheEntry(SelectRequest sqlQuery, 63 ControllerResultSet result, AbstractResultCache cache) 64 { 65 return new ResultCacheEntryEager(cache, sqlQuery, result, timeout); 66 } 67 68 /** 69 * @see org.objectweb.cjdbc.common.xml.XmlComponent#getXml() 70 */ 71 public String getXml() 72 { 73 return "<" + DatabasesXmlTags.ELT_EagerCaching + "/>"; 74 } 75 76 }