418 lines
8.4 KiB
Plaintext
418 lines
8.4 KiB
Plaintext
#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
|