00001 #ifndef FDO_RDBMSOVGEOMETRICPROPERTYDEFINITION_H 00002 #define FDO_RDBMSOVGEOMETRICPROPERTYDEFINITION_H 00003 00004 // 00005 // 00006 // Copyright (C) 2004-2006 Autodesk, Inc. 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of version 2.1 of the GNU Lesser 00010 // General Public License as published by the Free Software Foundation. 00011 // 00012 // This library is distributed in the hope that it will be useful, 00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 // Lesser General Public License for more details. 00016 // 00017 // You should have received a copy of the GNU Lesser General Public 00018 // License along with this library; if not, write to the Free Software 00019 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00020 // 00021 00022 /// FdoRdbms.lib 00023 00024 #include <Rdbms/Override/RdbmsOv.h> 00025 #include <Rdbms/Override/RdbmsOvPropertyDefinition.h> 00026 #include <Rdbms/Override/RdbmsOvGeometricColumn.h> 00027 #include <Utilities/SchemaMgr/Overrides/GeometricColumnType.h> 00028 #include <Utilities/SchemaMgr/Overrides/GeometricContentType.h> 00029 00030 ///<summary>Abstract class defining physical schema overrides for a geometric property 00031 ///definition.</summary> 00032 class FdoRdbmsOvGeometricPropertyDefinition : virtual public FdoRdbmsOvPropertyDefinition 00033 { 00034 public: 00035 ///<summary>Gets the column override</summary> 00036 /// <returns>Returns FdoRdbmsOvGeometricColumn</returns> 00037 FDORDBMS_OV_API FdoRdbmsOvGeometricColumn* GetColumn(); 00038 00039 ///<summary>Gets the geometric column type</summary> 00040 ///<returns>Returns the default geometric column type</returns> 00041 FDORDBMS_OV_API FdoSmOvGeometricColumnType GetGeometricColumnType(); 00042 00043 ///<summary>Sets the geometric column type</summary> 00044 /// <param name="mappingType">Input the geometric column type</param> 00045 ///<returns>Returns nothing</returns> 00046 FDORDBMS_OV_API void SetGeometricColumnType(FdoSmOvGeometricColumnType columnType); 00047 00048 ///<summary>Gets the geometric content type</summary> 00049 ///<returns>Returns the geometric content type</returns> 00050 FDORDBMS_OV_API FdoSmOvGeometricContentType GetGeometricContentType(); 00051 00052 ///<summary>Sets the content type</summary> 00053 /// <param name="mappingType">Input the content type</param> 00054 ///<returns>Returns nothing</returns> 00055 FDORDBMS_OV_API void SetGeometricContentType(FdoSmOvGeometricContentType contentType); 00056 00057 ///<summary>Gets the ordinate column name for the X ordinate. 00058 /// This only applies when GeometricContentType==FdoSmOvGeometricContentType_Ordinates. 00059 /// Default value is "X". 00060 ///</summary> 00061 ///<returns>Returns the ordinate column name for the X ordinate</returns> 00062 FDORDBMS_OV_API FdoString * GetXColumnName(); 00063 00064 ///<summary>Sets the ordinate column name for the X ordinate</summary> 00065 /// <param name="mappingType">Input the X ordinate column name</param> 00066 ///<returns>Returns nothing</returns> 00067 FDORDBMS_OV_API void SetXColumnName(FdoString * columnName); 00068 00069 ///<summary>Gets the ordinate column name for the Y ordinate. 00070 /// This only applies when GeometricContentType==FdoSmOvGeometricContentType_Ordinates. 00071 /// Default value is "Y". 00072 ///</summary> 00073 ///<returns>Returns the ordinate column name for the Y ordinate</returns> 00074 FDORDBMS_OV_API FdoString * GetYColumnName(); 00075 00076 ///<summary>Sets the ordinate column name for the Y ordinate</summary> 00077 /// <param name="mappingType">Input the Y ordinate column name</param> 00078 ///<returns>Returns nothing</returns> 00079 FDORDBMS_OV_API void SetYColumnName(FdoString * columnName); 00080 00081 ///<summary>Gets the ordinate column name for the Z ordinate. 00082 /// This only applies when GeometricContentType==FdoSmOvGeometricContentType_Ordinates 00083 /// and the property definition's "HasElevation" attribute is "true". 00084 /// Default value is "Z". 00085 ///</summary> 00086 ///<returns>Returns the ordinate column name for the Z ordinate</returns> 00087 FDORDBMS_OV_API FdoString * GetZColumnName(); 00088 00089 ///<summary>Sets the ordinate column name for the Z ordinate</summary> 00090 /// <param name="mappingType">Input the Z ordinate column name</param> 00091 ///<returns>Returns nothing</returns> 00092 FDORDBMS_OV_API void SetZColumnName(FdoString * columnName); 00093 00094 /// \cond DOXYGEN-IGNORE 00095 FDORDBMS_OV_API virtual void InitFromXml(FdoXmlSaxContext* pContext, FdoXmlAttributeCollection* attrs); 00096 /// \endcond 00097 00098 00099 protected: 00100 FDORDBMS_OV_API FdoRdbmsOvGeometricPropertyDefinition(); 00101 FDORDBMS_OV_API FdoRdbmsOvGeometricPropertyDefinition(FdoString* name); 00102 FDORDBMS_OV_API virtual ~FdoRdbmsOvGeometricPropertyDefinition(); 00103 00104 // Sets the column override 00105 FDORDBMS_OV_API void SetColumn(FdoRdbmsOvGeometricColumn* geometricColumn); 00106 00107 FDORDBMS_OV_API virtual void _writeXml(FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags); 00108 FDORDBMS_OV_API virtual void _writeXmlContents(FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags); 00109 00110 private: 00111 FdoPtr<FdoRdbmsOvGeometricColumn> mColumn; 00112 FdoSmOvGeometricColumnType mGeometricColumnType; 00113 FdoSmOvGeometricContentType mGeometricContentType; 00114 FdoStringP mXColumnName; 00115 FdoStringP mYColumnName; 00116 FdoStringP mZColumnName; 00117 00118 }; 00119 00120 ///<summary>FdoRdbmsOvGeometricPropertyP is a FdoPtr on FdoRdbmsOvGeometricPropertyDefinition, provided for convenience.</summary> 00121 typedef FdoPtr<FdoRdbmsOvGeometricPropertyDefinition> FdoRdbmsOvGeometricPropertyP; 00122 00123 #endif 00124