00001 #ifndef FDO_ORACLEOVCLASSDEFINITION_H
00002 #define FDO_ORACLEOVCLASSDEFINITION_H
00003 //
00004 //
00005 // (C) Copyright 1990-2005 by Autodesk, Inc.
00006 //
00007 //
00008 //
00009 // By using this code, you are agreeing to the terms
00010 // and conditions of the License Agreement that appeared
00011 // and was accepted upon download or installation
00012 // (or in connection with the download or installation)
00013 // of the Autodesk software in which this code is included.
00014 // All permissions on use of this code are as set forth
00015 // in such License Agreement provided that the above copyright
00016 // notice appears in all authorized copies and that both that
00017 // copyright notice and the limited warranty and
00018 // restricted rights notice below appear in all supporting
00019 // documentation.
00020 //
00021 // AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
00022 // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
00023 // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE. AUTODESK, INC.
00024 // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
00025 // UNINTERRUPTED OR ERROR FREE.
00026 //
00027 // Use, duplication, or disclosure by the U.S. Government is subject to
00028 // restrictions set forth in FAR 52.227-19 (Commercial Computer
00029 // Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
00030 // (Rights in Technical Data and Computer Software), as applicable.
00031 //
00032 #include <Rdbms/Override/RdbmsOvClassDefinition.h>
00033 #include <Rdbms/Override/Oracle/OracleOv.h>
00034 #include <Rdbms/Override/Oracle/OracleOvDataPropertyDefinition.h>
00035 #include <Rdbms/Override/Oracle/OracleOvGeometricPropertyDefinition.h>
00036 #include <Rdbms/Override/Oracle/OracleOvObjectPropertyDefinition.h>
00037 #include <Rdbms/Override/Oracle/OracleOvPropertyDefinitionCollection.h>
00038 #include <Rdbms/Override/Oracle/OracleOvTable.h>
00039 #include <Rdbms/Override/Oracle/OracleOvGeometricColumn.h>
00040
00041 /// \brief
00042 /// Concrete class defining physical schema overrides for a class definition.
00043 class FdoOracleOvClassDefinition : public FdoRdbmsOvClassDefinition
00044 {
00045
00046 public:
00047 /// \brief
00048 /// Constructs a default of an FdoOracleOvClassDefinition
00049 ///
00050 /// \return
00051 /// Returns FdoOracleOvClassDefinition
00052 ///
00053 FDOORACLE_OV_API static FdoOracleOvClassDefinition* Create();
00054
00055 /// \brief
00056 /// Constructs an instance of an FdoOracleOvClassDefinition using the specified arguments
00057 ///
00058 /// \param name
00059 /// Input name
00060 ///
00061 /// \return
00062 /// Returns FdoOracleOvClassDefinition
00063 ///
00064 FDOORACLE_OV_API static FdoOracleOvClassDefinition* Create(FdoString* name);
00065
00066 /// \brief
00067 /// Gets a collection of Oracle property overrides
00068 ///
00069 /// \return
00070 /// Returns the collection of Oracle property overrides
00071 ///
00072 FDOORACLE_OV_API FdoOracleOvPropertyDefinitionCollection* GetProperties();
00073
00074 /// \brief
00075 /// Gets the Oracle table override for this class override
00076 ///
00077 /// \return
00078 /// Returns FdoOracleOvTable
00079 ///
00080 FDOORACLE_OV_API FdoOracleOvTable* GetTable();
00081
00082 /// \brief
00083 /// Sets the Oracle table override for this class override
00084 ///
00085 /// \param name
00086 /// Input Oracle table override
00087 ///
00088 /// \return
00089 /// Returns nothing
00090 ///
00091 FDOORACLE_OV_API void SetTable(FdoOracleOvTable* table);
00092
00093 /// \cond DOXYGEN-IGNORE
00094
00095 /// Sets the parent of this object. Not part of the API.
00096 void SetParent(FdoPhysicalElementMapping* value);
00097
00098 /// \endcond
00099
00100 protected:
00101 FdoOracleOvClassDefinition();
00102 FdoOracleOvClassDefinition(FdoString *name);
00103
00104 virtual ~FdoOracleOvClassDefinition();
00105 void Init();
00106 virtual void Dispose();
00107
00108 /// Create table override from XML attributes
00109 virtual void SetTable(
00110 FdoXmlSaxContext* context,
00111 FdoXmlAttributeCollection* atts
00112 );
00113
00114 /// Create data property override from XML attributes
00115 virtual FdoRdbmsOvDataPropertyDefinition* CreateDataProperty(
00116 FdoXmlSaxContext* context,
00117 FdoXmlAttributeCollection* propAtts,
00118 FdoXmlAttributeCollection* colAtts
00119 );
00120
00121 /// Create geometric property override from XML attributes
00122 virtual FdoRdbmsOvGeometricPropertyDefinition* CreateGeometricProperty(
00123 FdoXmlSaxContext* context,
00124 FdoXmlAttributeCollection* propAtts,
00125 FdoXmlAttributeCollection* colAtts
00126 );
00127
00128 /// Create object property override from XML attributes
00129 virtual FdoRdbmsOvObjectPropertyDefinition* CreateObjectProperty(
00130 FdoXmlSaxContext* context,
00131 FdoXmlAttributeCollection* propAtts,
00132 FdoString* mappingType,
00133 FdoXmlAttributeCollection* mappingAtts
00134 );
00135
00136 /// Add the given property override to this class override
00137 virtual void AddProperty(
00138 FdoRdbmsOvPropertyDefinition* pProp
00139 );
00140
00141 private:
00142 FdoOracleOvPropertiesP mPropertyDefinitions;
00143 };
00144
00145
00146 /// \brief
00147 /// FdoOracleOvClassP is a FdoPtr on FdoOracleOvClassDefinition, provided for convenience.
00148 typedef FdoPtr<FdoOracleOvClassDefinition> FdoOracleOvClassP;
00149
00150 #endif
00151
00152