Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

ReplicationExceptions.h

Go to the documentation of this file.
00001 /* -*- C++ -*-
00002  *
00003  * ReplicationExceptions.h
00004  *
00005  * Copyright (c) 2002 CERN on behalf of the EU DataGrid.
00006  * For license conditions see LICENSE file or 
00007  * http://www.edg.org/license.html
00008  * 
00009  */
00010 #ifndef RMCReplicationExceptions_H
00011 #define RMCReplicationExceptions_H 1
00012 
00013 #include <exception>
00014 #include <string>
00015 
00016 
00023 namespace EdgReplicaMetadataCatalog {
00024 
00029   class ReplicationException : public std::exception {
00030   public:
00031 
00032   public:
00033     ReplicationException() throw() 
00034       : m_faultCode("FAULTABLE") {
00035     }
00036     ReplicationException(const std::string& what) throw() 
00037       : m_what (what), m_faultCode("INTERNAL") {
00038     }
00039     ReplicationException(const std::string& what,
00040                          const std::string& faultCode) throw() 
00041       : m_what (what), m_faultCode(faultCode) {
00042     }
00043     const std::string& faultCode() const throw() {
00044       return m_faultCode;
00045     }
00046     virtual const char* what () const throw() {
00047       return m_what.c_str ();
00048     }
00049     virtual ~ReplicationException() throw(){
00050     }
00051 
00052   private:
00053     std::string m_what;
00054     std::string m_faultCode;
00055 
00056   };
00057       
00058 
00062   class NotImplementedException : public ReplicationException {
00063   public: 
00064     NotImplementedException(const std::string& method) 
00065       : ReplicationException("Not Implemented: " + method),
00066         m_method(method) {
00067     }
00068     virtual ~NotImplementedException() throw(){
00069     }
00070     const std::string& getMethod() const {
00071       return m_method;
00072     }
00073       
00074   private:
00075     const std::string m_method;
00076   };
00077 
00081   class EmptyAttributeNameException : public ReplicationException {
00082   public: 
00083     EmptyAttributeNameException(const std::string& message) 
00084       : ReplicationException(message) {
00085     }
00086     virtual ~EmptyAttributeNameException() throw(){
00087     }
00088   };
00089   
00093   class NoSuchGuidException : public ReplicationException {
00094   public: 
00095     NoSuchGuidException(const std::string& guid) 
00096       : ReplicationException("No Such Guid: " + guid, "NOSUCHGUID"),
00097         m_guid(guid) {
00098     }
00099     virtual ~NoSuchGuidException() throw() {
00100     }
00101     const std::string& getGuid() const {
00102       return m_guid;
00103     }
00104 
00105   private:
00106     const std::string m_guid;
00107   };
00108 
00109   class NoSuchAliasException : public ReplicationException {
00110   public: 
00111     NoSuchAliasException(const std::string& alias) 
00112       : ReplicationException("No Such Alias: " + alias, "NOSUCHALIAS"),
00113         m_alias(alias) {
00114     }
00115     virtual ~NoSuchAliasException() throw(){
00116     }
00117     const std::string& getAlias() const {
00118       return m_alias;
00119     }
00120       
00121   private:
00122     const std::string m_alias;
00123   };
00124 
00125   class AliasExistsException : public ReplicationException {
00126   public: 
00127     AliasExistsException(const std::string& alias) 
00128       : ReplicationException("Alias Exists: " + alias, "ALIASEXISTS"),
00129         m_alias(alias) {
00130     }
00131     virtual ~AliasExistsException() throw(){
00132     }
00133     const std::string& getAlias() const {
00134       return m_alias;
00135     }
00136 
00137   private:
00138     const std::string m_alias;
00139   };
00140 
00144   class AttributeExistsException : public ReplicationException {
00145   public:  
00146     AttributeExistsException(const std::string& message) 
00147       : ReplicationException(message, "ATTRIBUTEEXISTS") {
00148     }
00149     virtual ~AttributeExistsException() throw() {
00150     }
00151   };
00152 
00156   class AttributeDefinitionExistsException : public ReplicationException {
00157   public: 
00158     AttributeDefinitionExistsException(const std::string& message) 
00159       : ReplicationException(message, "ATTRIBUTEDEFNEXISTS") {
00160     }
00161     virtual ~AttributeDefinitionExistsException() throw(){
00162     }
00163   };
00164 
00168   class NoSuchAttributeDefinitionException : public ReplicationException {
00169   public: 
00170     NoSuchAttributeDefinitionException(const std::string& message) 
00171       : ReplicationException(message, "NOSUCHATTRIBUTEDEFN") {
00172     }
00173     virtual ~NoSuchAttributeDefinitionException() throw(){
00174     }
00175   };
00176 
00180   class NoSuchAttributeException : public ReplicationException {
00181   public: 
00182     NoSuchAttributeException(const std::string& message) 
00183       : ReplicationException(message, "NOSUCHATTRIBUTE") {
00184     }
00185     virtual ~NoSuchAttributeException() throw(){
00186     }
00187   };
00188 
00192   class AliasesExistException : public ReplicationException {
00193   public: 
00194     // construct a new AliasesExistException 
00195     AliasesExistException(const std::string& guid) 
00196       : ReplicationException("Aliases Exist for guid : " + guid, "ALIASESEXISTS"),
00197         m_guid(guid) {
00198     }
00199     virtual ~AliasesExistException() throw(){
00200     }
00201     const std::string& getGuid() const {
00202       return m_guid;
00203     }
00204       
00205   private:
00206     const std::string m_guid;
00207   };
00208 
00209   class HasAliasesException : public ReplicationException {
00210   public: 
00211     HasAliasesException(const std::string& guid) 
00212       : ReplicationException("No Such Guid: " + guid, "HASALIASES"),
00213         m_guid(guid) {
00214     }
00215     virtual ~HasAliasesException() throw(){
00216     }
00217     const std::string& getGuid() const {
00218       return m_guid;
00219     }
00220                         
00221   private:
00222     const std::string m_guid;
00223   };
00224 
00228   class ValueTooLongException : public ReplicationException {
00229   public:
00230     ValueTooLongException( const std::string& message )
00231       : ReplicationException(message, "TOOLONGNAME") {
00232     }
00233     virtual ~ValueTooLongException() throw() {
00234     }
00235   };
00236   
00240   class UnappropriateAttributeTypeException : public ReplicationException {
00241   public:
00242     UnappropriateAttributeTypeException( const std::string& message )
00243       : ReplicationException(message, "ATTRTYPENOTGOODFORATTRNAME") {
00244     }
00245     virtual ~UnappropriateAttributeTypeException() throw() {
00246     }
00247   };
00248 
00252   class InvalidQueryException : public ReplicationException {
00253   public:
00254     InvalidQueryException( const std::string& message )
00255       : ReplicationException(message, "INVALIDQUERY") {
00256     }
00257     virtual ~InvalidQueryException() throw() {
00258     }
00259   };
00260         
00264   class UnsupportedAttributeTypeException : public ReplicationException {
00265   public:
00266     UnsupportedAttributeTypeException( const std::string& message )
00267       : ReplicationException(message, "NOSUCHATTRTYPE") {
00268     }
00269     virtual ~UnsupportedAttributeTypeException() throw() {
00270     }
00271   };
00272 
00276   class CommunicationException : public ReplicationException {
00277   public: 
00278     CommunicationException() 
00279       : ReplicationException() {
00280     }
00281     CommunicationException(const std::string& message) 
00282       : ReplicationException(message, "CONNECTION") {
00283     }
00284     virtual ~CommunicationException() throw(){
00285     }
00286   };
00287 
00293   void throwReplicationException(const std::string& fault, const std::string& detail);
00294 }
00295 
00296 
00297 #endif // ReplicationExceptions_H
00298 
The EU DataGrid Project. All rights reserved.