1 /** 2 * Sequoia: Database clustering technology. 3 * Copyright (C) 2002-2004 French National Institute For Research In Computer 4 * Science And Control (INRIA). 5 * Contact: sequoia@continuent.org 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 * 19 * Initial developer(s): Nicolas Modrzyk. 20 * Contributor(s): 21 */ 22 23 package org.continuent.sequoia.common.jmx.monitoring.cache; 24 25 import org.continuent.sequoia.common.exceptions.DataCollectorException; 26 import org.continuent.sequoia.common.jmx.monitoring.AbstractDataCollector; 27 import org.continuent.sequoia.controller.cache.result.AbstractResultCache; 28 import org.continuent.sequoia.controller.core.Controller; 29 import org.continuent.sequoia.controller.monitoring.datacollector.DataCollector; 30 import org.continuent.sequoia.controller.virtualdatabase.VirtualDatabase; 31 32 /** 33 * Abstract template to factor code for cache collectors 34 * 35 * @author <a HREF="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk </a> 36 */ 37 public abstract class AbstractCacheStatsDataCollector 38 extends AbstractDataCollector 39 { 40 private String virtualDatabaseName; 41 42 /** 43 * new collector 44 * 45 * @param virtualDatabaseName database accessed to get data 46 */ 47 public AbstractCacheStatsDataCollector(String virtualDatabaseName) 48 { 49 super(); 50 this.virtualDatabaseName = virtualDatabaseName; 51 } 52 53 /** 54 * @see org.continuent.sequoia.common.jmx.monitoring.AbstractDataCollector#collectValue() 55 */ 56 public long collectValue() throws DataCollectorException 57 { 58 VirtualDatabase vdb = ((Controller) controller) 59 .getVirtualDatabase(virtualDatabaseName); 60 AbstractResultCache cache = vdb.getRequestManager().getResultCache(); 61 if (cache == null) 62 throw new DataCollectorException(DataCollector.NO_CACHE_ENABLED); 63 return this.getValue(cache); 64 } 65 66 /** 67 * We have the cache object so let's get the value we want from ot 68 * 69 * @param cache as an object to allow it through RMI, but IS a 70 * <code>AbstractResultCache</code> 71 * @return the collected value 72 */ 73 public abstract long getValue(Object cache); 74 75 /** 76 * @see org.continuent.sequoia.common.jmx.monitoring.AbstractDataCollector#getTargetName() 77 */ 78 public String getTargetName() 79 { 80 return virtualDatabaseName; 81 } 82 } 83