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; 00025 00026 import java.io.Serializable; 00027 00028 import org.objectweb.cjdbc.common.exceptions.DataCollectorException; 00029 00030 00031 /** 00032 * This defines the abstract hierachy to collect monitoring information. 00033 * All monitored information from the controller should extends this class. 00034 * <code>collectValue</code> can therefore NOT be called directly on the client 00035 * side. 00036 * Instead, the client should be only given the returned result. 00037 * 00038 * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk</a> 00039 * 00040 */ 00041 public abstract class AbstractDataCollector implements Serializable 00042 { 00043 protected transient Object controller; 00044 00045 /** 00046 * This is used on the controller side to collect information 00047 * @return the value collected by this collectorsardes@inrialpes.fr 00048 * @throws DataCollectorException if fails to collect the information 00049 */ 00050 public abstract long collectValue() throws DataCollectorException; 00051 00052 /** 00053 * Get a string description for this collector 00054 * @return translated string 00055 */ 00056 public abstract String getDescription(); 00057 00058 /** 00059 * Return the name of the target of this collector 00060 * @return target name 00061 */ 00062 public abstract String getTargetName(); 00063 00064 /** 00065 * associated a controller to this data collector 00066 * 00067 * @param controller to associate 00068 */ 00069 public void setController(Object controller) 00070 { 00071 this.controller = controller; 00072 } 00073 00074 00075 }