00001 #ifndef FDO_MySQLOVOBJECTPROPERTYDEFINITION_H
00002 #define FDO_MySQLOVOBJECTPROPERTYDEFINITION_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 <Fdo/Commands/Schema/PhysicalElementMapping.h>
00021 #include <Rdbms/Override/RdbmsOvObjectPropertyDefinition.h>
00022 #include <Rdbms/Override/MySQL/MySqlOv.h>
00023 #include <Rdbms/Override/MySQL/MySqlOvPropertyMappingDefinition.h>
00024 #include <Rdbms/Override/MySQL/MySqlOvPropertyDefinition.h>
00025 #include <Rdbms/Override/MySQL/MySqlOvPropertyMappingClass.h>
00026 #include <Rdbms/Override/MySQL/MySqlOvPropertyMappingConcrete.h>
00027 #include <Rdbms/Override/MySQL/MySqlOvPropertyMappingSingle.h>
00028
00029 /// \brief
00030 /// Concrete class defining physical schema overrides for an object property definition.
00031 class FdoMySQLOvObjectPropertyDefinition : public FdoRdbmsOvObjectPropertyDefinition, public FdoMySQLOvPropertyDefinition
00032 {
00033 public:
00034 /// \brief
00035 /// Constructs a default of an FdoMySQLOvObjectPropertyDefinition
00036 ///
00037 /// \return
00038 /// Returns FdoMySQLOvObjectPropertyDefinition
00039 ///
00040 FDOMYSQL_OV_API static FdoMySQLOvObjectPropertyDefinition* Create();
00041
00042 /// \brief
00043 /// Constructs an instance of an FdoMySQLOvObjectPropertyDefinition using the specified arguments
00044 ///
00045 /// \param name
00046 /// Input name
00047 ///
00048 /// \return
00049 /// Returns FdoMySQLOvObjectPropertyDefinition
00050 ///
00051 FDOMYSQL_OV_API static FdoMySQLOvObjectPropertyDefinition* Create(FdoString* name);
00052
00053 /// \brief
00054 /// Gets the mapping definition
00055 ///
00056 /// \return
00057 /// Returns the mapping definition
00058 ///
00059 FDOMYSQL_OV_API FdoMySQLOvPropertyMappingDefinition* GetMappingDefinition();
00060
00061 /// \brief
00062 /// Sets the mapping definition
00063 ///
00064 /// \return
00065 /// Returns nothing
00066 ///
00067 FDOMYSQL_OV_API void SetMappingDefinition(FdoMySQLOvPropertyMappingDefinition* propertyMappingDefinition);
00068
00069 protected:
00070 FdoMySQLOvObjectPropertyDefinition();
00071 FdoMySQLOvObjectPropertyDefinition(FdoString* name);
00072 virtual ~FdoMySQLOvObjectPropertyDefinition();
00073 virtual void Dispose();
00074
00075 /// Create and optionally attach a Single table property mapping.
00076 virtual FdoRdbmsOvPropertyMappingSingle* CreateSingleMapping(
00077 bool attach
00078 );
00079
00080 /// Create and optionally attach a Class table property mapping.
00081 virtual FdoRdbmsOvPropertyMappingClass* CreateClassMapping(
00082 bool attach
00083 );
00084
00085 /// Create and optionally attach a Concrete table property mapping.
00086 virtual FdoRdbmsOvPropertyMappingConcrete* CreateConcreteMapping(
00087 bool attach
00088 );
00089
00090 private:
00091 };
00092
00093
00094 /// \brief
00095 /// FdoMySQLOvObjectPropertyP is a FdoPtr on FdoMySQLOvObjectPropertyDefinition, provided for convenience.
00096 typedef FdoPtr<FdoMySQLOvObjectPropertyDefinition> FdoMySQLOvObjectPropertyP;
00097
00098 #endif
00099
00100