00001 //
00002 // Copyright (C) 2006 Refractions Research, Inc.
00003 //
00004 // This library is free software; you can redistribute it and/or
00005 // modify it under the terms of version 2.1 of the GNU Lesser
00006 // General Public License as published by the Free Software Foundation.
00007 //
00008 // This library is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00011 // Lesser General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU Lesser General Public
00014 // License along with this library; if not, write to the Free Software
00015 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00016 //
00017 #ifndef FDOPOSTGISOVPHYSICALSCHEMAMAPPING_H
00018 #define FDOPOSTGISOVPHYSICALSCHEMAMAPPING_H
00019
00020 #include <Rdbms/Override/RdbmsOvPhysicalSchemaMapping.h>
00021 #include <Rdbms/Override/PostGIS/PostGisOv.h>
00022 #include <Rdbms/Override/PostGIS/PostGisOvClassCollection.h>
00023
00024 /// \brief
00025 /// Concrete class offering physical schema mapping overrides.
00026 /// This class is used in PostGIS schema overrides.
00027 ///
00028 class FdoPostGISOvPhysicalSchemaMapping :
00029 public FdoRdbmsOvPhysicalSchemaMapping
00030 {
00031 public:
00032
00033 /// \brief
00034 /// Constructs a default of an FdoPostGISOvPhysicalSchemaMapping.
00035 ///
00036 /// \return
00037 /// Returns FdoPostGISOvPhysicalSchemaMapping
00038 ///
00039 FDOPOSTGIS_OV_API static FdoPostGISOvPhysicalSchemaMapping* Create();
00040
00041 /// \brief
00042 /// Constructs an instance of an FdoPostGISOvPhysicalSchemaMapping
00043 /// using the specified arguments.
00044 ///
00045 /// \param name
00046 /// Input name
00047 ///
00048 /// \return
00049 /// Returns FdoPostGISOvPhysicalSchemaMapping
00050 ///
00051 FDOPOSTGIS_OV_API static FdoPostGISOvPhysicalSchemaMapping* Create(
00052 FdoString* name);
00053
00054 /// \brief
00055 /// Gets the classes
00056 ///
00057 /// \return
00058 /// Returns the classes
00059 ///
00060 FDOPOSTGIS_OV_API FdoPostGISOvClassCollection* GetClasses();
00061
00062 /// \brief
00063 /// Gets the owner
00064 ///
00065 /// \return
00066 /// Returns the database
00067 ///
00068 FDOPOSTGIS_OV_API FdoString* GetOwner();
00069
00070 /// \brief
00071 /// Sets the owner
00072 ///
00073 /// \return
00074 /// Returns nothing
00075 ///
00076 FDOPOSTGIS_OV_API void SetOwner(FdoString* owner);
00077
00078 /// \brief
00079 /// Gets the provider name
00080 ///
00081 /// \return
00082 /// Returns the provider name
00083 ///
00084 FDOPOSTGIS_OV_API virtual FdoString* GetProvider(void);
00085
00086 /// \cond DOXYGEN-IGNORE
00087
00088 /// XML Serialization functions, not part of API.
00089
00090 /// Serialize this property to XML.
00091 virtual void _writeXmlAttributes(FdoXmlWriter* xmlWriter,
00092 const FdoXmlFlags* flags);
00093
00094 /// Initialize this element from its XML attributes
00095 virtual void InitFromXml(FdoXmlSaxContext* saxContext,
00096 FdoXmlAttributeCollection* attrs);
00097
00098 /// \endcond
00099
00100 protected:
00101
00102 FdoPostGISOvPhysicalSchemaMapping();
00103 FdoPostGISOvPhysicalSchemaMapping(FdoString* name);
00104 virtual ~FdoPostGISOvPhysicalSchemaMapping();
00105 virtual void Dispose();
00106
00107 /// Create a class override from XML attributes
00108 virtual FdoRdbmsOvClassDefinition* CreateClass(
00109 FdoXmlSaxContext* saxContext,
00110 FdoXmlAttributeCollection* atts);
00111
00112 /// Add the given class override to this schema override set
00113 virtual void AddClass(FdoRdbmsOvClassDefinition* classDef);
00114
00115 /// common initializer for all constructors:
00116 void Init();
00117
00118 private:
00119
00120 FdoPostGISOvClassesP mClasses;
00121
00122 FdoStringP mOwner;
00123 };
00124
00125 /// \brief
00126 /// Declaration of smart-pointer type for FdoPostGISOvGeometricColumn.
00127 /// Provided for convenience.
00128 ///
00129 typedef FdoPtr<FdoPostGISOvPhysicalSchemaMapping> FdoPostGISOvSchemaMappingP;
00130
00131 #endif // FDOPOSTGISOVPHYSICALSCHEMAMAPPING_H