MapGuide RFC 70 - Apply Schema
This page contains an change request (RFC) for the MapGuide Open Source project. More MapGuide RFCs can be found on the RFCs page.
Status
RFC Template Version | (1.0) |
Submission Date | June 26, 2009 |
Last Modified | Leaf Li Timestamp |
Author | Leaf Li |
RFC Status | adopted |
Implementation Status | implemented |
Proposed Milestone | 2.2 |
Assigned PSC guide(s) | Bruce Dechant |
Voting History | July 10, 2009 |
+1 | Andy, Bob, Bruce, Jason, Kenneth, Paul, Tom |
+0 | |
-0 | |
-1 | |
no vote | Haris |
Overview
This proposal is to extend MapGuide Feature Service to support applying schema.
Motivation
Currently MapGuide Web API doesn’t support any functionality to create or modify schema of a feature source. The RFC is used to eliminate this limitation.
Proposed Solution
Changes to MgFeatureSchema, MgClassDefinition and MgPropertyDefinition
ApplySchema need not only support adding, modifying but also support deleting schema elements. So we need a method to mark the schema element for deletion. The method Delete() will be added to classes MgFeatureSchema, MgClassDefinition, MgPropertyDefinition for it.
/// \brief /// Contains one or more feature class definitions, which specify the structure /// of feature data in a datastore. class MgFeatureSchema: public MgNamedSerializable { PUBLISHED_API: ...... /// \brief /// Marks the schema for deletion. /// /// \return /// Returns nothing. void Delete(); }; /// \brief /// Defines a feature class belonging to a schema. class MgClassDefinition: public MgNamedSerializable { PUBLISHED_API: ...... /// \brief /// Marks the class for deletion. /// /// \return /// Returns nothing. void Delete(); }; /// \brief /// Defines the base class for the concreate property definition classes which /// are used to create data, geometric, object, and raster property definitions. class MgPropertyDefinition: public MgProperty { PUBLISHED_API: ...... /// \brief /// Marks the property for deletion. /// /// \return /// Returns nothing. void Delete(); };
Changes to Feature Service
Feature Service will be extended to add one method to apply a schema.
class MgFeatureService : public MgService { PUBLISHED_API: /// \brief /// Creates or updates a feature schema within the DataStore. /// /// \param resource (MgResourceIdentifier) /// A resource identifier referring to a feature source. /// \param schema /// Input schema to be created or updated. /// /// \return /// Returns nothing. /// virtual void ApplySchema( MgResourceIdentifier* resource, MgFeatureSchema* schema) = 0; };
Changes to MgPropertyType
Many FDO data sources support decimal property type. Users can add a decimal property in a feature class in those datasources. However, class MgPropertyType doesn't define a decimal property type. So we will extend class MgPropertyType to add a new type name 'Decimal' so that method MgFeatureService::ApplySchema(...) can handle the decimal property.
class MgPropertyType { PUBLISHED_API: ...... /////////////////////////////////////////////////// /// \brief /// Type name for a decimal property. /// /// \remarks /// This property type name is currently used to /// apply schema only. static const int Decimal = 15; };
Implications
This is new API only. There are no effects on existing applications. However, API documentation need to be updated.
Test Plan
Add unit tests for method MgFeatureService::ApplySchema(...) into the existing Feature Service unit tests.
Funding/Resources
Supplied by Autodesk.