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

# SchemaMapping.h

Go to the documentation of this file.

    00001 #ifndef FDO_XMLSCHEMAMAPPING_H_
    00002 #define FDO_XMLSCHEMAMAPPING_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/Xml/Serializable.h>
    00027 #include <Fdo/Commands/Schema/PhysicalSchemaMapping.h>
    00028 #include <Fdo/Xml/ClassMappingCollection.h>
    00029
    00030 /// \brief
    00031 /// FdoXmlSchemaMapping specifies overrides for translating a feature schema between
    00032 /// FDO and GML.
    00033 class FdoXmlSchemaMapping :
    00034     public FdoPhysicalSchemaMapping
    00035 {
    00036
    00037 public:
    00038     /// \brief
    00039     /// Creates an XML Schema Mapping Set.
    00040     ///
    00041     /// \return
    00042     /// FdoXmlSchemaMapping
    00043     ///
    00044     FDO_API static FdoXmlSchemaMapping* Create( FdoString* name );
    00045
    00046     /// \brief
    00047     /// Gets the provider name.
    00048     ///
    00049     /// \return
    00050     /// Returns "OSGeo.GML.1.0".
    00051     /// \note
    00052     /// This is the name given to this
    00053     /// particular type of Schema Override set and is not the name of an actual FDO provider.
    00054     ///
    00055     ///
    00056     FDO_API virtual FdoString* GetProvider();
    00057
    00058     /// \brief
    00059     /// Sets the target namespace URI for the GML version of this schema.
    00060     /// When the Feature Schema for these overrides is written to GML, its targetNamespace
    00061     /// is set to this value.
    00062     ///
    00063     /// \param url
    00064     /// Input the target namespace.
    00065     ///
    00066     FDO_API void SetTargetNamespace( FdoString* url );
    00067
    00068     /// \brief
    00069     /// Gets the target namespace URI for the GML version of this schema.
    00070     ///
    00071     /// \return
    00072     /// Returns the target namespace.
    00073     ///
    00074     FDO_API FdoString* GetTargetNamespace();
    00075
    00076     /// \brief
    00077     /// Gets the mappings between GML global elements and their types as Fdo Classes. These
    00078     /// mappings are used in two circumstances:
    00079     /// <ul>
    00080     ///     <li> when features are read from a GML Document, these mappings determine the Feature
    00081     ///     class of each feature, based on its element name. If the element name is not
    00082     ///     in these mappings then the class name defaults to the element name.
    00083     ///     <li> when the Feature Schema for these overrides is written to GML, a global element
    00084     ///     is created from each item in element mappings collection.
    00085     /// </ul>
    00086     ///
    00087     /// \return
    00088     /// Returns FdoXmlElementMappingCollection*
    00089     ///
    00090     FDO_API FdoXmlElementMappingCollection* GetElementMappings();
    00091
    00092     /// \brief
    00093     /// Gets the mappings for FDO Classes.
    00094     ///
    00095     /// \return
    00096     /// Returns FdoXmlClassMappingCollection*
    00097     ///
    00098     FDO_API FdoXmlClassMappingCollection* GetClassMappings();
    00099
    00100 /// \cond DOXYGEN-IGNORE
    00101 protected:
    00102     FdoXmlSchemaMapping() {}
    00103
    00104     FdoXmlSchemaMapping( FdoString* name );
    00105
    00106     virtual ~FdoXmlSchemaMapping();
    00107
    00108     virtual void Dispose();
    00109
    00110     /// Functions for XML support
    00111
    00112     /// \brief
    00113     /// Initializes this Xml Schema Mapping from its XML attributes. Called when
    00114     /// the element is deserialized from XML.
    00115     ///
    00116     /// \param pContext
    00117     /// Input context contain information about the current deserialization operation
    00118     /// \param attrs
    00119     /// Input the XML attributes.
    00120     ///
    00121     /// \return
    00122     /// Returns nothing
    00123     ///
    00124     virtual void InitFromXml(FdoXmlSaxContext* pContext, FdoXmlAttributeCollection* attrs);
    00125
    00126     /// \brief
    00127     /// Writes this XML Schema Mapping to XML. Called when
    00128     /// the element is serialized to XML.
    00129     ///
    00130     /// \param xmlWriter
    00131     /// Input write the element to this XML writer
    00132     /// \param flags
    00133     /// Input flags that control the writing of the element.
    00134     ///
    00135     /// \return
    00136     /// Returns nothing
    00137     ///
    00138     virtual void _writeXml(
    00139         FdoXmlWriter* xmlWriter,
    00140         const FdoXmlFlags* flags
    00141     );
    00142 /// \endcond
    00143
    00144 private:
    00145     FdoStringP mTargetNamespace;
    00146     FdoXmlElementMappingsP mElementMappings;
    00147     FdoXmlClassMappingsP mClassMappings;
    00148 };
    00149
    00150 /// \ingroup (typedefs)
    00151 /// \brief
    00152 /// FdoXmlSchemaMappingP is a FdoPtr on FdoXmlSchemaMapping, provided for convenience.
    00153 typedef FdoPtr<FdoXmlSchemaMapping> FdoXmlSchemaMappingP;
    00154
    00155 #endif
    00156
    00157

Please send us your comment about this page