00001 #ifndef FDO_RDBMSOVPROPERTYMAPPINGRELATION_H
00002 #define FDO_RDBMSOVPROPERTYMAPPINGRELATION_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 /// <library>
00022 /// FdoRdbms.lib
00023 /// </library>
00024
00025
00026 #include <Rdbms/Override/RdbmsOv.h>
00027 #include <Rdbms/Override/RdbmsOvPropertyMappingDefinition.h>
00028
00029 class FdoRdbmsOvClassDefinition;
00030
00031 ///<summary>
00032 ///Abstract class defining the physical schema overrides for relation type
00033 ///object property table mappings.
00034 ///</summary>
00035 class FdoRdbmsOvPropertyMappingRelation : public virtual FdoRdbmsOvPropertyMappingDefinition
00036 {
00037
00038 public:
00039
00040 ///<summary>Gets the internal class</summary>
00041 /// <returns>Returns the internal class</returns>
00042 FDORDBMS_OV_API FdoRdbmsOvClassDefinition* GetInternalClass();
00043
00044 //DOM-IGNORE-BEGIN
00045
00046 // Serialize this property to XML. Not part of the API.
00047 FDORDBMS_OV_API virtual void _writeXml(FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags);
00048
00049 // Creates and optionally attaches an internal class override object.
00050 FDORDBMS_OV_API virtual FdoRdbmsOvClassDefinition* CreateInternalClass(
00051 bool attach // if true then make the new class the internal class for
00052 // this property mapping. Replaces any previous internal class
00053 )
00054 {
00055 // TODO: throw exception.
00056 return NULL;
00057 }
00058 //DOM-IGNORE-END
00059
00060 protected:
00061 FDORDBMS_OV_API FdoRdbmsOvPropertyMappingRelation();
00062 FDORDBMS_OV_API virtual ~FdoRdbmsOvPropertyMappingRelation();
00063
00064 ///<summary>Sets the internal class</summary>
00065 /// <returns>Returns nothing</returns>
00066 FDORDBMS_OV_API void SetInternalClass(FdoRdbmsOvClassDefinition* classDefinition);
00067
00068 // Handle start of sub-elements when deserializing from XML.
00069 FDORDBMS_OV_API virtual FdoXmlSaxHandler* XmlStartElement(
00070 FdoXmlSaxContext* context,
00071 FdoString* uri,
00072 FdoString* name,
00073 FdoString* qname,
00074 FdoXmlAttributeCollection* atts
00075 );
00076
00077 // Handle end of sub-elements when deserializing from XML.
00078 FDORDBMS_OV_API virtual FdoBoolean XmlEndElement(
00079 FdoXmlSaxContext* context,
00080 FdoString* uri,
00081 FdoString* name,
00082 FdoString* qname
00083 );
00084
00085
00086 private:
00087 FdoPtr<FdoRdbmsOvClassDefinition> mClassDefinition;
00088 };
00089
00090 ///<summary>
00091 ///FdoRdbmsOvPropertyMappingRelationP is a FdoPtr on
00092 ///FdoRdbmsOvPropertyMappingRelation, provided for convenience.
00093 ///</summary>
00094 typedef FdoPtr<FdoRdbmsOvPropertyMappingRelation> FdoRdbmsOvPropertyMappingRelationP;
00095
00096 #endif
00097