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

# FeatureSchema.h

Go to the documentation of this file.

    00001 #ifndef _FEATURESCHEMA_H_
    00002 #define _FEATURESCHEMA_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 #ifdef _WIN32
    00022 #pragma once
    00023 #endif
    00024
    00025 #include <FdoStd.h>
    00026 #include <Fdo/Schema/SchemaElement.h>
    00027 #include <Fdo/Schema/ClassDefinition.h>
    00028 #include <Fdo/Schema/SchemaCollection.h>
    00029 #include <Fdo/Schema/ClassCollection.h>
    00030 #include <Fdo/Xml/Serializable.h>
    00031
    00032 class FdoRelationCollection;
    00033 class FdoRelation;
    00034
    00035 /// \brief
    00036 /// The FdoFeatureSchema class derives from FdoSchemaElement.
    00037 /// A feature schema contains all of the classes and relationships
    00038 /// that make up a particular data model. The FdoFeatureSchema class can be used to
    00039 /// either create a new schema or to browse the schema end of a
    00040 /// connection. In the later case, the FdoFeatureSchema instance is created by the
    00041 /// DescribeSchema command. In this case the schema objects have additional properties,
    00042 /// such as coordinate system definitions that can be useful to the
    00043 /// application when placed in context with the schema objects.
    00044 class FdoFeatureSchema :
    00045     public FdoSchemaElement,
    00046     public FdoXmlSerializable
    00047 {
    00048 /// \cond DOXYGEN-IGNORE
    00049 protected:
    00050     /// Constructs a default empty instance of an FdoFeatureSchema.
    00051     FdoFeatureSchema();
    00052
    00053     /// Constructs an instance of an FdoFeatureSchema using the specified arguments.
    00054     FdoFeatureSchema(FdoString* name, FdoString* description);
    00055
    00056     virtual ~FdoFeatureSchema();
    00057
    00058     virtual void Dispose();
    00059 /// \endcond
    00060
    00061 public:
    00062     /// \brief
    00063     /// Constructs a default empty instance of an FdoFeatureSchema.
    00064     ///
    00065     /// \return
    00066     /// Returns FdoFeatureSchema
    00067     ///
    00068     FDO_API static FdoFeatureSchema* Create();
    00069
    00070     /// \brief
    00071     /// Constructs an instance of an FdoFeatureSchema using the specified arguments.
    00072     ///
    00073     /// \param name
    00074     /// Input name
    00075     /// \param description
    00076     /// Input description
    00077     ///
    00078     /// \return
    00079     /// Returns FdoFeatureSchema
    00080     ///
    00081     FDO_API static FdoFeatureSchema* Create(FdoString* name, FdoString* description);
    00082
    00083     /// \brief
    00084     /// Returns an FdoClassCollection that contains all of the classes defined in
    00085     /// the feature schema.
    00086     ///
    00087     /// \return
    00088     /// Returns an FdoClassCollection
    00089     ///
    00090     FDO_API FdoClassCollection* GetClasses();
    00091
    00092     /// \brief
    00093     /// Returns an FdoRelationCollection that contains all of the relations defined
    00094     /// in the feature schema.
    00095     ///
    00096     /// \return
    00097     /// Returns nothing
    00098     ///
    00099     FDO_API FdoRelationCollection* GetRelations();
    00100
    00101     /// \brief
    00102     /// Accepts all of the changes that have been made to the feature schema.
    00103     /// All child elements with a schema element state set to
    00104     /// FdoSchemaElementState_Deleted are physically removed from the schema. All
    00105     /// other child elements have their schema element state values set to
    00106     /// FdoSchemaElementState_Unchanged.
    00107     /// This method would usually be only called from an FDO Provider (IApplySchema
    00108     /// implementation). It would not normally called by an FDO Client.
    00109     ///
    00110     /// \return
    00111     /// Returns nothing
    00112     ///
    00113     FDO_API void AcceptChanges();
    00114
    00115     /// \brief
    00116     /// Rejects all of the changes that have been made to the feature schema.
    00117     /// All child elements with a schema element state set to
    00118     /// FdoSchemaElementState_Added are physically removed from the schema. All other
    00119     /// child elements are restored to their original states and have their schema
    00120     /// element state values set to FdoSchemaElementState_Unchanged.
    00121     ///
    00122     /// \return
    00123     /// Returns nothing
    00124     ///
    00125     FDO_API void RejectChanges();
    00126
    00127     /// \brief
    00128     /// Gets the stylesheet for converting a Feature Schema collection from
    00129     /// internal to external XML format. The internal format is very similar to
    00130     /// the Feature Schema class hierarchy. The external format is OGC GML.
    00131     ///
    00132     /// \return
    00133     /// Returns the stylesheet
    00134     ///
    00135     FDO_API virtual FdoXmlReader* GetFromInternalStylesheet();
    00136
    00137 /// \cond DOXYGEN-IGNORE
    00138
    00139     /// Public non-API functions for XML serialization and Schema Merge
    00140
    00141     /// Merge the given schema into this schema. An additive merge
    00142     /// is performed.
    00143     void Set( FdoFeatureSchema* pSchema, FdoSchemaMergeContext* pContext );
    00144
    00145     // Checks referenced elements.
    00146     // Adds errors to the given context if any class references elements
    00147     // marked for delete.
    00148     virtual void CheckReferences( FdoSchemaMergeContext* pContext );
    00149
    00150     /// Allows FeatureSchemaCollection to get the stylesheet.
    00151     static FdoXmlReader* _getFromInternalStylesheet();
    00152
    00153     /// FdoXmlDeserializabe callback override to handle start of sub-elements
    00154     //when deserializing from XML.
    00155     virtual FdoXmlSaxHandler* XmlStartElement(
    00156         FdoXmlSaxContext* context,
    00157         FdoString* uri,
    00158         FdoString* name,
    00159         FdoString* qname,
    00160         FdoXmlAttributeCollection* atts
    00161     );
    00162
    00163     /// FdoXmlSerializabe callback override to serialize this feature schema
    00164     /// to XML.
    00165     virtual void _writeXml( FdoXmlWriter* xmlWriter, const FdoXmlFlags* flags );
    00166     virtual void _writeXml( FdoSchemaXmlContext* pContext );
    00167 /// \endcond
    00168
    00169 private:
    00170     FdoClassCollection*         m_classes;
    00171 };
    00172
    00173 /// \ingroup (typedefs)
    00174 /// \brief
    00175 /// FdoFeatureSchemaP is a FdoPtr on FdoFeatureSchema, provided for convenience.
    00176 typedef FdoPtr<FdoFeatureSchema> FdoFeatureSchemaP;
    00177
    00178 #endif
    00179
    00180

Please send us your comment about this page