Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

ResultCacheEntryEager.java

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): Nicolas Modrzyk.
00022  * Contributor(s): Emmanuel Cecchet.
00023  */
00024 
00025 package org.objectweb.cjdbc.controller.cache.result.entries;
00026 
00027 import java.util.Date;
00028 
00029 import org.objectweb.cjdbc.common.sql.SelectRequest;
00030 import org.objectweb.cjdbc.controller.cache.result.AbstractResultCache;
00031 import org.objectweb.cjdbc.controller.virtualdatabase.ControllerResultSet;
00032 
00033 /**
00034  * A <code>CacheEntry</code> that is to be recognized as Eager entry.
00035  * 
00036  * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a>
00037  * @author <a href="mailto:Emmanuel.Cecchet@inria.fr">Emmanuel Cecchet </a>
00038  * @version 1.0
00039  */
00040 public class ResultCacheEntryEager extends ResultCacheEntry
00041 {
00042   private AbstractResultCache cache;
00043   private long                timeout;
00044   private long                deadline;
00045 
00046   /**
00047    * Create a new Eager Query Cache entry
00048    * 
00049    * @param cache The query cache we belong to
00050    * @param request Select request to cache
00051    * @param result ResultSet to cache
00052    */
00053   public ResultCacheEntryEager(AbstractResultCache cache,
00054       SelectRequest request, ControllerResultSet result, long timeout)
00055   {
00056     super(request, result);
00057     this.cache = cache;
00058     if (timeout > 0)
00059       this.deadline = System.currentTimeMillis() + timeout;
00060     else
00061       this.deadline = NO_DEADLINE;
00062   }
00063 
00064   /**
00065    * @see org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry#invalidate()
00066    */
00067   public void invalidate()
00068   {
00069     state = CACHE_INVALID;
00070     if(cache!=null)
00071       cache.removeFromCache(request);
00072     if (result != null)
00073       result = null;
00074     cache = null;;
00075   }
00076 
00077   /**
00078    * @see org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry#getType()
00079    */
00080   public String getType()
00081   {
00082     return "Eager";
00083   }
00084 
00085   /**
00086    * @see org.objectweb.cjdbc.controller.cache.result.entries.ResultCacheEntry#toStringTable()
00087    */
00088   public String[] toStringTable()
00089   {
00090     return new String[]{request.getSQL(), getType(), getState(),
00091         new Date(getDeadline()).toString(), "" + getSizeOfResult()};
00092   }
00093 
00094   /**
00095    * Returns the deadline value.
00096    * 
00097    * @return Returns the deadline.
00098    */
00099   public long getDeadline()
00100   {
00101     return deadline;
00102   }
00103 
00104   /**
00105    * Returns the timeout value.
00106    * 
00107    * @return Returns the timeout.
00108    */
00109   public long getTimeout()
00110   {
00111     return timeout;
00112   }
00113 }

Generated on Mon Apr 11 22:01:34 2005 for C-JDBC by  doxygen 1.3.9.1