Autodesk FDO Provider for SQL Server API Reference

SQLServer Provider API

API Reference Autodesk FDO Provider for SQL Server

SqlServerOvClassDefinition.h

Go to the documentation of this file.
00001 #ifndef FDO_SqlServerOVCLASSDEFINITION_H
00002 #define FDO_SqlServerOVCLASSDEFINITION_H
00003 //
00004 //
00005 // (C) Copyright 1990-2005 by Autodesk, Inc.
00006 //
00007 //
00008 //
00009 // By using this code, you are agreeing to the terms
00010 // and conditions of the License Agreement that appeared
00011 // and was accepted upon download or installation
00012 // (or in connection with the download or installation)
00013 // of the Autodesk software in which this code is included.
00014 // All permissions on use of this code are as set forth
00015 // in such License Agreement provided that the above copyright
00016 // notice appears in all authorized copies and that both that
00017 // copyright notice and the limited warranty and
00018 // restricted rights notice below appear in all supporting
00019 // documentation.
00020 //
00021 // AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
00022 // AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
00023 // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
00024 // DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
00025 // UNINTERRUPTED OR ERROR FREE.
00026 //
00027 // Use, duplication, or disclosure by the U.S. Government is subject to
00028 // restrictions set forth in FAR 52.227-19 (Commercial Computer
00029 // Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
00030 // (Rights in Technical Data and Computer Software), as applicable.
00031 //
00032 #include <Rdbms/Override/RdbmsOvClassDefinition.h>
00033 #include <Rdbms/Override/SqlServer/SqlServerOv.h>
00034 #include <Rdbms/Override/SqlServer/SqlServerOvDataPropertyDefinition.h>
00035 #include <Rdbms/Override/SqlServer/SqlServerOvGeometricPropertyDefinition.h>
00036 #include <Rdbms/Override/SqlServer/SqlServerOvObjectPropertyDefinition.h>
00037 #include <Rdbms/Override/SqlServer/SqlServerOvPropertyDefinitionCollection.h>
00038 #include <Rdbms/Override/SqlServer/SqlServerOvTable.h>
00039 #include <Rdbms/Override/SqlServer/SqlServerOvGeometricColumn.h>
00040 
00041 /// \brief
00042 /// Concrete class defining physical schema overrides for a class definition.
00043 class FdoSqlServerOvClassDefinition : public FdoRdbmsOvClassDefinition
00044 {
00045 
00046 public:
00047     /// \brief
00048     /// Constructs a default of an FdoSqlServerOvClassDefinition
00049     /// 
00050     /// \return
00051     /// Returns FdoSqlServerOvClassDefinition
00052     /// 
00053     FDOSQLSERVER_OV_API static FdoSqlServerOvClassDefinition* Create();
00054 
00055     /// \brief
00056     /// Constructs an instance of an FdoSqlServerOvClassDefinition using the specified arguments
00057     /// 
00058     /// \param name 
00059     /// Input name
00060     /// 
00061     /// \return
00062     /// Returns FdoSqlServerOvClassDefinition
00063     /// 
00064     FDOSQLSERVER_OV_API static FdoSqlServerOvClassDefinition* Create(FdoString* name);
00065 
00066     /// \brief
00067     /// Gets a collection of SqlServer property overrides
00068     /// 
00069     /// \return
00070     /// Returns the collection of SqlServer property overrides
00071     /// 
00072     FDOSQLSERVER_OV_API FdoSqlServerOvPropertyDefinitionCollection* GetProperties();
00073 
00074     /// \brief
00075     /// Gets the SqlServer table override for this class override
00076     /// 
00077     /// \return
00078     /// Returns FdoSqlServerOvTable
00079     /// 
00080     FDOSQLSERVER_OV_API FdoSqlServerOvTable* GetTable();
00081 
00082     /// \brief
00083     /// Sets the SqlServer table override for this class override
00084     /// 
00085     /// \param name 
00086     /// Input SqlServer table override
00087     /// 
00088     /// \return
00089     /// Returns nothing
00090     /// 
00091     FDOSQLSERVER_OV_API void SetTable(FdoSqlServerOvTable* table);
00092 
00093     /// \brief
00094     /// Sets the SqlServer geometry column override for this class override
00095     /// 
00096     /// \param column 
00097     /// Input SqlServer Geometric Column override
00098     /// 
00099     /// \return
00100     /// Returns nothing
00101     /// 
00102     FDOSQLSERVER_OV_API void SetGeometryColumn(FdoSqlServerOvGeometricColumn* column);
00103 
00104     /// \brief
00105     /// Specifies which FDO property corresponds to the single SqlServer IDENTITY column.
00106     /// This property corresponds to the singleton IDENTITY column of the SQL Server table.
00107     /// This is not to be confused with the usual FDO identity properties, which instead 
00108     /// correspond to the primary key of a SQL Server table.
00109     /// 
00110     /// \param name 
00111     /// Input SqlServer identity property name override.
00112     /// An empty string means there is no identity column for this class.
00113     /// 
00114     /// \return
00115     /// Returns nothing
00116     /// 
00117     FDOSQLSERVER_OV_API void SetIdentityPropertyName(FdoString* identityPropertyName);
00118 
00119     /// \brief
00120     /// Gets which FDO property corresponds to the single SqlServer IDENTITY column
00121     /// 
00122     /// \return
00123     /// Returns the FDO property corresponding to the single SqlServer IDENTITY column,
00124     /// or an empty string if there is no such property
00125     /// 
00126     FDOSQLSERVER_OV_API FdoString* GetIdentityPropertyName(void);
00127 
00128     /// \brief
00129     /// Retrieves the identity column's type, whether it is a non-globally-unique
00130     /// identity column or a globally-unique identity column.
00131     /// 
00132     /// \remarks
00133     /// Non-globally-unique identity columns have their value
00134     /// automatically populated by SQL Server on insert; the first value is set to the specified
00135     /// IdentitySeed, and all subsequent values are set using the specified IdentityIncrement.
00136     /// If defining such a column during ApplySchema, it must be one of the following SQL Server
00137     /// native data types: decimal, int, numeric, smallint, bigint, or tinyint.  Note that the
00138     /// “not for replication” identity column flag is not exposed.  Also note that the identifier
00139     /// column must not be nullable and must not contain a default value.
00140     /// Globally-unique identity columns do not have their value automatically populated by SQL Server.
00141     /// Instead SQL Server relies on the default value or the user to populate this value.  To have
00142     /// this value populated automatically on insert, the user should set the default value to use the
00143     /// NEWID() function to obtain a globally-unique identity value.
00144     /// This override is ignored on ApplySchema if this column belongs to an existing table in a
00145     /// foreign database.  This override is also ignored if IdentityPropertyName is not specified.
00146     /// 
00147     /// \return
00148     /// Returns the type of the single IDENTITY column, if it exists
00149     /// 
00150     FDOSQLSERVER_OV_API bool GetIdentityIsGloballyUnique(void);
00151 
00152     /// \brief
00153     /// Set the type of the single IDENTITY column, if it exists
00154     /// 
00155     /// \return
00156     /// Returns nothing
00157     /// 
00158     FDOSQLSERVER_OV_API void SetIdentityIsGloballyUnique(bool identityisGloballyUnique);
00159 
00160     /// \brief
00161     /// Sets the first value to use for the identity column, if there is one.
00162     /// 
00163     /// \remarks
00164     /// This override defaults to 1.  This override is ignored on ApplySchema if
00165     /// this column belongs to an existing table in a foreign database.  This override is also
00166     /// ignored if IdentityPropertyName is not specified.
00167     /// 
00168     /// \return
00169     /// Returns the first value to use for the identity column
00170     /// 
00171     FDOSQLSERVER_OV_API FdoInt32 GetIdentitySeed(void);
00172 
00173     /// \brief
00174     /// Gets the first value to use for the identity column, if there is one.
00175     /// 
00176     /// \return
00177     /// Returns nothing
00178     /// 
00179     FDOSQLSERVER_OV_API void SetIdentitySeed(FdoInt32 identitySeed);
00180 
00181     /// \brief
00182     /// Gets the increment value to use for the identity column, if there is one.
00183     /// 
00184     /// \remarks
00185     /// This override defaults to 1.  This override is ignored on ApplySchema if this
00186     /// column belongs to an existing table in a foreign database.  This override is also ignored
00187     /// if IdentityPropertyName is not specified.
00188     /// 
00189     /// \return
00190     /// Returns the increment value to use for the identity column
00191     /// 
00192     FDOSQLSERVER_OV_API FdoInt32 GetIdentityIncrement(void);
00193 
00194     /// \brief
00195     /// Sets the increment value to use for the identity column, if there is one.
00196     /// 
00197     /// \return
00198     /// Returns nothing
00199     /// 
00200     FDOSQLSERVER_OV_API void SetIdentityIncrement(FdoInt32 identityIncrement);
00201 
00202 /// \cond DOXYGEN-IGNORE
00203 
00204     /// Sets the parent of this object. Not part of the API.
00205     void SetParent(FdoPhysicalElementMapping* value);
00206 
00207     /// Initialize this element from its XML attributes
00208     virtual void InitFromXml(FdoXmlSaxContext* pContext, FdoXmlAttributeCollection* attrs);
00209 
00210     /// Serialize the XML attributes of this class:
00211     virtual void _writeXmlAttributes(FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags);
00212 
00213 /// \endcond
00214 
00215 protected:
00216     FdoSqlServerOvClassDefinition();
00217     FdoSqlServerOvClassDefinition(FdoString *name);
00218 
00219     virtual ~FdoSqlServerOvClassDefinition();
00220     void Init();
00221     virtual void Dispose();
00222 
00223     /// Create table override from XML attributes
00224     virtual void SetTable(
00225         FdoXmlSaxContext* context,
00226         FdoXmlAttributeCollection* atts
00227     );
00228 
00229     /// Create data property override from XML attributes
00230     virtual FdoRdbmsOvDataPropertyDefinition* CreateDataProperty( 
00231         FdoXmlSaxContext* context,
00232         FdoXmlAttributeCollection* propAtts,
00233         FdoXmlAttributeCollection* colAtts
00234     );
00235 
00236     /// Create geometric property override from XML attributes
00237     virtual FdoRdbmsOvGeometricPropertyDefinition* CreateGeometricProperty( 
00238         FdoXmlSaxContext* context,
00239         FdoXmlAttributeCollection* propAtts,
00240         FdoXmlAttributeCollection* colAtts
00241     );
00242 
00243     /// Create object property override from XML attributes
00244     virtual FdoRdbmsOvObjectPropertyDefinition* CreateObjectProperty( 
00245         FdoXmlSaxContext* context,
00246         FdoXmlAttributeCollection* propAtts,
00247         FdoString* mappingType,
00248         FdoXmlAttributeCollection* mappingAtts
00249     );
00250 
00251     /// Add the given property override to this class override
00252     virtual void AddProperty( 
00253         FdoRdbmsOvPropertyDefinition* pProp
00254     );
00255 
00256 private:
00257     FdoSqlServerOvPropertiesP  mPropertyDefinitions;
00258     bool  mIdentityIsGloballyUnique;
00259     FdoInt32  mIdentitySeed;
00260     FdoInt32  mIdentityIncrement;
00261     FdoStringP  mIdentityPropertyName;
00262 };
00263 
00264 
00265 /// \brief
00266 /// FdoSqlServerOvClassP is a FdoPtr on FdoSqlServerOvClassDefinition, provided for convenience.
00267 typedef FdoPtr<FdoSqlServerOvClassDefinition> FdoSqlServerOvClassP;
00268 
00269 #endif
00270 
00271 

Comments?