1 /** 2 * C-JDBC: Clustered JDBC. 3 * Copyright (C) 2002-2004 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.common.monitor.cache; 26 27 import org.objectweb.cjdbc.common.exceptions.DataCollectorException; 28 import org.objectweb.cjdbc.common.monitor.AbstractDataCollector; 29 import org.objectweb.cjdbc.controller.cache.result.AbstractResultCache; 30 import org.objectweb.cjdbc.controller.core.Controller; 31 import org.objectweb.cjdbc.controller.monitoring.datacollector.DataCollector; 32 import org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase; 33 34 /** 35 * Abstract template to factor code for cache collectors 36 * 37 * @author <a HREF="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a> 38 */ 39 public abstract class AbstractCacheStatsDataCollector 40 extends AbstractDataCollector 41 { 42 private String virtualDatabaseName; 43 44 /** 45 * new collector 46 * 47 * @param virtualDatabaseName database accessed to get data 48 */ 49 public AbstractCacheStatsDataCollector(String virtualDatabaseName) 50 { 51 super(); 52 this.virtualDatabaseName = virtualDatabaseName; 53 } 54 55 /** 56 * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#collectValue() 57 */ 58 public long collectValue() throws DataCollectorException 59 { 60 VirtualDatabase vdb = ((Controller) controller) 61 .getVirtualDatabase(virtualDatabaseName); 62 AbstractResultCache cache = vdb.getRequestManager().getResultCache(); 63 if (cache == null) 64 throw new DataCollectorException(DataCollector.NO_CACHE_ENABLED); 65 return this.getValue(cache); 66 } 67 68 /** 69 * We have the cache object so let's get the value we want from ot 70 * 71 * @param cache as an object to allow it through RMI, but IS a 72 * <code>AbstractResultCache</code> 73 * @return the collected value 74 */ 75 public abstract long getValue(Object cache); 76 77 /** 78 * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#getTargetName() 79 */ 80 public String getTargetName() 81 { 82 return virtualDatabaseName; 83 } 84 } 85