diff options
Diffstat (limited to 'idl/gias/uco.idl')
-rw-r--r-- | idl/gias/uco.idl | 417 |
1 files changed, 417 insertions, 0 deletions
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 <NameName> 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 <Change> ChangeList; + +struct UpdateDAG { + + DAG data; + ChangeList changes; + +}; + +typedef sequence <UpdateDAG> UpdateDAGList; + + struct RequestDescription + { + string user_info; + string request_type; + string request_info; + NameValueList request_details; + }; +typedef sequence < RequestDescription > RequestDescriptionList; +typedef sequence <octet> 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 |