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

AbstractCacheStatsDataCollector.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): 
00023  */
00024 package org.objectweb.cjdbc.common.monitor.cache;
00025 
00026 import org.objectweb.cjdbc.common.exceptions.DataCollectorException;
00027 import org.objectweb.cjdbc.common.exceptions.ExceptionTypes;
00028 import org.objectweb.cjdbc.common.monitor.AbstractDataCollector;
00029 import org.objectweb.cjdbc.controller.cache.result.AbstractResultCache;
00030 import org.objectweb.cjdbc.controller.core.Controller;
00031 import org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase;
00032 
00033 /**
00034  * Abstract template to factor code for cache collectors
00035  * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk</a>
00036  */
00037 public abstract class AbstractCacheStatsDataCollector
00038     extends
00039       AbstractDataCollector
00040 {
00041   private String virtualDatabaseName;
00042 
00043   /**
00044    * new collector
00045    * @param virtualDatabaseName database accessed to get data
00046    */
00047   public AbstractCacheStatsDataCollector(String virtualDatabaseName)
00048   {
00049     super();
00050     this.virtualDatabaseName = virtualDatabaseName;
00051   }
00052 
00053   /**
00054    * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#collectValue()
00055    */
00056   public long collectValue() throws DataCollectorException
00057   {
00058     VirtualDatabase vdb = ((Controller)controller).getVirtualDatabase(
00059         virtualDatabaseName);
00060     AbstractResultCache cache = vdb.getRequestManager().getResultCache();
00061     if (cache == null)
00062       throw new DataCollectorException(ExceptionTypes.NO_CACHE_ENABLED);
00063     return this.getValue(cache);
00064   }
00065 
00066   /**
00067    * We have the cache object so let's get the value we want from ot
00068    * @param cache as an object to allow it through RMI, but IS a <code>AbstractResultCache</code>
00069    * @return the collected value 
00070    */
00071   public abstract long getValue(Object cache);
00072   
00073   
00074 
00075   /**
00076    * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#getTargetName()
00077    */
00078   public String getTargetName()
00079   {
00080     return virtualDatabaseName;
00081   }
00082 }

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