From 085e95a3adfbe84432910a5e7f7c3c3127c244cc Mon Sep 17 00:00:00 2001 From: gal Date: Tue, 7 Apr 2015 09:35:16 +0100 Subject: Geospatial and Imagery Access Service (GIAS) Dissector A Corba (GIOP) based protocol for the exchange of Intelligence, Surveillance and Reconnaissance (ISR) products. Defined in STANAG 4559/AEDP-5 "NATO Standard ISR Library Interface (NSILI)" See http://www.nato.int/structur/ac/224/standard/4559/4559.htm for more information. The dissector is generated using idl2wrs using the gias.idl, with some manual corrections, as noted in README.gias. Patch Set 4: Initialise uninitialised variables and no longer mark them as unused. Change-Id: Ieae93a135b30078f2d34e66f8c7b2e476438224e Reviewed-on: https://code.wireshark.org/review/7965 Petri-Dish: Alexis La Goutte Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- idl/gias/README.gias | 33 ++ idl/gias/cb.idl | 34 ++ idl/gias/gias.idl | 1271 ++++++++++++++++++++++++++++++++++++++++++++++++++ idl/gias/ps.idl | 979 ++++++++++++++++++++++++++++++++++++++ idl/gias/uco.idl | 417 +++++++++++++++++ idl/gias/uid.idl | 38 ++ 6 files changed, 2772 insertions(+) create mode 100644 idl/gias/README.gias create mode 100644 idl/gias/cb.idl create mode 100644 idl/gias/gias.idl create mode 100644 idl/gias/ps.idl create mode 100644 idl/gias/uco.idl create mode 100644 idl/gias/uid.idl (limited to 'idl') diff --git a/idl/gias/README.gias b/idl/gias/README.gias new file mode 100644 index 0000000000..a44b50c126 --- /dev/null +++ b/idl/gias/README.gias @@ -0,0 +1,33 @@ +Geospatial and Imagery Access Service (GIAS) + +see http://www.nato.int/structur/AC/224/standard/4559/4559_documents/4559_GIAS351_Approved_nu.pdf + +To generate the gias dissector from the .idl documents run: + +omniidl -p ../../tools -b wireshark_be gias.idl + +(Note this is similar to the command that idl2wrs would run but explicitly identifies the backend is to be used.) + +The gias.idl file includes all the other .idl files to create one +dissector for gias. + +Note that due to a bug in ommniidl, the following needs to be manually added to the generated dissector: + +Errors +====== + +Define the heading field: +static int hf_UCO_InvalidInputParameter_badInputParameters = -1; + +Register the headings fields: +{&hf_UCO_CompressedImage_data_loop, {"Seq length of CompressedImage_data","giop-gias.CompressedImage.data.size",FT_UINT32,BASE_DEC,NULL,0x0,NULL, +{&hf_UCO_Buffer_octet_buffer_loop, {"Seq length of Buffer_octet_buffer","giop-gias.UCO.Buffer.octet_buffer.size",FT_UINT32,BASE_DEC,NULL,0x0,NULL,HFILL}}, +{&hf_GIAS_Domain_bd_loop, {"Seq length of Domain_bd","giop-gias.GIAS.Domain.bd.size",FT_UINT32,BASE_DEC,NULL,0x0,NULL,HFILL}}, + +Warnings +======== + +Make the following 3 variables const gchar * : +binary_seq_UCO_CompressedImage_data +binary_seq_UCO_Buffer_octet_buffer +binary_seq_GIAS_Domain_bd diff --git a/idl/gias/cb.idl b/idl/gias/cb.idl new file mode 100644 index 0000000000..90da87fef2 --- /dev/null +++ b/idl/gias/cb.idl @@ -0,0 +1,34 @@ +#ifndef CB_IDL +#define CB_IDL + +//*************************************************************** + //* APPROVED via RFC N01-0268 on 6 August 2001 +//*************************************************************** + + +//*************************************************************** + //* interface GIAS::Callback + //* + //* Description: General callback interface + //* + //* NOTE: The Callback interface is implemented on the + //* "client" side to allow "servers" to notify clients of + //* completion of requests. + //* + //* NOTE: Callback module is now compiled as a separate IDL file. + //* This will be changed in GIAS 3.3 + //*************************************************************** +#include "uco.idl" + +module CB +{ +interface Callback + { + void notify (in UCO::State theState, in UCO::RequestDescription description) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void release () + raises (UCO::ProcessingFault, UCO::SystemFault); + }; +}; +#endif diff --git a/idl/gias/gias.idl b/idl/gias/gias.idl new file mode 100644 index 0000000000..89aa20bbaa --- /dev/null +++ b/idl/gias/gias.idl @@ -0,0 +1,1271 @@ +#ifndef GIAS_IDL +#define GIAS_IDL + +//*************************************************************** + //* APPROVED via RFC N01-0268 on 6 August 2001 +//*************************************************************** + + +//*************************************************************** +//* +//* The Geospatial and Imagery Access Service +//* +//* +//* Description: Defines the data types and interfaces needed +//* to support search, retrieval and access to geospatial +//* data such as images, maps charts and their supporting +//* data +//* +//* +//* +//* History: +//* Date Author Comment +//* ----- -------- ------------ +//* 15 May 97 D. Lutz Initial release for review +//* 2 July 97 D. Lutz Released for TEM Review +//* 11 July 97 D. Lutz Changes based on 2 July TEM +//* 18 July 97 D. Lutz Released for NIMA CCB +//* 24 Oct 97 D. Lutz Changes based on 7 Oct TEM +//* 14 Nov 97 D. Lutz Changes based on 4 Nov TEM +//* 17 Dec 97 D. Lutz Changes based on 9 Dec TEM +//* 15 Apr 98 J. Baldo changes based on Mar TEM +//* 7 May 98 D.Lutz Changes based on 1 May TEM +//* 2 Jul 98 J. Baldo/D. Lutz Changes based +//* on 22-23 Jun TEM Requests - GIAS 3.2 +//* 2 Jul 98 (J. Baldo): Callback module has been removed +//* from previous GIAS 3.2 specification release +//* 5 June 1998 and will be included in GIAS 3.3 +//* 5 Nov 98 D. Lutz Added first version of UpdateMgr +//* +//* 10 Mar 99 J. Baldo Changes based on March 99 TEM +//* +//* 5 August D. Lutz Mods from 3-4 August UIP WG. +//* 18 Februray 2000 D. Lutz New Generic Exception Model +//* +//* +//* +//* +//*************************************************************** + +//*************************************************************** +//* The USIGS Common Object Specification (UCOS) contains +//* all the basic data types and interfaces common across +//* USIGS +//*************************************************************** + +#include "uco.idl" +#include "cb.idl" +#include "uid.idl" + +//*************************************************************** +//* +//* Module GIAS +//* +//* +//* Description: The main module for the Geospatial & Imagery +//* Access Service +//* +//* +//*************************************************************** + +module GIAS +{ + +//Forward references for all interfaces, just for convenience + +// The Library itself + interface Library; + + +// Abstract classes that help define the managers + interface LibraryManager; + interface RequestManager; + interface AccessManager; + +// Specific managers defined + interface OrderMgr; + interface CreationMgr; + interface UpdateMgr; + interface CatalogMgr; + interface StandingQueryMgr; + interface ProductMgr; + interface IngestMgr; + interface QueryOrderMgr; + interface DataModelMgr; +//interface VideoMgr; + +// The abstract request objects + interface Request; + +// Specific requests defined + interface OrderRequest; + interface CreateRequest; + interface CreateMetaDataRequest; + interface UpdateRequest; + interface SubmitQueryRequest; + interface SubmitStandingQueryRequest; + interface SetAvailabilityRequest; + interface HitCountRequest; + interface GetParametersRequest; + interface IngestRequest; + interface SubmitQueryOrderRequest; + interface GetRelatedFilesRequest; + interface CreateAssociationRequest; + interface UpdateByQueryRequest; + + +//*************************************************************** +//* DataTypes re-used from UCOS +//*************************************************************** + + typedef UCO::NameValueList PropertyList; + + typedef UCO::Rectangle GeoRegion; +enum GeoRegionType { + LINE_SAMPLE_FULL, + LINE_SAMPLE_CHIP, + LAT_LON , +ALL, +NULL_REGION}; + + + +//*************************************************************** +//* GIAS specific data types +//*************************************************************** + + +enum AvailabilityRequirement + { + REQUIRED, NOT_REQUIRED + }; + +typedef string UseMode; + +typedef sequence RsetList; + +enum OrderType {STANDING, IMMEDIATE}; + +typedef any ProductSpec; + +typedef string ProductFormat; +typedef string ImageUniqueIdentifier; +typedef string ImageFormat; +typedef string Compression; +typedef short BitsPerPixel; +typedef string Algorithm; +enum SupportDataEncoding {ASCII, EBCDIC}; + +typedef sequence < ProductFormat > ProductFormatList; +struct ImageSpec + { + ImageFormat imgform; + ImageUniqueIdentifier imageid; + Compression comp; + BitsPerPixel bpp; + Algorithm algo; + RsetList rrds; +GeoRegion sub_section; + GeoRegionType geo_region_type; + SupportDataEncoding encoding; + }; +typedef sequence < ImageSpec > ImageSpecList; + +struct AlterationSpec + { + ProductFormat pf; + ProductSpec ps; + GeoRegion sub_section; + GeoRegionType geo_region_type; + }; +typedef sequence < AlterationSpec > AlterationSpecList; + +struct PackagingSpec + { + string package_identifier; + string packaging_format_and_compression; + }; + + +struct TailoringSpec { + UCO::NameNameList specs; + }; + +struct MediaType + { + string media_type; + unsigned short quantity; + }; + +typedef sequence < MediaType > MediaTypeList; + +struct PhysicalDelivery + { +string address; + }; + +enum DestinationType + { +FTP, EMAIL, PHYSICAL + }; + +union Destination switch (DestinationType) + { + case FTP: UCO::FileLocation f_dest; + case EMAIL: UCO::EmailAddress e_dest; + case PHYSICAL: PhysicalDelivery h_dest; + }; + + typedef sequence < Destination > DestinationList; + + + +struct ValidationResults + { + boolean valid; + boolean warning; + string details; + }; + +typedef sequence < ValidationResults > ValidationResultsList; + +typedef UCO::Name RelatedFileType; +typedef sequence RelatedFileTypeList; +struct RelatedFile + { + RelatedFileType file_type; + UCO::FileLocation location; + }; +typedef sequence RelatedFileList; + +enum ConceptualAttributeType + { + FOOTPRINT, CLASSIFICATION, OVERVIEW, THUMBNAIL, DATASETTYPE, + MODIFICATIONDATE, PRODUCTTITLE, DIRECTACCESS, DIRECTACCESSPROTOCOL, UNIQUEIDENTIFIER, DATASIZE}; + + +typedef string Entity; +typedef string ViewName; +typedef sequence< ViewName > ViewNameList; +struct View { + ViewName view_name; + boolean orderable; + ViewNameList sub_views; +}; + +typedef sequence < View > ViewList; + + +enum DomainType + { + DATE_VALUE, TEXT_VALUE, INTEGER_VALUE, FLOATING_POINT_VALUE, LIST, + ORDERED_LIST, INTEGER_RANGE, FLOATING_POINT_RANGE, GEOGRAPHIC, INTEGER_SET, FLOATING_POINT_SET, GEOGRAPHIC_SET, BINARY_DATA, BOOLEAN_VALUE }; + + struct DateRange + { + UCO::AbsTime earliest; + UCO::AbsTime latest; + }; + +struct IntegerRange + { + long lower_bound; + long upper_bound; + }; + + struct FloatingPointRange + { + double lower_bound; + double upper_bound; + }; + + + +typedef sequence < IntegerRange > IntegerRangeList; + +typedef sequence < FloatingPointRange > FloatingPointRangeList; +union Domain switch (DomainType) + { + + case DATE_VALUE: DateRange d; + case TEXT_VALUE: unsigned long t; + case INTEGER_VALUE: IntegerRange iv; + case INTEGER_SET: IntegerRangeList is; + case FLOATING_POINT_VALUE: FloatingPointRange fv; + case FLOATING_POINT_SET: FloatingPointRangeList fps; + case LIST: UCO::NameList l; + case ORDERED_LIST: UCO::NameList ol; + case INTEGER_RANGE: IntegerRange ir; + case FLOATING_POINT_RANGE: FloatingPointRange fr; + case GEOGRAPHIC: UCO::Rectangle g; + case GEOGRAPHIC_SET: UCO::RectangleList gs; + case BINARY_DATA: UCO::BinData bd; + case BOOLEAN_VALUE: boolean bv; + }; + +enum AttributeType + { + TEXT, + INTEGER, + FLOATING_POINT, + UCOS_COORDINATE, + UCOS_POLYGON, + UCOS_ABS_TIME, + UCOS_RECTANGLE, + UCOS_SIMPLE_GS_IMAGE, + UCOS_SIMPLE_C_IMAGE, + UCOS_COMPRESSED_IMAGE, + UCOS_HEIGHT, + UCOS_ELEVATION, + UCOS_DISTANCE, + UCOS_PERCENTAGE, + UCOS_RATIO, + UCOS_ANGLE, + UCOS_FILE_SIZE, + UCOS_FILE_LOCATION, + UCOS_COUNT, + UCOS_WEIGHT, + UCOS_DATE, + UCOS_LINESTRING, + UCOS_DATA_RATE, + UCOS_BIN_DATA, + BOOLEAN_DATA, + UCOS_DURATION + }; + + +enum RequirementMode + { + MANDATORY, OPTIONAL + }; + +struct AttributeInformation + { + string attribute_name; + AttributeType attribute_type; + Domain attribute_domain; + string attribute_units; + string attribute_reference; +RequirementMode mode; + string description; + boolean sortable; + boolean updateable; + }; +typedef sequence < AttributeInformation > AttributeInformationList; +struct Association { +string name; +ViewName view_a; +ViewName view_b; +string description; +UCO::Cardinality card; +AttributeInformationList attribute_info; + }; + +typedef sequence AssociationList; +typedef sequence < Library > LibraryList; + +typedef string ManagerType; + typedef sequence < ManagerType > ManagerTypeList; + +typedef sequence < Request > RequestList; + +typedef sequence < UseMode > UseModeList; + + +struct LibraryDescription + { + string library_name; + string library_description; + string library_version_number; + }; +typedef sequence < LibraryDescription > LibraryDescriptionList; + +struct Query{ +ViewName view; +string bqs_query; +}; + + +typedef UCO::DAGList QueryResults; + + + +enum NamedEventType +{ +START_EVENT, +STOP_EVENT, +FREQUENCY_EVENT +}; + +struct Event { + string event_name; + NamedEventType event_type; + string event_description; +}; +typedef sequence < Event > EventList; + +enum DayEvent { MON, TUE, WED, THU, FRI, SAT, SUN, FIRST_OF_MONTH, END_OF_MONTH }; + +struct DayEventTime +{ + DayEvent day_event; + UCO::Time time; +}; + +enum LifeEventType {ABSOLUTE_TIME, DAY_EVENT_TIME, NAMED_EVENT, RELATIVE_TIME}; + +union LifeEvent switch ( LifeEventType) + { + case ABSOLUTE_TIME: UCO::AbsTime at; + case DAY_EVENT_TIME: DayEventTime day_event; + case NAMED_EVENT: string ev; + case RELATIVE_TIME: UCO::Time rt; + }; + +typedef sequence < LifeEvent > LifeEventList; + + +struct QueryLifeSpan { + LifeEvent start; + LifeEvent stop; + LifeEventList frequency; +}; + + + + enum Polarity { ASCENDING, DESCENDING }; + + struct SortAttribute + { + UCO::Name attribute_name; + Polarity sort_polarity; + }; + + typedef sequence < SortAttribute > SortAttributeList; + +struct DelayEstimate { + unsigned long time_delay; + boolean valid_time_delay; +}; +struct ProductDetails { + MediaTypeList mTypes; + UCO::NameList benums; + AlterationSpec aSpec; + UID::Product aProduct; + string info_system_name; + }; +typedef sequence ProductDetailsList; + +struct DeliveryDetails { + Destination dests; + string receiver; + string shipmentMode; + }; +typedef sequence < DeliveryDetails > DeliveryDetailsList; + +struct OrderContents { + string originator; + TailoringSpec tSpec; + PackagingSpec pSpec; + UCO::AbsTime needByDate; + string operatorNote; + short orderPriority; + ProductDetailsList prod_list; + DeliveryDetailsList del_list; + }; + +struct QueryOrderContents { + string originator; + TailoringSpec tSpec; + PackagingSpec pSpec; + string operatorNote; + short orderPriority; + AlterationSpec aSpec; + DeliveryDetailsList del_list; + }; + +struct AccessCriteria { + string userID; + string password; + string licenseKey; +}; +struct PackageElement { + UID::Product prod; + UCO::NameList files; + }; +typedef sequence< PackageElement > PackageElementList; + + struct DeliveryManifest { + string package_name; + PackageElementList elements; + }; +typedef sequence DeliveryManifestList; + +typedef string CallbackID; + +//*************************************************************** + //* The Exceptions Identifiers + //* Note: Three sets of IDL Strings Constants are being used as + //* the Exceptions for the GIAS + //*************************************************************** +// UCO::InvalidInputParameter Exceptions +const string BadAccessCriteriaConst = "BadAccessCriteria"; +const string BadAccessValueConst = "BadAccessValue"; +const string BadCreationAttributeValueConst = "BadCreationAttributeValue"; +const string BadEmailAddressConst = "BadEmailAddress"; +const string BadGeoRegionConst = "BadGeoRegion"; +const string BadLocationConst = "BadLocation"; +const string BadPropertyValueConst = "BadPropertyValue"; +const string BadQueryConst = "BadQuery"; +const string BadQueryAttributeConst = "BadQueryAttribute"; +const string BadQueryValueConst = "BadQueryValue"; +const string BadTimeConst = "BadTime"; +const string BadUseModeConst = "BadUseMode"; +const string UnknownCallBackConst = "UnknownCallBack"; +const string UnknownCreationAttributeConst = "UnknownCreationAttribute"; +const string UnknownManagerTypeConst = "UnknownManagerType"; +const string UnknownProductConst = "UnknownProduct"; +const string UnknownPropertyConst = "UnknownProperty"; +const string UnknownRequestConst = "UnknownRequest"; +const string UnregisteredCallbackConst = "UnregisteredCallback"; +const string UnknownUseModeConst = "UnknownUseMode"; +const string BadOrderConst = "BadOrder"; +const string UnknownViewNameConst = "UnknownViewName"; +const string UnknownEntityConst = "UnknownEntity"; +const string UnsupportedConceptualAttributeConst = "UnsupportedConceptualAttribute"; +const string NoValuesRequestedConst = "NoValuesRequested"; +const string BadSortAttributeConst = "BadSortAttribute"; +const string NonUpdateableAttributeConst = "NonUpdateableAttribute"; +const string BadFileTypeConst = "BadFileType"; +const string InvalidCardinalityConst = "InvalidCardinality"; +const string UnknownAssociationConst = "UnknownAssociation"; +const string InvalidObjectConst = "InvalidObject"; +const string UnknownCategoryConst = "UnknownCategory"; +const string InvalidEventConst = "InvalidEvent"; +const string BadResultAttributeConst = "BadResultAttribute"; +const string BadUpdateAttributeConst = "BadUpdateAttribute"; +const string ImplementationLimitConst = "ImplementationLimit"; + +// UCO::ProcessingFault Exceptions +const string ProductUnavailableConst = "ProductUnavailable"; +const string LockUnavailableConst = "LockUnavailable"; +const string UnsafeUpdateConst = "UnsafeUpdate"; +const string ProductLockedConst = "ProductLocked"; + +// UCO::SystemFault Exceptions +const string GeneralSystemFaultConst = "GeneralSystemFault"; + + + + +//*************************************************************** +//* The Interfaces +//*************************************************************** + +//*************************************************************** + //* interface GIAS::Library. + //* + //* Description: This object represents a Library. It + //* provides operations to discover and acquire manager objects, + //* which provide access to all the functionality of this + //* Library. + //* + //*************************************************************** + + interface Library + { + +ManagerTypeList get_manager_types () + raises (UCO::ProcessingFault, UCO::SystemFault); + + LibraryManager get_manager (in ManagerType manager_type, in + AccessCriteria access_criteria) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + LibraryDescription get_library_description () + raises (UCO::ProcessingFault, UCO::SystemFault); + + LibraryDescriptionList get_other_libraries (in AccessCriteria access_criteria) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + }; + + +//*************************************************************** + //* Interface GIAS::LibraryManager + //* + //* Description: This (abstract) object defines the basic + //* functions common to all types of managers. + //* + //* + //*************************************************************** + + interface LibraryManager + { + UCO::NameList get_property_names () + raises (UCO::ProcessingFault, UCO::SystemFault); + + PropertyList get_property_values (in UCO::NameList + desired_properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + LibraryList get_libraries () + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* Interface GIAS::RequestManager + //* + //* Description: This (abstact) object defines the basic + //* functions common to managers that use operations that + //* generate request objects. + //* + //* + //*************************************************************** + + interface RequestManager + { + + RequestList get_active_requests () + raises (UCO::ProcessingFault, UCO::SystemFault); + + unsigned long get_default_timeout () + raises (UCO::ProcessingFault, UCO::SystemFault); + + void set_default_timeout (in unsigned long new_default) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + unsigned long get_timeout (in Request aRequest) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void set_timeout (in Request aRequest, in unsigned long + new_lifetime) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void delete_request (in Request aRequest) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: AccessManager + //* + //* Description: Provides functions to check and request the + //* availability of Library products for specific purposes + //* + //*************************************************************** + + interface AccessManager:RequestManager + { + + UseModeList get_use_modes () +raises (UCO::ProcessingFault, UCO::SystemFault); + boolean is_available (in UID::Product product, in UseMode use_mode) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +// Returns the time (in seconds) estimated to put the requested product // into the requested UseMode. DOES NOT request a change in the +// availability of product. + + unsigned long query_availability_delay (in UID::Product product, + in AvailabilityRequirement availability_requirement, + in UseMode use_mode) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +short get_number_of_priorities() +raises (UCO::ProcessingFault, UCO::SystemFault); + +SetAvailabilityRequest set_availability (in UID::ProductList products, in AvailabilityRequirement availability_requirement, in UseMode use_mode, in short priority) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + }; + +//*************************************************************** + //* The Managers + //* + //*************************************************************** + +//*************************************************************** + //* interface GIAS::QueryOrderMgr + //* Derived from GIAS::LibraryManager and + //* GIAS::RequestManager + //* + //* Description: Provides operations to submit a + //* query based order. + //* + //* + //*************************************************************** + + + interface QueryOrderMgr:LibraryManager, RequestManager + { + + EventList get_event_descriptions() +raises (UCO::ProcessingFault, UCO::SystemFault); + +SubmitQueryOrderRequest submit_query_order ( + + in Query aQuery, + in QueryLifeSpan lifespan, + in OrderType o_type, + in QueryOrderContents order, +in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + }; + +//*************************************************************** +//* interface GIAS:: VideoMgr +//* Derived from GIAS::LibraryManager and GIAS::AccessManager +//* +//* Description: Provides operations to retrieve video data +//* +//* NOTE: This interface is TBR. +//*************************************************************** + +//interface VideoMgr : LibraryManager, AccessManager { + //}; + +//*************************************************************** + +//*************************************************************** + //* interface GIAS:: OrderMgr + //* Derived from GIAS:: LibraryManager and GIAS::AccessManager + //* + //* Description: Provides operations to submit orders for Products + //* contained in the Library: + //* + //* + //* + //*************************************************************** + +interface OrderMgr:LibraryManager, AccessManager + { + + + UCO::NameList get_package_specifications() +raises (UCO::ProcessingFault, UCO::SystemFault); + + ValidationResults validate_order (in OrderContents order, in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + OrderRequest order (in OrderContents order, in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + }; + +//*************************************************************** + //* interface GIAS:: DataModelMgr + //* Derived from GIAS:: LibraryManager + //* + //* Description: Provides operations to discover the elements of the + //* data model in use by the library + //* + //* + //* + //*************************************************************** + + interface DataModelMgr:LibraryManager + { +UCO::AbsTime get_data_model_date (in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +UCO::NameList get_alias_categories(in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +UCO::NameNameList get_logical_aliases(in string category, in PropertyList properties) +raises( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +string get_logical_attribute_name (in ViewName view_name,in ConceptualAttributeType attribute_type, in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +ViewList get_view_names (in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +AttributeInformationList get_attributes (in ViewName view_name,in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +AttributeInformationList get_queryable_attributes (in ViewName view_name,in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + UCO::EntityGraph get_entities (in ViewName view_name,in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + AttributeInformationList get_entity_attributes (in Entity aEntity,in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +AssociationList get_associations(in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +unsigned short get_max_vertices(in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); +}; + +//*************************************************************** + //* interface GIAS:: CreationMgr + //* Derived from GIAS::RequestManager and + //* GIAS::LibraryManager + //* Description: Provides operations to request/nominate the + //* archiving and cataloging of a new product to a Library. + //* + //* + //*************************************************************** + + interface CreationMgr:LibraryManager, RequestManager + { + CreateRequest create (in UCO::FileLocationList new_product,in RelatedFileList related_files, in UCO::DAG creation_metadata,in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + CreateMetaDataRequest create_metadata (in UCO::DAG creation_metadata, in ViewName view_name, in RelatedFileList related_files, in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +CreateAssociationRequest create_association( in string assoc_name, + in UID::Product view_a_object, + in UID::ProductList view_b_objects, +in UCO::NameValueList assoc_info) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + }; + + + + +//*************************************************************** + //* interface GIAS:: UpdateMgr + //* Derived from GIAS:: LibraryManager, and GIAS::RequestManager + //* Description: Provides operations to modify, extend or delete + //* existing catalog entries in a GIAS Library. + //* + //* + //*************************************************************** + + interface UpdateMgr: LibraryManager, RequestManager + { + void set_lock(in UID::Product lockedProduct) +raises( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + UpdateRequest update (in ViewName view, in UCO::UpdateDAGList changes, in RelatedFileList relfiles, in PropertyList properties) + raises( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); +UpdateByQueryRequest update_by_query(in UCO::NameValue updated_attribute, + in Query bqs_query, + + in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + void release_lock(in UID::Product lockedProduct) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void delete_product(in UID::Product prod) + raises(UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault +); + }; + + +//*************************************************************** + //* interface GIAS:: CatalogMgr + //* Derived from GIAS::LibraryManager and + //* GIAS::RequestManager + //* + //* Description: Provides operations to submit a query for + //* processing. + //* + //* + //*************************************************************** + + interface CatalogMgr:LibraryManager, RequestManager + { + + SubmitQueryRequest submit_query ( +in Query aQuery, +in UCO::NameList result_attributes, +in SortAttributeList sort_attributes, +in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + + + HitCountRequest hit_count (in Query + aQuery, in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + + }; + +//*************************************************************** + //* interface GIAS::StandingQueryMgr + //* Derived from GIAS::LibraryManager and + //* GIAS::RequestManager + //* + //* Description: Provides operations to submit a + //* standing query. + //* + //* + //*************************************************************** + +interface StandingQueryMgr:LibraryManager, RequestManager + { + + EventList get_event_descriptions() +raises (UCO::ProcessingFault, UCO::SystemFault); + + SubmitStandingQueryRequest submit_standing_query ( + in Query aQuery, + in UCO::NameList result_attributes, + in SortAttributeList sort_attributes, + in QueryLifeSpan lifespan, + in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + }; + +//*************************************************************** + //* interface GIAS:: ProductMgr + //* Derived from GIAS::LibraryManager and GIAS::AccessManager + //* + //* Description: Provides operations to retrieve data about a + //* specific data set. + //* + //* + //*************************************************************** + + interface ProductMgr:LibraryManager, AccessManager + { + + GetParametersRequest get_parameters (in UID::Product product, in UCO::NameList desired_parameters, in PropertyList properties) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +RelatedFileTypeList get_related_file_types( in UID::Product prod) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + GetRelatedFilesRequest get_related_files ( in UID::ProductList + products, in UCO::FileLocation location, in RelatedFileType + type, in PropertyList properties ) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, + UCO::SystemFault ); + + }; + +//*************************************************************** + //* interface GIAS:: IngestMgr + //* Derived from GIAS::LibraryManager and + //* GIAS::RequestManager + //* + //* Description: Provides operations to perform bulk transfers + //* of data between Libraries. + //* + //* + //*************************************************************** + +interface IngestMgr:LibraryManager, RequestManager + { + +// FileLocation contains a directory + IngestRequest bulk_pull (in UCO::FileLocation location, in PropertyList property_list) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + +// FileLocation contains a directory + IngestRequest bulk_push (in Query aQuery, in UCO::FileLocation location, in PropertyList property_list) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + }; + +//*************************************************************** + //* interface GIAS:: Request + //* + //* Description: An (abstract) object that provides operations + //* common to all forms of requests. + //* + //* + //*************************************************************** + + + interface Request + { + + UCO::RequestDescription get_request_description () + raises (UCO::ProcessingFault, UCO::SystemFault); + void set_user_info (in string message) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + UCO::Status get_status () + raises (UCO::ProcessingFault, UCO::SystemFault); + DelayEstimate get_remaining_delay () + raises (UCO::ProcessingFault, UCO::SystemFault); + void cancel () + raises (UCO::ProcessingFault, UCO::SystemFault); + CallbackID register_callback (in CB::Callback acallback) +raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + void free_callback (in CallbackID id) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + RequestManager get_request_manager () + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: OrderRequest + //* Derived from GIAS::Request + //* Description: Returned by calls to order. + //* + //* + //*************************************************************** + +interface OrderRequest:Request + { + UCO::State complete (out DeliveryManifest prods) + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: SubmitQueryOrderRequest + //* Derived from GIAS::Request + //* Description: Returned by calls to submit_query_order. + //* + //* + //*************************************************************** + +interface SubmitQueryOrderRequest:Request + { + + void pause() + raises (UCO::ProcessingFault, UCO::SystemFault); + + void resume() + raises (UCO::ProcessingFault, UCO::SystemFault); + +UCO::State complete_list (out DeliveryManifestList prods) + raises (UCO::ProcessingFault, UCO::SystemFault); + + UCO::State complete (out DeliveryManifest prods) + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //*************************************************************** + //* interface GIAS:: CreateRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to create + //* + //* + //*************************************************************** + +interface CreateRequest:Request + { + UCO::State complete (out UID::ProductList new_products) + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: CreateMetaDataRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to create_metadata + //* + //* + //*************************************************************** + + interface CreateMetaDataRequest:Request + { + UCO::State complete (out UID::Product new_product) + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + + +//*************************************************************** + //* interface GIAS:: UpdateRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to update + //* + //* + //*************************************************************** + +interface UpdateRequest:Request + { + + UCO::State complete () + raises (UCO::ProcessingFault, UCO::SystemFault); + + }; + + +//*************************************************************** + //* interface GIAS:: SubmitQueryRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to query + //* + //* + //*************************************************************** + +interface SubmitQueryRequest:Request + { + void set_number_of_hits (in unsigned long hits) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + UCO::State complete_DAG_results (out QueryResults results) + raises (UCO::ProcessingFault, UCO::SystemFault); + UCO::State complete_stringDAG_results (out UCO::StringDAGList results) + raises (UCO::ProcessingFault, UCO::SystemFault); + UCO::State complete_XML_results (out UCO::XMLDocument results) + raises (UCO::ProcessingFault, UCO::SystemFault); + + }; + +//*************************************************************** + //* interface GIAS:: SubmitStandingQueryRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to submit_standing_query + //* + //* + //*************************************************************** + + interface SubmitStandingQueryRequest:Request + { + void set_number_of_hits (in unsigned long hits) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + unsigned long get_number_of_hits() + raises (UCO::ProcessingFault, UCO::SystemFault); + + unsigned long get_number_of_hits_in_interval(in unsigned long interval) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + unsigned long get_number_of_intervals() + raises (UCO::ProcessingFault, UCO::SystemFault); + void clear_all() + raises (UCO::ProcessingFault, UCO::SystemFault); + + void clear_intervals(in unsigned long num_intervals) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void clear_before(in UCO::Time relative_time) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void pause() + raises (UCO::ProcessingFault, UCO::SystemFault); + void resume() + raises (UCO::ProcessingFault, UCO::SystemFault); + UCO::AbsTime get_time_last_executed() + raises (UCO::ProcessingFault, UCO::SystemFault); + UCO::AbsTime get_time_next_execution() +raises (UCO::ProcessingFault, UCO::SystemFault); + UCO::State complete_DAG_results (out QueryResults results) + raises (UCO::ProcessingFault, UCO::SystemFault); +UCO::State complete_stringDAG_results (out UCO::StringDAGList results) + raises (UCO::ProcessingFault, UCO::SystemFault); + UCO::State complete_XML_results (out UCO::XMLDocument results) + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: SetAvailabilityRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to makeAvailable + //* + //* ` + //*************************************************************** + + interface SetAvailabilityRequest:Request + { + UCO::State complete () + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: HitCountRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to Hitcount + //* + //* + //*************************************************************** + +interface HitCountRequest:Request + { + UCO::State complete (out unsigned long number_of_hits) + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: GetParametersRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to get_parameters + //* + //* + //*************************************************************** + + interface GetParametersRequest:Request + { + UCO::State complete (out UCO::DAG parameters) + raises (UCO::ProcessingFault, UCO::SystemFault); + UCO::State complete_StringDAG (out UCO::StringDAG parameters) + raises (UCO::ProcessingFault, UCO::SystemFault); + + + + }; + +//*************************************************************** + //* interface GIAS:: IngestRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to bulk_push and bulk_pull + //* + //* + //*************************************************************** + + interface IngestRequest:Request + { + UCO::State complete () + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + + +//*************************************************************** + //* interface GIAS:: GetRelatedFilesRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to get_related_files + //* + //* + //*************************************************************** + +interface GetRelatedFilesRequest:Request + { + UCO::State complete (out UCO::NameList locations) + raises (UCO::ProcessingFault, UCO::SystemFault); + }; + +//*************************************************************** + //* interface GIAS:: CreateAssociationRequest + //* Derived from GIAS::Request + //* + //* Description: Returned by calls to create_association + //* + //* + //*************************************************************** + +interface CreateAssociationRequest:Request + { + UCO::State complete () + raises (UCO::ProcessingFault, UCO::SystemFault); + + }; +//******************************************************************* +//* interface GIAS::UpdateByQueryRequest +//* Derived from GIAS::Request +//* Description: Returned by calls to update_by_query +//* +//******************************************************************* +interface UpdateByQueryRequest:Request + { + UCO::State complete () + raises (UCO::ProcessingFault, UCO::SystemFault); + + }; + +}; +#endif diff --git a/idl/gias/ps.idl b/idl/gias/ps.idl new file mode 100644 index 0000000000..08691f5022 --- /dev/null +++ b/idl/gias/ps.idl @@ -0,0 +1,979 @@ +#ifndef PS_IDL +#define PS_IDL + +//*************************************************************** + //* APPROVED via RFC N01-0268 on 6 August 2001 +//*************************************************************** + +//***************************************************************** + // FILE: profile.idl + // + // + // + // DESCRIPTION: Profile Service + // + // Defines the data types and interfaces needed to support search, + // retrieval and access to user, node, and system profiles. + // + // LIMITATIONS: + // + // + // SOFTWARE HISTORY: + // + //< + //*************************************************************************** + + #include "uco.idl" + #include "gias.idl" + + //*************************************************************************** + // MODULE: PS + //> The main module for the Profile Service + //< + //*************************************************************************** + module PS + { + +//*************************************************************** +//* The Exception Identifiers for Profile Service (PS) Module +//*************************************************************** + + const string UnknownProfileElementTypeConst = "UnknownProfileElementType"; + const string BadAccessCriteriaConst = "BadAccessCriteria"; + const string BadProfileElementConst = "BadProfileElement"; + const string BadAccessValueConst = "BadAccessValue"; + const string PasswordExpiredConst = "PasswordExpired"; + const string InvalidOrderConst = "InvalidOrder"; + const string InvalidQueryConst = "InvalidQuery"; + const string UnknownOperationConst = "UnknownOperation"; + const string VolumeReadAccessDeniedConst = "VolumeReadAccessDenied"; + const string VolumeWriteAccessDeniedConst = "VolumeWriteAccessDenied"; + const string FolderNotEmptyConst = "FolderNotEmpty"; + const string FolderExistsConst = "FolderExists"; + const string UnknownFolderItemTypeConst = "UnknownFolderItemType"; + const string UnknownVolumeConst = "UnknownVolume"; + const string UnknownPRIDConst = "UnknownPRID"; + const string PermissionDeniedConst = "PermissionDenied"; + const string BadFileLocationConst = "BadFileLocation"; + const string SystemFaultConst = "SystemFault"; + + typedef string ProfileElementType; + + typedef sequence ProfileElementTypeList; + + //*** + // Forward References + //*** + interface ProfileMgr; + interface Profile; + interface ProfileElement; + + //*** + // Forward References to the specific ProfileElements + //*** + interface BasicProfile; + interface GIASProfile; + interface SecureProfile; + interface SecureViewProfile; + + //************************************************************************** + // INTERFACE: ProfileMgr + //> The ProfileMgr provides access control to Profile objects + //< + //************************************************************************** + interface ProfileMgr + { + Profile get_profile(in UCO::NameValueList access_criteria) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //> Returns the Profile for the user identified in access_criteria. + //< + + string get_version() + raises (UCO::ProcessingFault, UCO::SystemFault); + //> Returns the version of this Profile manager. + //< + + void set_user_password + (in UCO::NameValueList access_criteria, + in string new_password) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + }; + + //************************************************************************** + // INTERFACE: Profile + //> The Profile object provides access to the contents of a Profile + // by serving as a container for ProfileElement objects of different types. + //< + //************************************************************************** + interface Profile + { + ProfileElementTypeList get_profile_element_types() + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> Returns a list of all ProfileElementTypes contained in this Profile. + //< + + ProfileElement get_profile_element(in ProfileElementType element_type) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //> Returns the ProfileElement of the specified type. + //< + + SecureProfile get_secure_profile_element + (in UCO::NameValueList trusted_access_criteria) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns the secure profile element that contains + // user security information that does not change across views. + // The trusted access criteria limits the availability of this + // information. If the access criteria does not contain expected names, + // the operation will return a BadAccessCriteria exception identifier. If the access + // criteria does not contain expected values, the operation will return a + // BadAccessValue exception identifier. + //< + + SecureViewProfile get_secure_view_profile_element + (in UCO::NameValueList trusted_access_criteria, + in GIAS::ViewName view) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //> This method returns the secure profile element that contains + // user security information that is view specific. The + // trusted access criteria limits the availability of this + // information. If the access criteria does not contain expected names, + // the operation will return a BadAccessCriteria exception identifier. If the access + // criteria does not contain expected values, the operation will return a + // BadAccessValue exception identifier. + //< + + UCO::AbsTime get_last_update_time() + raises (UCO::ProcessingFault, UCO::SystemFault); + //> Returns the time the Profile was last changed. + //< + + void get_profiled_views(out UCO::NameList view_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + //> Returns a list of views that are valid for a particular profile + //< + + }; + + + //************************************************************************** + // INTERFACE ProfileElement + //> The ProfileElement object serves as the base abstract class for all + // types of content objects in a Profile. It contains operations common to + // all types of ProfileElement objects. + //< + //************************************************************************** + interface ProfileElement + { + UCO::AbsTime get_last_update_time() + raises (UCO::ProcessingFault, UCO::SystemFault); + //> Returns the time this ProfileElement was last changed. + //< + }; + + + //************************************************************************** + // INTERFACE: BasicProfile + // + //> The BasicProfile object is a specialization of the ProfileElement + // object to support all types of users. It contains operations and + // types common to all types of users. + //< + //************************************************************************** + interface BasicProfile : ProfileElement + { + + struct TelephoneNumber + { + string name; + string number; + }; + + typedef sequence TelephoneNumberList; + + struct UserInformation + { + string name; + string organization; + string address; + string city; + string state; + string zip; + string country; + string email; + TelephoneNumberList phone_numbers; + UCO::FileLocation ftp_location; + UCO::AbsTime password_expiration; + + }; + + struct UserPreference + { + string name; + string value; + boolean editable; + string description; + }; + + typedef sequence UserPreferenceList; + + + typedef sequence PreferenceNameList; + + struct UserPreferenceDomain + { + GIAS::Domain adomain; + boolean multi_select; + }; + + struct SecurityInformation + { + string classification; + boolean security_administrator_flag; + }; + + void get_user_information (out UserInformation info) + raises (UCO::ProcessingFault, UCO::SystemFault); + + void set_user_information (in UserInformation info) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void get_security_information (out SecurityInformation info) + raises (UCO::ProcessingFault, UCO::SystemFault); + + void get_available_preferences (out PreferenceNameList names) + raises (UCO::ProcessingFault, UCO::SystemFault); + + void get_preference_domain (in string preference_name, + out GIAS::Domain domain) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void get_user_preference (in string preference_name, + out UserPreference preference) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void get_user_preferences (out UserPreferenceList list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + void set_user_preference (in UserPreference preference) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void set_user_preferences (in UserPreferenceList preferences) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + }; + + //************************************************************************** + // INTERFACE: SecureProfile + // + //> The SecureProfile object is a specialization of the ProfileElement + // object to support basic security information access. + //< + //************************************************************************** + interface SecureProfile : ProfileElement + { + //*** + // Authorization Information + //*** + + struct Authorization + { + string authorization_classification; + UCO::NameList exception_country_list; + UCO::NameList releasable_country_list; + UCO::NameList releasable_org_list; + UCO::NameList distribution_limit_code_list; + UCO::NameList access_agreement_list; + UCO::NameList compartment_list; + }; + //> This data structure holds the elements that constitute + // a discretionary access authorization for the user. + //< + + void get_authorization + (out Authorization aauthorization) + raises (UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns the authorization information. + //< + + void get_authorization_classification + (out string classification) + raises (UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns a user's authorization classification level. + //< + + void get_exception_by_countries + (out UCO::NameList country_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> This operation returns the exception by country list. + //< + + void get_releasable_countries + (out UCO::NameList country_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> This operation returns the releasable country list. + //< + + void get_releasable_organizations + (out UCO::NameList organization_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> This operation returns the releasable organization list. + //< + + void get_distribution_limitation_codes + (out UCO::NameList code_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> This operation returns the distribution limitation code list. + //< + + void get_access_agreements + (out UCO::NameList agreement_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> This operation returns the access agreement list. + //< + + void get_compartments + (out UCO::NameList compartment_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> This operation returns the compartment list for the user. + //< + + //*** + // Attribute/entity Restriction Information + //*** + + enum AccessType {READ_DENIED, WRITE_DENIED}; + + void get_restricted_attributes + (in AccessType access_type, + out UCO::NameList attribute_list) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns the restricted attribute identifiers + // for the user relative to a specific view. + //< + + void get_restricted_entities + (in AccessType access_type, + out UCO::NameList entity_list) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns the restricted entity identifiers + // for the user relative to a specific view. + //< + + + }; + + //************************************************************************** + // INTERFACE: SecureViewProfile + // + //> The SecureViewProfile object is a specialization of the SecureProfile + // object to support view-oriented security information access. + //< + //************************************************************************** + interface SecureViewProfile : SecureProfile + { + //*** + // Authorization Information + //*** + + boolean use_authorization() + raises (UCO::ProcessingFault, UCO::SystemFault); + + //> This operation returns a true indication if the authorizaton + // is to be used for discretionary access control for + // the specified view. + //< + + + //*** + // Attribute Value Restriction Information + //*** + + void get_restricted_attribute_values + (out string restriction) + raises (UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns the restricted attribute value + // string for the user relative to a specific view. + //< + }; + + + //************************************************************************** + // INTERFACE: GIASProfile + // + //> The GIASProfile object is a specialization of the ProfileElement + // object to support users of GIAS Libraries. It contains methods and + // types specific to GIAS libraries operations. + //< + //************************************************************************** + interface GIASProfile : ProfileElement + { + + + //*** + // Defines a profile id used to uniquely identify objects within the + // user profile + //*** + typedef string PRID; + typedef sequence PRIDList; + + void get_allowable_operations(out UCO::NameList operation_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns a list of the allowable operations for + // a particular user. + //< + + boolean operation_is_allowed (in string operation) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //> This operation returns TRUE if the specified manager is + // accessible by the user, otherwise FALSE is returned. + //< + + typedef string FolderTree; + // string defined as: \folder1\folder2\folder3\etc... + // An empty string or '\' denotes the root folder. + + struct FolderLocation + { + string volume; + FolderTree folder; + }; + + struct VolumeInfo + { + boolean default_volume; + string volume; + boolean read_permission; + boolean write_permission; + boolean create_delete_permission; + }; + + typedef sequence < VolumeInfo > VolumeInfoList; + typedef sequence < FolderLocation> FolderLocationList; + + enum FolderItemType + { + SAVED_QUERY, + SUBMITTED_QUERY, + SUBMITTED_QUERY_AND_HIT_COUNT, + STANDING_QUERY, + SAVED_ORDER, + SUBMITTED_ORDER, + STANDING_ORDER, + SUBMITTED_CREATE, + SUBMITTED_HIT_COUNT, + RESULTS_DIGEST, + SESSION, + ALL + }; + + struct FolderItem + { + PRID item_id; + FolderLocation location; + string name; + string description; + FolderItemType type; + UCO::AbsTime creation_time; + UCO::AbsTime last_accessed_time; + UCO::AbsTime last_modified_time; + string owner_name; + string user_created_name; + string user_last_accessed_name; + string user_last_modified_name; + UCO::Rectangle area_of_interest_mbr; + }; + + typedef sequence < FolderItem > FolderItemList; + + //*** + // FolderItem holds one of the following: + // SubmittedQuery + // SubmittedQueryAndHitCount + // SubmittedOrder + // SubmittedCreate + // StandingQuery + // StandingOrder + // SavedQuery + // SavedOrder + // ResultsDigest + // SavedSession + //*** + typedef any FolderContent; + typedef sequence FolderContentList; + + enum SearchDepth + { + SINGLE_FOLDER, + FOLDER_TREE + }; + + //*** + // Return a list of available volumes + //*** + void list_volumes( + out VolumeInfoList volume_list) + raises (UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Creates a new folder in the location specified + //*** + void new_folder ( + in FolderLocation folder) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Moves a folder's location + //*** + void update_folder ( + in FolderLocation folder, + in FolderLocation new_location) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Removes an empty folder + //*** + void remove_folder ( + in FolderLocation folder) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Return a list of folders in a specific folder + //*** + void list_folders ( + in FolderLocation folder, + out FolderLocationList query_items) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Update a specific folder item in the profile + //*** + void update_folder_item ( + in PRID item_id, + in FolderLocation location, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Returns the contents of a folder item + // N.B. Some folder item types may override this operation. + //*** + void get_entry ( + in PRID item_id, + out FolderContent entry) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Removes a folder item + //*** + void remove_entry ( + in PRID item_id) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Returns a list of folder contents of a given type. + // Can search just in a given folder or recursively search the folder + // tree starting at a given folder location. + // N.B. This call may not be useful for some folder item types. + //*** + void list_entries ( + in FolderItemType type, + in FolderLocation starting_point, + in SearchDepth depth, + out FolderContentList entries) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Returns a list of folder information for a given folder item type. + // Can search just in a given folder or recursively search the folder + // tree starting at a given folder location. + //*** + void list_entry_items ( + in FolderItemType type, + in FolderLocation starting_point, + in SearchDepth depth, + out FolderItemList entry_items) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + //*********************************************************************** + // Submitted Queries + // + //> These are queries that have been submitted to a Library, but the + // client has not yet completed the retrieval of the query results. + // This is useful when queries are time-consuming. + //< + //*********************************************************************** + struct SubmittedQuery + { + FolderItem item_info; + GIAS::SubmitQueryRequest request; + }; + typedef sequence SubmittedQueryList; + + +//*********************************************************************** + // Submitted Queries and Hit Count + // + //> These are queries that have been submitted to a Library, but the + // client has not yet completed the retrieval of the query results. + // This is useful when queries are time-consuming. + //< + //*********************************************************************** + struct SubmittedQueryAndHitCount + { + FolderItem item_info; + GIAS::SubmitQueryRequest request; + GIAS::RequestList hit_count_requests; + }; + typedef sequence SubmittedQueryAndHitCountList; + + PRID new_submitted_query ( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::SubmitQueryRequest request) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + PRID new_submitted_query_and_hitcount ( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::SubmitQueryRequest request, + in GIAS::RequestList hit_count_requests) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + +struct SubmittedHitCount + { + FolderItem item_info; + GIAS::HitCountRequest request; + }; + typedef sequence SubmittedHitCountList; + + + + + PRID new_submitted_hitcount ( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::HitCountRequest request) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + //*********************************************************************** + // Submitted Orders + // + //> These are orders that have been submitted to a Library, but the + // user has not yet deleted. A user may need to keep orders around + // if they take a long time to complete. + //< + //*********************************************************************** + struct SubmittedOrder + { + FolderItem item_info; + GIAS::OrderRequest request; + }; + typedef sequence SubmittedOrderList; + + PRID new_submitted_order( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::OrderRequest order) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*********************************************************************** + // Submitted Creates + // + //> These are creates that have been submitted to a Library, but the + // user has not yet deleted. A user may need to keep these around + // if they take a long time to complete. + //< + //*********************************************************************** + struct SubmittedCreate + { + FolderItem item_info; + GIAS::CreateRequest request; + }; + typedef sequence SubmittedCreateList; + + PRID new_submitted_create( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::CreateRequest create_request) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + //*********************************************************************** + // Standing Queries + // + //> These are queries that get executed on a scheduled basis. The client + // needs to be able to access the query request at any time. + //< + //*********************************************************************** + struct StandingQuery + { + FolderItem item_info; + GIAS::SubmitStandingQueryRequest request; + }; + + typedef sequence StandingQueryList; + + PRID new_standing_query ( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::SubmitStandingQueryRequest request) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + //*********************************************************************** + // Standing Orders + // + //> These are orders that get executed on a scheduled basis. The client + // needs to be able to access the order request at any time. + //< + //*********************************************************************** + struct StandingOrder + { + FolderItem item_info; + GIAS::QueryOrderContents order; + GIAS::SubmitStandingQueryRequest query; + }; + + typedef sequence StandingOrderList; + + PRID new_standing_order( + in FolderLocation folder, + in string name, + in string description, + in GIAS::QueryOrderContents order, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::SubmitStandingQueryRequest query) + raises (UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + //*********************************************************************** + // Saved Queries + // + //> + //< + //*********************************************************************** + struct SavedQuery + { + FolderItem item_info; + GIAS::Query bqs; + UCO::FileLocation thumbnail_location; + boolean browse_image_returned_flag; + UCO::NameList result_attributes; + GIAS::SortAttributeList sort_attributes; + string geographic_datum; + UCO::AbsTime last_submitted_date; + }; + + typedef sequence < SavedQuery > SavedQueryList; + + + + //*** + // Save the query information to the specified folder. + //*** + PRID new_saved_query ( + in FolderLocation folder, + in string name, + in string description, + in GIAS::Query bqs, + in boolean browse_image_returned_flag, + in UCO::NameList result_attributes, + in GIAS::SortAttributeList sort_attributes, + in string geographic_datum, + in UCO::AbsTime last_submitted_date, + in UCO::Rectangle area_of_interest_mbr) + raises ( UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Update a specified query from the profile + //*** + void update_saved_query ( + in PRID saved_query_id, + in string name, + in string description, + in GIAS::Query bqs, + in boolean browse_image_returned_flag, + in UCO::NameList result_attributes, + in GIAS::SortAttributeList sort_attributes, + in string geographic_datum, + in UCO::AbsTime last_submitted_date, + in UCO::Rectangle area_of_interest_mbr) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + + + //*********************************************************************** + // Saved Orders + // + //> + //< + //*********************************************************************** + struct SavedOrder + { + FolderItem item_info; + GIAS::OrderContents order; + }; + + typedef sequence < SavedOrder > SavedOrderList; + + PRID new_saved_order ( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::OrderContents order) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + void update_saved_order( + in PRID saved_order_id, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in GIAS::OrderContents order) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + //*********************************************************************** + // Results Digests + // + //> + //< + //*********************************************************************** + struct ResultsDigest + { + FolderItem item_info; + }; + + typedef sequence < ResultsDigest > ResultsDigestList; + + //*** + // Save the results digest to the specified folder... the + // server will ftp get the digest from the specified file + // location. + //*** + PRID new_results_digest ( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in UCO::FileLocation digest_location) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Update the specified results digest in the profile + //*** + void update_results_digest( + in PRID results_digest_id, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in UCO::FileLocation digest_location) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Get the results digest for the specified ID... the server + // will ftp put the digest to the specified file location. + //*** + void get_results_digest ( + in PRID query_id, + in UCO::FileLocation destination_file) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + + //*********************************************************************** + // Saved Sessions + // + //> + //< + //*********************************************************************** + struct SavedSession + { + FolderItem item_info; + string session_text; + }; + + typedef sequence < SavedSession > SavedSessionList; + + //*** + // Save the session to the specified folder... the + // server will ftp get the session from the specified file + // location. + // *** + PRID new_saved_session ( + in FolderLocation folder, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in UCO::FileLocation session_location) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Update the specified saved session in the profile + //*** + void update_saved_session( + in PRID saved_session_id, + in string name, + in string description, + in UCO::Rectangle area_of_interest_mbr, + in UCO::FileLocation session_location) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + //*** + // Get the saved session for the specified ID... the server + // will ftp put the session to the specified file location. + //*** + void get_saved_session ( + in PRID query_id, + in UCO::FileLocation destination_file) + raises ( + UCO::InvalidInputParameter, UCO::ProcessingFault, UCO::SystemFault); + + }; // end interface GIASProfile + + }; +#endif diff --git a/idl/gias/uco.idl b/idl/gias/uco.idl new file mode 100644 index 0000000000..d0fbe7d8dd --- /dev/null +++ b/idl/gias/uco.idl @@ -0,0 +1,417 @@ +#ifndef UCO_IDL +#define UCO_IDL + +//*************************************************************** + //* APPROVED via RFC N01-0268 on 6 August 2001 +//*************************************************************** + + +// ************************************************************* +//* +//* The USIGS Common Object Specification +//* +//* +//* Description: Defines fundamental data types and +//* interfaces to be used by other specifications to +//* support interoperation across independently designed +//* interfaces. +//* +//* +//* +//* History: +//* Date Author Comment +//* ----- ------ -------- +//* 15 May 97 D. Lutz Initial release for review +//* 2 July 97 D. Lutz Released for TEM review +//* 11 July 97 D. Lutz Changes based on 2 July TEM +//* Comments +//* 16 Oct 97 D. Lutz Changes based on 7 Oct TEM +//* Comments +//* 14 Nov 97 D. Lutz Changes based on 4 Nov TEM +//* Comments +//* 17 Dec 97 D. Lutz Changes based on 9 Dec TEM +//* Comments +//* 13 Apr 98 J. Baldo Changes based on feedback from +//* distributions of UCOS v1.1 and +//* GIAS v3.1 +//* 2 July 98 J. Baldo/D. Lutz Changes based on feedback +//* from 22-23 June 98 TEM +//* 29 Sept 98 J. Baldo/D. Lutz Changes based on feedback +//* from 22-23 September 1998 TEM +//* +//* from 4-5 August 1999 TEM - Simplified the 2 and 3D Coordinates to be floats only. +//* from 19 January 2000 TEM - +//* included a generic exceptionÆs model that GIXS, +//*GIAS Profile will use. +//* 7 March 2000 from March 2000 TEM - added new //* structure that is somewhat similar //* to NameValueTable called a //* StringTable +//* +//* Notes +//* ------- +//* 7 March 2000 Needed to include the UID Module +//* +//************************************************************* + +#include "uid.idl" + +// The USIGS Common Objects +module UCO +{ + // Generic data types + + + typedef string Name; + typedef sequence < Name > NameList; + + struct NameName + { + Name name1; + Name name2; + }; + + typedef sequence NameNameList; + + struct NameValue + { + Name aname; + any value; + }; + + typedef sequence < NameValue > NameValueList; + + typedef float Percentage; + + + typedef double Angle; + + struct Ratio { + double numerator; + double denominator; + }; + + +typedef double DataRate; + + typedef string UCOS_NULL; + + struct FileLocation + { + string user_name; + string password; + string host_name; + string path_name; + string file_name; + }; + + typedef sequence < FileLocation > FileLocationList; + + enum Protocol { HTTP, FTP, FILE }; + + struct DirectAccessLocation + { + Protocol access_protocol; + FileLocation file_location; + }; + + struct Date + { + unsigned short year; + unsigned short month; + unsigned short day; + }; + + struct Time + { + unsigned short hour; + unsigned short minute; + float second; + }; + + typedef Time Duration; + + struct AbsTime + { + Date aDate; + Time aTime; + }; + + + typedef string EmailAddress; + + // Begin DAG definition + + typedef unsigned long NodeID; + + enum NodeType { ROOT_NODE, ENTITY_NODE, RECORD_NODE, + ATTRIBUTE_NODE }; + + struct Node + { + NodeID id; + NodeType node_type; + Name attribute_name; + any value; + }; + enum Cardinality { ONE_TO_ONE, ONE_TO_MANY, MANY_TO_ONE, MANY_TO_MANY, ONE_TO_ZERO_OR_MORE, ONE_TO_ONE_OR_MORE, ONE_TO_ZERO_OR_ONE }; + + struct Edge + { + NodeID start_node; + NodeID end_node; + string relationship_type; +}; + + typedef sequence < Node > NodeList; + typedef sequence < Edge > EdgeList; + + + struct DAG + { + NodeList nodes; + EdgeList edges; + }; + + typedef sequence < DAG > DAGList; + +// Begin StringDAG definition +struct StringNode + { + NodeID id; + NodeType node_type; + Name attribute_name; + string value; + }; +typedef sequence < StringNode > StringNodeList; + +struct StringDAG + { + any prod; + StringNodeList nodes; + EdgeList edges; + }; + +typedef sequence < StringDAG > StringDAGList; + + + +enum ChangeType { ADD_CHANGE, UPDATE_CHANGE, DELETE_CHANGE }; + +struct Change { + + NodeID changed_node; + ChangeType change_type; + +}; + +typedef sequence ChangeList; + +struct UpdateDAG { + + DAG data; + ChangeList changes; + +}; + +typedef sequence UpdateDAGList; + + struct RequestDescription + { + string user_info; + string request_type; + string request_info; + NameValueList request_details; + }; +typedef sequence < RequestDescription > RequestDescriptionList; +typedef sequence BinData; + +typedef string XMLDocument; + + + + // Basic Geospatial data types + + + // 3D and 2D floating point coordinate + struct Coordinate2d { + double x; + double y; + }; + + struct Coordinate3d { + double x; + double y; + double z; + }; + + + struct LinearDimension + { + double dimension; + string reference_system; + }; + + +typedef double AreaDimension; + + typedef LinearDimension Height; + typedef LinearDimension Elevation; + typedef LinearDimension Distance; + typedef LinearDimension Radius; + typedef sequence < Coordinate2d > LineString2d; + typedef sequence < Coordinate3d > LineString3d; + typedef sequence < Coordinate2d > Polygon; + typedef sequence < Polygon > PolygonSet; + + struct Circle + { + Coordinate2d centerpoint; + Radius aRadius; + }; + + struct Ellipse + { + Coordinate2d centerpoint; + Distance minor_axis_len; + Distance major_axis_len; + Angle north_angle; + }; + + struct Rectangle + { + Coordinate2d upper_left; + Coordinate2d lower_right; + }; + + typedef sequence < Rectangle > RectangleList; + + + typedef double FileSize; + + + +typedef double Weight; + + // Simple composite geospatial datatypes + + enum BufferType + { + OCTET_DATA, CHAR_DATA, SHORT_DATA, USHORT_DATA, + LONG_DATA, ULONG_DATA, FLOAT_DATA, DOUBLE_DATA + }; + + typedef sequence < octet > octetList; + typedef sequence < char >charList; + typedef sequence < unsigned short >ushortList; + typedef sequence < short >shortList; + typedef sequence < unsigned long >ulongList; + typedef sequence < long >longList; + typedef sequence < float >floatList; + typedef sequence < double >doubleList; + + union Buffer + switch (BufferType) + { + case OCTET_DATA: octetList octet_buffer; + case CHAR_DATA: charList char_buffer; + case USHORT_DATA:ushortList ushort_buffer; + case SHORT_DATA: shortList short_buffer; + case ULONG_DATA: ulongList ulong_buffer; + case LONG_DATA: longList long_buffer; + case FLOAT_DATA: floatList float_buffer; + case DOUBLE_DATA:doubleList double_buffer; + }; + + + struct SimpleGSImage + { + unsigned long width; + unsigned long height; + Buffer pixels; + }; + + + struct SimpleCImage + { + unsigned long width; + unsigned long height; + Buffer red_pixels; + Buffer green_pixels; + Buffer blue_pixels; + }; + + struct CompressedImage + { + unsigned long width; + unsigned long height; + string compression_form; + octetList data; + }; + + + enum State + { + COMPLETED, IN_PROGRESS, ABORTED, CANCELED, PENDING, + SUSPENDED, RESULTS_AVAILABLE, TRANSFER_COMPLETE + }; + + struct Status + { + State completion_state; + boolean warning; + string status_message; + }; + + struct EntityNode + { + NodeID id; + string entity_name; + }; + +struct EntityRelationship + { + NodeID start_node; + NodeID end_node; + Cardinality start_to_end_card; + Cardinality end_to_start_card; + }; + +typedef sequence < EntityNode > EntityNodeList; +typedef sequence < EntityRelationship > EntityRelationshipList; + +struct EntityGraph + { + EntityNodeList nodes; + EntityRelationshipList relationship; + }; + +//*********************************************************** +// Exception Structure and Exceptions for the UCO (also +// used for GIAS, GIXS and Profile Service) +//************************************************************ + + struct exception_details { + string exception_name; + boolean standard_exception_name; + string exception_desc; + }; + +//InvalidInputParameter Exception + +exception InvalidInputParameter { + exception_details details; + UCO::NameList badInputParameters; + }; + +//Processing Fault Exception + +exception ProcessingFault { + exception_details details; + }; + +//System Fault Exception + +exception SystemFault { + exception_details details; + }; + +}; +#endif diff --git a/idl/gias/uid.idl b/idl/gias/uid.idl new file mode 100644 index 0000000000..cbb54ca2de --- /dev/null +++ b/idl/gias/uid.idl @@ -0,0 +1,38 @@ +#ifndef UID_IDL +#define UID_IDL + +//*************************************************************** + //* APPROVED via RFC N01-0268 on 6 August 2001 +//*************************************************************** + +// ************************************************************* +//* +//* The USIGS Universal Product Identifier +//* Specification +//* +//* +//* Description: Defines a universal USIGS product +//* identification. +//* +//* +//* History: +//* Date Author Comment +//* ----- ------ -------- +//* 29 Sept 98 J. Baldo and D. Lutz Initial release for +//* review. +//* +//* Notes +//* ------- +//* NONE +//* +//* +// ************************************************************* +module UID +{ +interface Product + { + }; + +typedef sequence < Product > ProductList; +}; +#endif -- cgit v1.2.1