- Main Page
- Namespaces
- Classes
- Files

# MySqlOvClassDefinition.h

Go to the documentation of this file.

    00001 #ifndef FDO_MySQLOVCLASSDEFINITION_H
    00002 #define FDO_MySQLOVCLASSDEFINITION_H
    00003 //
    00004 //
    00005 // Copyright (C) 2004-2006  Autodesk, Inc.
    00006 //
    00007 // This library is free software; you can redistribute it and/or
    00008 // modify it under the terms of version 2.1 of the GNU Lesser
    00009 // General Public License as published by the Free Software Foundation.
    00010 //
    00011 // This library is distributed in the hope that it will be useful,
    00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014 // Lesser General Public License for more details.
    00015 //
    00016 // You should have received a copy of the GNU Lesser General Public
    00017 // License along with this library; if not, write to the Free Software
    00018 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    00019 //
    00020 #include <Rdbms/Override/RdbmsOvClassDefinition.h>
    00021 #include <Rdbms/Override/MySQL/MySqlOv.h>
    00022 #include <Rdbms/Override/MySQL/MySqlOvDataPropertyDefinition.h>
    00023 #include <Rdbms/Override/MySQL/MySqlOvGeometricPropertyDefinition.h>
    00024 #include <Rdbms/Override/MySQL/MySqlOvObjectPropertyDefinition.h>
    00025 #include <Rdbms/Override/MySQL/MySqlOvPropertyDefinitionCollection.h>
    00026 #include <Rdbms/Override/MySQL/MySqlOvTable.h>
    00027 #include <Rdbms/Override/MySQL/MySqlOvGeometricColumn.h>
    00028
    00029 /// \brief
    00030 /// Concrete class defining physical schema overrides for a class definition.
    00031 class FdoMySQLOvClassDefinition : public FdoRdbmsOvClassDefinition
    00032 {
    00033
    00034 public:
    00035     /// \brief
    00036     /// Constructs a default of an FdoMySQLOvClassDefinition
    00037     ///
    00038     /// \return
    00039     /// Returns FdoMySQLOvClassDefinition
    00040     ///
    00041     FDOMYSQL_OV_API static FdoMySQLOvClassDefinition* Create();
    00042
    00043     /// \brief
    00044     /// Constructs an instance of an FdoMySQLOvClassDefinition using the specified arguments
    00045     ///
    00046     /// \param name
    00047     /// Input name
    00048     ///
    00049     /// \return
    00050     /// Returns FdoMySQLOvClassDefinition
    00051     ///
    00052     FDOMYSQL_OV_API static FdoMySQLOvClassDefinition* Create(FdoString* name);
    00053
    00054     /// \brief
    00055     /// Gets a collection of MySQL property overrides
    00056     ///
    00057     /// \return
    00058     /// Returns the collection of MySQL property overrides
    00059     ///
    00060     FDOMYSQL_OV_API FdoMySQLOvPropertyDefinitionCollection* GetProperties();
    00061
    00062     /// \brief
    00063     /// Gets the MySQL table override for this class override
    00064     ///
    00065     /// \return
    00066     /// Returns FdoMySQLOvTable
    00067     ///
    00068     FDOMYSQL_OV_API FdoMySQLOvTable* GetTable();
    00069
    00070     /// \brief
    00071     /// Sets the MySQL table override for this class override
    00072     ///
    00073     /// \param table
    00074     /// Input MySQL table override
    00075     ///
    00076     /// \return
    00077     /// Returns nothing
    00078     ///
    00079     FDOMYSQL_OV_API void SetTable(FdoMySQLOvTable* table);
    00080
    00081     /// \brief
    00082     /// Which FDO property maps to an MySQL auto-increment column, if any.
    00083     ///
    00084     /// \remarks
    00085     /// An empty string indicates
    00086     /// there is no such column on this class’s table.  There can only be at most one auto-increment column
    00087     /// per table, it must be indexed, and it cannot have a default value.  As of MySQL 3.23, an AutoIncrement
    00088     /// column works properly only if it contains only positive values.  Inserting a negative number is
    00089     /// regarded as inserting a very large positive number.  For MyISAM and BDB tables, you can specify an
    00090     /// AUTO_INCREMENT secondary column in a multiple-column key.  The first value in an AutoIncrement column
    00091     /// is always 1 and always increments by 1 for each new value.  This override is ignored on ApplySchema if
    00092     /// this class refers to an existing table in a foreign database.
    00093     ///
    00094     /// \param autoIncrementPropertyName
    00095     /// Input the property name
    00096     ///
    00097     /// \return
    00098     /// Returns nothing
    00099     ///
    00100     FDOMYSQL_OV_API void SetAutoIncrementPropertyName(FdoString* autoIncrementPropertyName);
    00101
    00102     /// \brief
    00103     /// Gets which FDO property corresponds to the single MySQL auto-increment column
    00104     ///
    00105     /// \return
    00106     /// Returns the FDO property corresponding to the single MySQL auto-increment column,
    00107     /// or an empty string if there is no such property
    00108     ///
    00109     FDOMYSQL_OV_API FdoString* GetAutoIncrementPropertyName(void);
    00110
    00111     /// \brief
    00112     /// The initial value to use for the first row in the auto-increment column, if any.
    00113     ///
    00114     /// \remarks
    00115     /// This override is only valid if the AutoIncrementProperty override is set to a non-empty string.
    00116     /// This works only for the following storage engine types: MyISAM, MEMORY as of MySQL 4.1, and InnoDB
    00117     /// as of MySQL 5.0.3.  This override is ignored on ApplySchema if this table is an existing table in
    00118     /// a foreign database.
    00119     ///
    00120     /// \return
    00121     /// Returns the initial value to use for the first row in the auto-increment column
    00122     ///
    00123     FDOMYSQL_OV_API FdoInt64 GetAutoIncrementSeed(void);
    00124
    00125     /// \brief
    00126     /// Sets the initial value to use for the first row in the auto-increment column, if any
    00127     ///
    00128     /// \return
    00129     /// Returns nothing
    00130     ///
    00131     FDOMYSQL_OV_API void SetAutoIncrementSeed(FdoInt64 autoIncrementSeed);
    00132
    00133
    00134 /// \cond DOXYGEN-IGNORE
    00135
    00136     /// Sets the parent of this object. Not part of the API.
    00137     void SetParent(FdoPhysicalElementMapping* value);
    00138
    00139     /// Initialize this element from its XML attributes
    00140     virtual void InitFromXml(FdoXmlSaxContext* pContext, FdoXmlAttributeCollection* attrs);
    00141
    00142     /// Serialize the XML attributes of this class:
    00143     virtual void _writeXmlAttributes(FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags);
    00144
    00145 /// \endcond
    00146
    00147 protected:
    00148     FdoMySQLOvClassDefinition();
    00149     FdoMySQLOvClassDefinition(FdoString *name);
    00150
    00151     virtual ~FdoMySQLOvClassDefinition();
    00152     void Init();
    00153     virtual void Dispose();
    00154
    00155     /// Create table override from XML attributes
    00156     virtual void SetTable(
    00157         FdoXmlSaxContext* context,
    00158         FdoXmlAttributeCollection* atts
    00159     );
    00160
    00161     /// Create data property override from XML attributes
    00162     virtual FdoRdbmsOvDataPropertyDefinition* CreateDataProperty(
    00163         FdoXmlSaxContext* context,
    00164         FdoXmlAttributeCollection* propAtts,
    00165         FdoXmlAttributeCollection* colAtts
    00166     );
    00167
    00168     /// Create geometric property override from XML attributes
    00169     virtual FdoRdbmsOvGeometricPropertyDefinition* CreateGeometricProperty(
    00170         FdoXmlSaxContext* context,
    00171         FdoXmlAttributeCollection* propAtts,
    00172         FdoXmlAttributeCollection* colAtts
    00173     );
    00174
    00175     /// Create object property override from XML attributes
    00176     virtual FdoRdbmsOvObjectPropertyDefinition* CreateObjectProperty(
    00177         FdoXmlSaxContext* context,
    00178         FdoXmlAttributeCollection* propAtts,
    00179         FdoString* mappingType,
    00180         FdoXmlAttributeCollection* mappingAtts
    00181     );
    00182
    00183     /// Add the given property override to this class override
    00184     virtual void AddProperty(
    00185         FdoRdbmsOvPropertyDefinition* pProp
    00186     );
    00187
    00188 private:
    00189     FdoMySQLOvPropertiesP  mPropertyDefinitions;
    00190     FdoInt64  mAutoIncrementSeed;
    00191     FdoStringP  mAutoIncrementPropertyName;
    00192 };
    00193
    00194
    00195 /// \brief
    00196 /// FdoMySQLOvClassP is a FdoPtr on FdoMySQLOvClassDefinition, provided for convenience.
    00197 typedef FdoPtr<FdoMySQLOvClassDefinition> FdoMySQLOvClassP;
    00198
    00199 #endif
    00200
    00201

Please send us your comment about this page