FDO API Reference Feature Data Objects

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 

Comments or suggestions? Send us feedback.