- Main Page
- Related Pages
- Modules
- Classes
- Files

# ISchemaCapabilities.h

Go to the documentation of this file.

    00001 #ifndef _ISCHEMACAPABILITIES_H_
    00002 #define _ISCHEMACAPABILITIES_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 #ifdef _WIN32
    00023 #pragma once
    00024 #endif
    00025
    00026 #include <FdoStd.h>
    00027 #include <Fdo/Schema/ClassType.h>
    00028 #include <Fdo/Schema/DataType.h>
    00029 #include <Fdo/Connections/Capabilities/SchemaElementNameType.h>
    00030
    00031 /// \brief
    00032 /// The FdoISchemaCapbilities interface declares the feature provider's level
    00033 /// of support for the Feature Schema.
    00034 class FdoISchemaCapabilities : public FdoIDisposable
    00035 {
    00036 public:
    00037     /// \brief
    00038     /// Returns an array of the FdoClassType objects the feature provider supports.
    00039     ///
    00040     /// \param length
    00041     /// Output the number of class types.
    00042     ///
    00043     /// \return
    00044     /// Returns the list of class types.
    00045     ///
    00046     FDO_API virtual FdoClassType* GetClassTypes(FdoInt32& length) = 0;
    00047
    00048     /// \brief
    00049     /// Returns an array of the FdoDataType objects the feature provider supports.
    00050     ///
    00051     /// \param length
    00052     /// Output the number of data types.
    00053     ///
    00054     /// \return
    00055     /// Returns the list of data types
    00056     ///
    00057     FDO_API virtual FdoDataType* GetDataTypes(FdoInt32& length) = 0;
    00058
    00059     /// \brief
    00060     /// Returns the maximum supported length of String, BLOB, or CLOB data
    00061     /// properties. For decimal, it is typically the combination of the maximum
    00062     /// scale and precision. For other data types that are not variable in size,
    00063     /// the value returned is the byte length.
    00064     ///
    00065     /// \param dataType
    00066     /// The data type for which the information is to retrieved.
    00067     ///
    00068     /// \return
    00069     /// Returns the maximum data value length for the identified data type.
    00070     ///
    00071     FDO_API virtual FdoInt64 GetMaximumDataValueLength(FdoDataType dataType) = 0;
    00072
    00073     /// \brief
    00074     /// Returns the maximum supported precision for a decimal data property.
    00075     ///
    00076     /// \return
    00077     /// Returns the maximum supported precision for a decimal data property.
    00078     ///
    00079     FDO_API virtual FdoInt32 GetMaximumDecimalPrecision() = 0;
    00080
    00081     /// \brief
    00082     /// Returns the maximum supported scale for a decimal data property.
    00083     ///
    00084     /// \return
    00085     /// Returns the maximum supported scale for a decimal data property.
    00086     ///
    00087     FDO_API virtual FdoInt32 GetMaximumDecimalScale() = 0;
    00088
    00089     /// \brief
    00090     /// Returns the maximum size of a value of the given type. It includes
    00091     /// limits for the data store name, shema name, class name, property name
    00092     /// and description.
    00093     ///
    00094     /// \param name
    00095     /// The schema element name type identifier for which the information is to
    00096     /// be retrieved. Can be any of the following options: FdoSchemaElementNameType_Datastore,
    00097     /// FdoSchemaElementNameType_Schema, FdoSchemaElementNameType_Class, FdoSchemaElementNameType_Property or
    00098     /// FdoSchemaElementNameType_Description
    00099     ///
    00100     /// \return
    00101     /// Returns the size limitation for the identified schema element.
    00102     ///
    00103     FDO_API virtual FdoInt32 GetNameSizeLimit(FdoSchemaElementNameType name) = 0;
    00104
    00105     /// \brief
    00106     /// Returns a string that includes all the reserved characters that cannot be
    00107     /// used for the various schema element names for the provider.
    00108     ///
    00109     /// \return
    00110     /// Returns a string with the reserved characters for the identified schema element.
    00111     ///
    00112     FDO_API virtual FdoString* GetReservedCharactersForName() = 0;
    00113
    00114     /// \brief
    00115     /// Returns an array of the FdoDataType objects the feature provider supports for auto-generation.
    00116     ///
    00117     /// \param length
    00118     /// Output the number of data types.
    00119     ///
    00120     /// \return
    00121     /// Returns the list of data types
    00122     ///
    00123     FDO_API virtual FdoDataType* GetSupportedAutoGeneratedTypes(FdoInt32& length) = 0;
    00124
    00125     /// \brief
    00126     /// Returns a list of property types that can be used for identity properties.
    00127     ///
    00128     /// \param length
    00129     /// Output the number of data types.
    00130     ///
    00131     /// \return
    00132     /// Returns a string with the reserved characters for the identified schema element.
    00133     ///
    00134     FDO_API virtual FdoDataType* GetSupportedIdentityPropertyTypes(FdoInt32& length) = 0;
    00135
    00136     /// \brief
    00137     /// Determines if the provider supports association property.
    00138     ///
    00139     /// \return
    00140     /// Returns true if the provider support the association property.
    00141     ///
    00142     FDO_API virtual bool SupportsAssociationProperties() = 0;
    00143
    00144     /// \brief
    00145     /// Determines if the provider can auto-generate unique ID values for a class.
    00146     ///
    00147     /// \return
    00148     /// Returns true if the provider supports id autogeneration.
    00149     ///
    00150     FDO_API virtual bool SupportsAutoIdGeneration() = 0;
    00151
    00152     /// \brief
    00153     /// Determines if the provider supports multiple identity properties per class.
    00154     ///
    00155     /// \return
    00156     /// Returns true if the provider supports multiple identity properties per class.
    00157     ///
    00158     FDO_API virtual bool SupportsCompositeId() = 0;
    00159
    00160     /// \brief
    00161     /// Determines if the provider supports composite unique value constraint.
    00162     ///
    00163     /// \return
    00164     /// Returns true if the provider supports composite unique value constraint.
    00165     ///
    00166     FDO_API virtual bool SupportsCompositeUniqueValueConstraints() = 0;
    00167
    00168     /// \brief
    00169     /// Determines if the provider can auto-generate unique ID values that are unique for the entire datastore, rather than just for a particular class.
    00170     ///
    00171     /// \return
    00172     /// Returns true if the provider supports id autogeneration unique across an datastore.
    00173     ///
    00174     FDO_API virtual bool SupportsDataStoreScopeUniqueIdGeneration() = 0;
    00175
    00176     /// \brief
    00177     /// Returns TRUE if default values can be specified for a data property
    00178     /// definition, FALSE otherwise.
    00179     ///
    00180     /// \return
    00181     /// Returns TRUE if default values can be specified for a data property
    00182     /// definition, FALSE otherwise.
    00183     ///
    00184     FDO_API virtual bool SupportsDefaultValue() = 0;
    00185
    00186     /// \brief
    00187     /// Determines if the provider supports exclusive value range constraints.
    00188     ///
    00189     /// \return
    00190     /// Returns true if the provider supports exclusive value range constraints.
    00191     ///
    00192     FDO_API virtual bool SupportsExclusiveValueRangeConstraints() = 0;
    00193
    00194     /// \brief
    00195     /// Determines if the provider supports inclusive value range constraints.
    00196     ///
    00197     /// \return
    00198     /// Returns true if the provider supports inclusive value range constraints.
    00199     ///
    00200     FDO_API virtual bool SupportsInclusiveValueRangeConstraints() = 0;
    00201
    00202 /// \cond DOXYGEN-IGNORE
    00203
    00204     /// \brief
    00205     /// DEPRECATED: Use SupportsInheritance() instead.
    00206     ///          Determines if the feature provider supports inheritance.
    00207     ///
    00208     /// \return
    00209     /// Returns true if the feature provider supports inheritance
    00210     ///
    00211     FDO_API FDO_DEPRECATED virtual bool SupportsInheritence();
    00212 /// \endcond
    00213
    00214     /// \brief
    00215     /// Determines if the feature provider supports inheritance.
    00216     ///
    00217     /// \return
    00218     /// Returns true if the feature provider supports inheritance
    00219     ///
    00220     FDO_API virtual bool SupportsInheritance() = 0;
    00221
    00222     /// \brief
    00223     /// Determines if the provider supports multiple schemas. Returns false if the provider supports only a single schema.
    00224     ///
    00225     /// \return
    00226     /// Returns true if the provider supports multiple schemas.
    00227     ///
    00228     FDO_API virtual bool SupportsMultipleSchemas() = 0;
    00229
    00230     /// \brief
    00231     /// Determines if the provider supports the network model.
    00232     ///
    00233     /// \return
    00234     /// Returns true if the provider supports the network model.
    00235     ///
    00236     FDO_API virtual bool SupportsNetworkModel() = 0;
    00237
    00238     /// \brief
    00239     /// Determines if the provider supports nullable value constraint.
    00240     ///
    00241     /// \return
    00242     /// Returns true if the provider supports nullable value constraint.
    00243     ///
    00244     FDO_API virtual bool SupportsNullValueConstraints() = 0;
    00245
    00246     /// \brief
    00247     /// Determines if the provider supports object properties. Returns false if the provider supports only data and geometric properties.
    00248     ///
    00249     /// \return
    00250     /// Returns true if the provider supports object properties.
    00251     ///
    00252     FDO_API virtual bool SupportsObjectProperties() = 0;
    00253
    00254     /// \brief
    00255     /// Determines if the provider support update a schema through the ApplySchema command.
    00256     /// If False, then an application can only create a schema once for the provider. They can use the ApplySchema
    00257     /// command once for a given datastore. Once the schema is defined, it cannot be changed. If True, then the provider
    00258     /// supports the ability to modify or add to the schema after it is defined initially.
    00259     ///
    00260     /// \return
    00261     /// Returns true if the provider supports the update of the schema.
    00262     ///
    00263     FDO_API virtual bool  SupportsSchemaModification() = 0;
    00264
    00265     /// \brief
    00266     /// Determines if the provider supports Schema Mapping Overrides
    00267     /// (overrides to the default rules for mapping Feature Schemas to provider-specific
    00268     /// physical schemas)
    00269     ///
    00270     /// \return
    00271     /// Returns true if the provider supports Schema Overrides
    00272     ///
    00273     FDO_API virtual bool SupportsSchemaOverrides() = 0;
    00274
    00275     /// \brief
    00276     /// Determines if the provider supports unique value constraint.
    00277     ///
    00278     /// \return
    00279     /// Returns true if the provider supports unique value constraint.
    00280     ///
    00281     FDO_API virtual bool SupportsUniqueValueConstraints() = 0;
    00282
    00283     /// \brief
    00284     /// Determines if the provider supports value constraints list.
    00285     ///
    00286     /// \return
    00287     /// Returns true if the provider supports value constraints list.
    00288     ///
    00289     FDO_API virtual bool SupportsValueConstraintsList() = 0;
    00290 };
    00291 #endif
    00292
    00293

Please send us your comment about this page