00001 #ifndef FDO_SqlServerOVOBJECTPROPERTYDEFINITION_H
00002 #define FDO_SqlServerOVOBJECTPROPERTYDEFINITION_H
00003 /*
00004 * Copyright (C) 2004-2008 Autodesk, Inc.
00005 *
00006 * This library is free software; you can redistribute it and/or
00007 * modify it under the terms of version 2.1 of the GNU Lesser
00008 * General Public License as published by the Free Software Foundation.
00009 *
00010 * This library is distributed in the hope that it will be useful,
00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00013 * Lesser General Public License for more details.
00014 *
00015 * You should have received a copy of the GNU Lesser General Public
00016 * License along with this library; if not, write to the Free Software
00017 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00018 *
00019 */
00020 #include <Fdo/Commands/Schema/PhysicalElementMapping.h>
00021 #include <Rdbms/Override/RdbmsOvObjectPropertyDefinition.h>
00022 #include <Rdbms/Override/SQLServerSpatial/SqlServerOv.h>
00023 #include <Rdbms/Override/SQLServerSpatial/SqlServerOvPropertyMappingDefinition.h>
00024 #include <Rdbms/Override/SQLServerSpatial/SqlServerOvPropertyDefinition.h>
00025 #include <Rdbms/Override/SQLServerSpatial/SqlServerOvPropertyMappingClass.h>
00026 #include <Rdbms/Override/SQLServerSpatial/SqlServerOvPropertyMappingConcrete.h>
00027 #include <Rdbms/Override/SQLServerSpatial/SqlServerOvPropertyMappingSingle.h>
00028
00029 /// \brief
00030 /// Concrete class defining physical schema overrides for an object property definition.
00031 class FdoSqlServerOvObjectPropertyDefinition : public FdoRdbmsOvObjectPropertyDefinition, public FdoSqlServerOvPropertyDefinition
00032 {
00033 public:
00034 /// \brief
00035 /// Constructs a default of an FdoSqlServerOvObjectPropertyDefinition
00036 ///
00037 /// \return
00038 /// Returns FdoSqlServerOvObjectPropertyDefinition
00039 ///
00040 FDOSQLSERVER_OV_API static FdoSqlServerOvObjectPropertyDefinition* Create();
00041
00042 /// \brief
00043 /// Constructs an instance of an FdoSqlServerOvObjectPropertyDefinition using the specified arguments
00044 ///
00045 /// \param name
00046 /// Input name
00047 ///
00048 /// \return
00049 /// Returns FdoSqlServerOvObjectPropertyDefinition
00050 ///
00051 FDOSQLSERVER_OV_API static FdoSqlServerOvObjectPropertyDefinition* Create(FdoString* name);
00052
00053 /// \brief
00054 /// Gets the mapping definition
00055 ///
00056 /// \return
00057 /// Returns the mapping definition
00058 ///
00059 FDOSQLSERVER_OV_API FdoSqlServerOvPropertyMappingDefinition* GetMappingDefinition();
00060
00061 /// \brief
00062 /// Sets the mapping definition
00063 ///
00064 /// \return
00065 /// Returns nothing
00066 ///
00067 FDOSQLSERVER_OV_API void SetMappingDefinition(FdoSqlServerOvPropertyMappingDefinition* propertyMappingDefinition);
00068
00069 protected:
00070 FdoSqlServerOvObjectPropertyDefinition();
00071 FdoSqlServerOvObjectPropertyDefinition(FdoString* name);
00072 virtual ~FdoSqlServerOvObjectPropertyDefinition();
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 /// FdoSqlServerOvObjectPropertyP is a FdoPtr on FdoSqlServerOvObjectPropertyDefinition, provided for convenience.
00096 typedef FdoPtr<FdoSqlServerOvObjectPropertyDefinition> FdoSqlServerOvObjectPropertyP;
00097
00098 #endif
00099
00100