00001 #ifndef FDO_RDBMSOVOBJECTPROPERTYDEFINITION_H 00002 #define FDO_RDBMSOVOBJECTPROPERTYDEFINITION_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 00021 /// FdoRdbms.lib 00022 00023 #include <Rdbms/Override/RdbmsOv.h> 00024 #include <Rdbms/Override/RdbmsOvPropertyDefinition.h> 00025 #include <Rdbms/Override/RdbmsOvPropertyMappingClass.h> 00026 #include <Rdbms/Override/RdbmsOvPropertyMappingConcrete.h> 00027 #include <Rdbms/Override/RdbmsOvPropertyMappingSingle.h> 00028 00029 ///<summary>Abstract class defining physical schema overrides for an object property 00030 ///definition.</summary> 00031 class FdoRdbmsOvObjectPropertyDefinition : virtual public FdoRdbmsOvPropertyDefinition 00032 { 00033 public: 00034 ///<summary>Gets the object property mapping definition</summary> 00035 /// <returns>Returns FdoRdbmsOvPropertyMappingDefinition</returns> 00036 FDORDBMS_OV_API FdoRdbmsOvPropertyMappingDefinition* GetMappingDefinition(); 00037 00038 /// \cond DOXYGEN-IGNORE 00039 00040 // XML Serialization functions, not part of API. 00041 00042 // Initialize this element from its XML attributes 00043 FDORDBMS_OV_API virtual void InitFromXml( 00044 FdoXmlSaxContext* pContext, 00045 FdoXmlAttributeCollection* attrs, 00046 FdoString* mappingType, 00047 FdoXmlAttributeCollection* mappingAttrs 00048 ); 00049 00050 // Create and optionally attach a Single table property mapping. 00051 FDORDBMS_OV_API virtual FdoRdbmsOvPropertyMappingSingle* CreateSingleMapping( 00052 bool attach // if true then make the new mapping the property mapping for 00053 // this object property. Replaces any previous mapping 00054 ) 00055 { 00056 return NULL; 00057 //TODO: exception 00058 } 00059 00060 // Create and optionally attach a Class table property mapping. 00061 FDORDBMS_OV_API virtual FdoRdbmsOvPropertyMappingClass* CreateClassMapping( 00062 bool attach // if true then make the new mapping the property mapping for 00063 // this object property. Replaces any previous mapping 00064 ) 00065 { 00066 return NULL; 00067 //TODO: exception 00068 } 00069 00070 // Create and optionally attach a Concrete table property mapping. 00071 FDORDBMS_OV_API virtual FdoRdbmsOvPropertyMappingConcrete* CreateConcreteMapping( 00072 bool attach // if true then make the new mapping the property mapping for 00073 // this object property. Replaces any previous mapping 00074 ) 00075 { 00076 return NULL; 00077 //TODO: exception 00078 } 00079 00080 /// \endcond 00081 00082 00083 protected: 00084 FDORDBMS_OV_API FdoRdbmsOvObjectPropertyDefinition(); 00085 FDORDBMS_OV_API FdoRdbmsOvObjectPropertyDefinition(FdoString* name); 00086 FDORDBMS_OV_API virtual ~FdoRdbmsOvObjectPropertyDefinition(); 00087 00088 // Sets the object property mapping 00089 FDORDBMS_OV_API void SetMappingDefinition(FdoRdbmsOvPropertyMappingDefinition* propertyMappingDefinition); 00090 00091 // Serialize provider-specific parts of this override to XML. 00092 FDORDBMS_OV_API virtual void _writeXmlContents(FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags); 00093 00094 private: 00095 FdoRdbmsOvPropertyMappingP mPropertyMappingDefinition; 00096 }; 00097 00098 ///<summary>FdoRdbmsOvObjectPropertyP is a FdoPtr on FdoRdbmsOvObjectPropertyDefinition, provided for convenience.</summary> 00099 typedef FdoPtr<FdoRdbmsOvObjectPropertyDefinition> FdoRdbmsOvObjectPropertyP; 00100 00101 #endif 00102