Definitions for brokered access Capabilities

wstring value; DomainValueDef valuesDef; wstring title; wstring description; wstring metadataURL; }; typedef sequenceDomainValue DomainValueSeq; Descriptions of domain of one requested metadata properties or request parameter struct Domain { wstring attributeName; DomainDef domainDef; DomainValueSeq domainValue; }; typedef sequenceDomain DomainSeq;

9.6.4 Definitions for brokered access

The General Model defines some code-lists and structures for brokered access. These definitions are directly translated into their CORBA counterparts: enum BrokeredAccessRequestType {orderEstimate, orderQuoteAndSubmit, orderMonitor, orderCancel}; struct OrderItem { Note: datatypes not provided by GM any productID; any productPrice; any productDeliveryOptions; any processingOptions; any sceneSelectionOptions; }; struct OrderSpecification { Note: datatypes not provided by GM any orderCentreID; any orderPrice; any orderDeliveryDate; any orderCancellationDate; any deliveryMethod; any package; }; enum OrderStatus {orderBeingEstimated, orderEstimated, orderBeingQuoted, orderBeingProcessed, orderCompleted, orderNotValid, orderCancelled}; enum PackagingType {predefinedPackage, adhocPackage}; struct PackageSpecification { Note: datatypes not provided by GM any packageId; any packagePrice; PackagingType package; any packageMedium; 92 Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. long packageSize; }; enum PaymentMethod {credit, cash, purchaseOrder}; enum StatusUpdateType {manual, automatic}; struct UserInformation { wstring userName; wstring userAddress; wstring phoneNumber; wstring faxNumber; wstring emailAddress; wstring netAddress; PaymentMethod paymentMethod; };

9.6.5 Capabilities

The capabilities in the General Model are designed with inheritance. In CORBA designing capabilities as interfaces can reflect this, but this is not useful. Capabilities like messages see below have to be transferred over the network. Therefore, they are defined as either type definitions or structures. typedef boolean AllSupportedRequest; typedef boolean Defaults; struct DefaultTimeOut { unsigned long long timeOut; used to be OGC_Basic::UomTime, but OGC_Basic is no longer maintained as normative part of the Catalogue Services Specification }; typedef boolean Explain; struct Messaging { CharacterSet characterSet; MessageFormat messageFormat; }; struct Query { wstring version; CharacterSet characterSet; QueryLanguage queryLanguage; }; struct Session { wstring language; wstring catalogSpecificationVersion; CharacterSet characterSet; }; struct SoftwareInformation { wstring vendor; wstring SVversionNumber; wstring IFversionNumber; }; typedef sequenceCollectionName SupportedCollections; Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 93 To be able to make a sequence of different capabilities, a union Capability is created, encompassing all derived capabilities. A union normally has a discriminator. This can be a long value, but this is generally not preferred because you have to remember the value indicating the intended capability. Therefore, an enumeration of capabilities is included in the CORBA profile. enum CapabilityType { ctAllSupportedRequest, ctDefaults, ctDefaultTimeOut, ctExplain, ctMessaging, ctQuery, ctSession, ctSoftwareInformation, ctSupportedCollections }; union Capability switchCapabilityType { case ctAllSupportedRequest : AllSupportedRequest allSupportedRequest; case ctDefaults : Defaults defaults; case ctDefaultTimeOut : DefaultTimeOut timeOut; case ctExplain : Explain explain; case ctMessaging : Messaging messaging; case ctQuery : Query query; case ctSession : Session session; case ctSoftwareInformation : SoftwareInformation softwareInformation; case ctSupportedCollections : SupportedCollections supportedCollections; };

9.6.6 General messages