casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
DataManError.h
Go to the documentation of this file.
00001 //# DataManError.h: Data manager error classes
00002 //# Copyright (C) 1994,1995,1996,1999,2000,2003
00003 //# Associated Universities, Inc. Washington DC, USA.
00004 //#
00005 //# This library is free software; you can redistribute it and/or modify it
00006 //# under the terms of the GNU Library General Public License as published by
00007 //# the Free Software Foundation; either version 2 of the License, or (at your
00008 //# option) any later version.
00009 //#
00010 //# This library is distributed in the hope that it will be useful, but WITHOUT
00011 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00012 //# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
00013 //# License for more details.
00014 //#
00015 //# You should have received a copy of the GNU Library General Public License
00016 //# along with this library; if not, write to the Free Software Foundation,
00017 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
00018 //#
00019 //# Correspondence concerning AIPS++ should be addressed as follows:
00020 //#        Internet email: aips2-request@nrao.edu.
00021 //#        Postal address: AIPS++ Project Office
00022 //#                        National Radio Astronomy Observatory
00023 //#                        520 Edgemont Road
00024 //#                        Charlottesville, VA 22903-2475 USA
00025 //#
00026 //# $Id: DataManError.h 20551 2009-03-25 00:11:33Z Malte.Marquarding $
00027 
00028 #ifndef TABLES_DATAMANERROR_H
00029 #define TABLES_DATAMANERROR_H
00030 
00031 //# Includes
00032 #include <casa/aips.h>
00033 #include <casa/Exceptions/Error.h>
00034 
00035 namespace casa { //# NAMESPACE CASA - BEGIN
00036 
00037 //# This header file defines the error classes used in the
00038 //# data manager classes.
00039 
00040 
00041 // <summary>
00042 // Base error class for table data manager
00043 // </summary>
00044 // <use visibility=export>
00045 // <reviewed reviewer="Gareth Hunt" date="94Nov17" tests="">
00046 // </reviewed>
00047 
00048 // <synopsis> 
00049 // This is the generic data manager exception; catching this one means
00050 // catching all DataMan* exceptions.
00051 // Note that you have to catch AipsError to catch all possible exceptions.
00052 // </synopsis> 
00053 
00054 class DataManError : public AipsError {
00055 public:
00056     // The default constructor generates the message "Table DataManager error".
00057     DataManError ();
00058     // Construct with given message.
00059     DataManError (const String& message);
00060     ~DataManError () throw();
00061 };
00062 
00063 
00064 // <summary>
00065 // Internal table data manager error
00066 // </summary>
00067 // <use visibility=export>
00068 // <reviewed reviewer="Gareth Hunt" date="94Nov17" tests="">
00069 // </reviewed>
00070 
00071 // <synopsis> 
00072 // Internal data manager error (should never be thrown).
00073 // If this is thrown, something is terribly wrong.
00074 // </synopsis> 
00075 
00076 class DataManInternalError : public DataManError {
00077 public:
00078     // Add given message to string "Internal Table DataManager error: ".
00079     DataManInternalError (const String& message);
00080     ~DataManInternalError () throw();
00081 };
00082 
00083 
00084 // <summary>
00085 // Table DataManager error; invalid data manager
00086 // </summary>
00087 // <use visibility=export>
00088 // <reviewed reviewer="Gareth Hunt" date="94Nov17" tests="">
00089 // </reviewed>
00090 
00091 // <synopsis> 
00092 // A data manager is unknown (i.e. not registered in DataManReg.cc).
00093 // This means that the data manager object cannot be recreated.
00094 // </synopsis> 
00095 
00096 class DataManUnknownCtor : public DataManError {
00097 public:
00098     // This constructor generates a message that a data manager
00099     // with the given name is unknown (i.e. not registered).
00100     DataManUnknownCtor (const String& columnName);
00101     ~DataManUnknownCtor () throw();
00102 };
00103 
00104 
00105 // <summary>
00106 // Table DataManager error; invalid data type
00107 // </summary>
00108 // <use visibility=export>
00109 // <reviewed reviewer="Gareth Hunt" date="94Nov17" tests="">
00110 // </reviewed>
00111 
00112 // <synopsis> 
00113 // Invalid data type used in the data manager.
00114 // The data manager found an unknown data type when doing a get or put.
00115 // In principle this error should never occur.
00116 // </synopsis> 
00117 
00118 class DataManInvDT : public DataManError {
00119 public:
00120     // The default constructor generates a generic "invalid data type" message.
00121     DataManInvDT ();
00122     // Put the name of the offending column in the "invalid data type" message.
00123     DataManInvDT (const String& columnName);
00124     ~DataManInvDT () throw();
00125 };
00126 
00127 
00128 
00129 // <summary>
00130 // Table DataManager error; invalid operation
00131 // </summary>
00132 // <use visibility=export>
00133 // <reviewed reviewer="Gareth Hunt" date="94Nov17" tests="">
00134 // </reviewed>
00135 
00136 // <synopsis> 
00137 // Invalid operation on a data manager.
00138 // A request was done that the data manager could not handle.
00139 // In principle the table system should already test on such operations
00140 // and it should not bother the data manager with invalid requests.
00141 // However, the data manager still tests them for safety.
00142 // </synopsis> 
00143 
00144 class DataManInvOper : public DataManError {
00145 public:
00146     // The default constructor generates a generic "invalid operation" message.
00147     DataManInvOper ();
00148     // Add given message to string "Invalid DataMan operation: ".
00149     DataManInvOper (const String& message);
00150     ~DataManInvOper () throw();
00151 };
00152 
00153 
00154 // <summary>
00155 // Table DataManager error; unknown virtual column
00156 // </summary>
00157 // <use visibility=export>
00158 // <reviewed reviewer="Gareth Hunt" date="94Nov17" tests="">
00159 // </reviewed>
00160 
00161 // <synopsis> 
00162 // A column is unknown to the virtual column engine.
00163 // This error is caused by binding a column to a virtual column engine
00164 // which does not know the column name or data type.
00165 // </synopsis> 
00166 
00167 class DataManUnknownVirtualColumn : public DataManError {
00168 public:
00169     // Issue a message containing the column name.
00170     DataManUnknownVirtualColumn (const String& columnName,
00171                                  const String& engineName);
00172     ~DataManUnknownVirtualColumn () throw();
00173 };
00174 
00175 
00176 // <summary>
00177 // Table DataManager error; error in TiledStMan
00178 // </summary>
00179 // <use visibility=export>
00180 // <reviewed reviewer="Gareth Hunt" date="94Nov17" tests="">
00181 // </reviewed>
00182 
00183 // <synopsis> 
00184 // An error was made when using the TiledStMan.
00185 // The TiledStMan is quite complex, so it is easy to make mistakes.
00186 // The <linkto class=TiledStMan>TiledStMan</linkto> and related
00187 // classes should be studied carefully.
00188 // </synopsis> 
00189 
00190 class TSMError : public DataManError {
00191 public:
00192     // Issue the message prefixed by "TiledStMan: ".
00193     TSMError (const String& message);
00194     ~TSMError () throw();
00195 };
00196 
00197 
00198 
00199 } //# NAMESPACE CASA - END
00200 
00201 #endif