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

AbstractBackendDataCollector.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.backend;
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.backend.DatabaseBackend;
00030 import org.objectweb.cjdbc.controller.core.Controller;
00031 import org.objectweb.cjdbc.controller.virtualdatabase.VirtualDatabase;
00032 
00033 /**
00034  * Abstract class to factor code for collecting data from backends
00035  * 
00036  * @author <a href="mailto:Nicolas.Modrzyk@inrialpes.fr">Nicolas Modrzyk</a>
00037  */
00038 public abstract class AbstractBackendDataCollector
00039     extends
00040       AbstractDataCollector
00041 {
00042   private String backendName;
00043   private String virtualDatabaseName;
00044 
00045   /**
00046    * Create new collector
00047    * 
00048    * @param backendName of the backend to get data from
00049    * @param virtualDatabaseName that contains reference to this backend
00050    */
00051   public AbstractBackendDataCollector(String backendName,
00052       String virtualDatabaseName)
00053   {
00054     super();
00055     this.backendName = backendName;
00056     this.virtualDatabaseName = virtualDatabaseName;
00057   }
00058 
00059   /**
00060    * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#collectValue()
00061    */
00062   public long collectValue() throws DataCollectorException
00063   {
00064     try
00065     {
00066       VirtualDatabase vdb = ((Controller)controller).getVirtualDatabase(
00067           virtualDatabaseName);
00068       DatabaseBackend db = vdb.getAndCheckBackend(backendName,
00069           VirtualDatabase.NO_CHECK_BACKEND);
00070       return this.getValue(db);
00071     }
00072     catch (Exception e)
00073     {
00074       throw new DataCollectorException(ExceptionTypes.BACKEND_NOT_ACCESSIBLE);
00075     }
00076   }
00077 
00078   /**
00079    * get the proper collected value when we have instace of the backend 
00080    * @param backend <code>DatabaseBackend</code> instance
00081    * @return collected value
00082    */
00083   public abstract long getValue(Object backend);
00084   
00085   
00086 
00087   /**
00088    * @see org.objectweb.cjdbc.common.monitor.AbstractDataCollector#getTargetName()
00089    */
00090   public String getTargetName()
00091   {
00092     return backendName;
00093   }
00094 }

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