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.scheduler; 00025 00026 import org.objectweb.cjdbc.common.monitor.AbstractDataCollector; 00027 import org.objectweb.cjdbc.controller.core.Controller; 00028 import org.objectweb.cjdbc.controller.scheduler.AbstractScheduler; 00029 import org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase; 00030 00031 /** 00032 * Abstract class to factor code for scheduler collectors 00033 * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk</a> 00034 */ 00035 public abstract class AbstractSchedulerDataCollector 00036 extends 00037 AbstractDataCollector 00038 { 00039 private String virtualDatabaseName; 00040 00041 /** 00042 * create a new collector 00043 * 00044 * @param virtualDatabaseName database accessed to get data 00045 */ 00046 public AbstractSchedulerDataCollector(String virtualDatabaseName) 00047 { 00048 super(); 00049 this.virtualDatabaseName = virtualDatabaseName; 00050 } 00051 00052 /** 00053 * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#collectValue() 00054 */ 00055 public long collectValue() 00056 { 00057 VirtualDatabase vdb = ((Controller)controller).getVirtualDatabase( 00058 virtualDatabaseName); 00059 AbstractScheduler scheduler = vdb.getRequestManager().getScheduler(); 00060 return this.getValue(scheduler); 00061 } 00062 00063 /** 00064 * Get information on the scheduler retrieved by <code>collectValue()</code> 00065 * 00066 * @param scheduler to get value from 00067 * @return collected value 00068 */ 00069 public abstract long getValue(Object scheduler); 00070 00071 00072 00073 /** 00074 * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#getTargetName() 00075 */ 00076 public String getTargetName() 00077 { 00078 return virtualDatabaseName; 00079 } 00080 }