Namespace: OpenEdge.DataAdmin.DataSource
Class
DataSource
Parent classes:
Inherits: OpenEdge.DataAdmin.DataSource.DBQuery
Implements: OpenEdge.DataAdmin.DataSource.IDataSource

/* Copyright (c) 2011-2014 by progress Software Corporation.
/*
/* all rights reserved. no part of this program or document
/* may be reproduced in any form or by any means without
/* permission in writing from progress Software Corporation.
Purpose: DataSource manages the source query for a target and deals with various
query tranformation in support of this. It implements IQueryMap
to utilize QueryString for the transformation HD




Method Summary
Options Name Purpose
LOGICAL AddUniqueOrNone (character, QueryString) /* converts a parent find on external parent key to query expression on internal key true means value is added or not needed false means not found ? means ambiguous */
AfterRow (dataset-handle)
AfterSetUrl () /* override to set url dependent props/vars*/
LOGICAL Attach (handle)
LOGICAL CheckQuery (QueryString, character)
HANDLE CloneQuery (handle) /* We may clone this query in order to get row keys from a result without causing the 'real' query to reposition. This may be used when performing multi-select operations in the UI, where we don't want to move off the current record. Note that these actions may be expensive, because of the cost of creating, opening, etc the query. */
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER ColumnExpression (character, character, character) /* (part of IQueryMap interface used by QueryString to map query */
CHARACTER ColumnSortSource (character) /** convert sort expression column for QueryString (second parse - column already transformed by ColumnSource(pccolumn) (part of IQueryMap interface used by QueryString to map query) */
CHARACTER ColumnSource (character) /* return source columns for query mapping (part of IQueryMap interface used by QueryString to map query */
CHARACTER ColumnValue (character)
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER CompareBuffers (handle, handle, character, character) /** compares two buffers and returns a comma separated list of fields that are different This is mainly needed to check for changes in character fields, since A = a. Many international characters that really are different will also be seen as equal by the ABL . @param bufferHandle of first buffer @param bufferHandle of the other buffer @param Excludefielsd comma separated list of fields to ignore @param options One of RAW,CASE-SENSITIVE or CASE-INSENSITIVE */
LOGICAL CompareClobValues (handle, character, handle, character) /** Purpose: compare two CLOB buffer-fields Notes: The core does not currently support compare of CLOBs */
HANDLE CreateMapSource ()
CreateQuery ()
Overrides OpenEdge.DataAdmin.DataSource.DBQuery:CreateQuery ()
HANDLE CreateSaveSource (character)
CHARACTER CurrentQuery () Return the current query for query manipulation and prepare. returns the default if not yet prepared. ------------------------------------------------------------------------------*/
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER DefaultQuery () Return the BaseQuery or build a default query. ------------------------------------------------------------------------------*/
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
DefineSource () /* hook for sub classes that uses empty constructor to postpone definitions The implementation must define Tables, PhysicalTables. BaseQuery or BaseQueryTemplate and BaseTableExpression should then typically also be defined here, since they need to match the tables/physicaltables. Undefined should be set to false since this may be checked in more than one place */
Inherited from OpenEdge.DataAdmin.DataSource.DBQuery
DeleteQuery () /* delete the handles */
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
DetachDatasource (handle)
LOGICAL Fill ()
CHARACTER FindTableJoinValues (character, character) /* Called from FindUniqueOrNoneQuery and must be overridden with unique find for related tables if this functionality is needed. returns a query expression of the table if it was found and throw standard progress error from the find */
CHARACTER FindUniqueOrNoneQuery (character, character) /* */
HANDLE GetBufferHandles ()
Overrides OpenEdge.DataAdmin.DataSource.DBQuery:GetBufferHandles ()
CHARACTER GetCurrentRowKey ()
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER GetNextPosition () /* are there more records ahead? */
CHARACTER GetPosition () /* order neutral position that is safe if tables changes order passed back to setPosition note that one need all rowids when the unique table is not the first */
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
LOGICAL PositionToLastBatch () /* set start rowid to get one batch including last*/
LOGICAL PositionToRow (integer)
LOGICAL PositionToWhere (character, logical) /* set start rowid to where position */
LOGICAL Prepare ()
Overrides OpenEdge.DataAdmin.Binding.Query.DataAdminQuery:Prepare ()
LOGICAL Prepare (handle)
LOGICAL Prepare (handle, character, character) /* prepare the query with a client query expression @DEPRECATED - The DataAccess should now use Prepare (handle,ITableRequest) The IFetchMessage has a GetTableRequest that always returns a an object also for blank query - This is kept for backwards compatibility - There may be cases that uses the join parameter, which has no replacement in the new prepare. This should likely be handled by an override an dedicated constructor. if this complicates stuff and join really is needed add a prepare(buffer,ITableRequest,join) Parameters @param buffer - client temp-table buffer in dataset @param clientquery - query from client expressed on the temp-table buffer must in principle be passed if active parent relation or builtquery is empty, but an empty query is valid when requesting all data @param pcjoin - optional join to a parent */
LOGICAL Prepare (handle, character, character, character) /* prepare the query Parameters @param buffer - client temp-table buffer in dataset @param builtquery - optional final built query Caller may build a query from key information instead of from querystring for performance (queryparsing is the single most expensive operation of the source) @param clientquery - query from client expressed on the temp-table buffer must in principle be passed if active parent relation or builtquery is empty, but an empty query is valid when requesting all data @param pcjoin - optional join to a parent */
LOGICAL Prepare (handle, ITableRequest)
Preparebuffer (handle) /* override to set callback - define binding etc.. */
LOGICAL PrepareQueryString (QueryString) /* prepare with QueryString (subclass override this for query optimization) */
LOGICAL Refresh (handle)
LOGICAL Refreshbuffers (handle)
RemoveQueryBuffers (handle)
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
LOGICAL ResetQuery ()
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
LOGICAL Save (handle)
LOGICAL Save (handle, handle, integer)
LOGICAL Save (handle, integer)
LOGICAL SaveChildBuffers (handle, character, integer)
LOGICAL SetPosition (character)
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
LOGICAL SetPosition (character[]) /* set position as returned from GetPosition */
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
LOGICAL SetPosition (rowid[]) /* set position as returned from GetPosition */
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
HANDLE SingleExtent (handle)
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER SourceFields (character, character)
CHARACTER TrimQuery (character) /* remove for or preselect from query - duplicated in DataAdminContext - belongs in utility */
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery

Constructor Summary
Options Name Purpose
DataSource () /* Expects DefineSource to be overridden with assign of Tables and PhysicalTables */
DataSource (character, character)
DataSource (character, character, character)
DataSource (character, character, handle, character)
DataSource (handle, character, character, character)

Property Summary
Options Name Purpose
CHARACTER BaseQuery
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER BaseQueryTemplate
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER BaseTableExpression
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
INTEGER BatchSize
OpenEdge.DataAdmin.DataAccess.IDataAccess DataAccess
OpenEdge.DataAdmin.DataSource.DatabaseInfo DatabaseInfo
HANDLE DataBuffer
HANDLE DataSourceHandle
CHARACTER FieldMapping
Progress.Lang.Error FillError
CHARACTER FillMode
CHARACTER KeyFields
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
LOGICAL Lazy
INTEGER NumRecords
HANDLE ParentRelation
CHARACTER PhysicalTables
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
HANDLE QueryHandle
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER QueryLock
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER QueryMode
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER SaveChildNames
HANDLE SaveSourceHandle
CHARACTER Table
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
CHARACTER Tables
Overrides OpenEdge.DataAdmin.DataSource.DBQuery:Tables
HANDLE TempSourceBuffer
Inherited from OpenEdge.DataAdmin.DataSource.DBQuery
CHARACTER Url
LOGICAL UseRowid
Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
OpenEdge.DataAdmin.Lang.WebUtil WebUtil


Method Detail
Top

PROTECTED LOGICAL AddUniqueOrNone (character, QueryString)

/* converts a parent find on external parent key to query expression on internal key
true means value is added or not needed
false means not found
? means ambiguous
Parameters:
pcTable CHARACTER
pQueryStr OpenEdge.DataAdmin.Lang.QueryString
Returns LOGICAL
Top

PUBLIC AfterRow (dataset-handle)

Parameters:
hds DATASET-HANDLE
Top

PROTECTED AfterSetUrl ()

/* override to set url dependent props/vars
Top

PUBLIC LOGICAL Attach (handle)

Parameters:
bufferHandle HANDLE
Returns LOGICAL
Top

PROTECTED LOGICAL CheckQuery (QueryString, character)

Parameters:
pQueryStr OpenEdge.DataAdmin.Lang.QueryString
pcTable CHARACTER
Returns LOGICAL
Top

PROTECTED HANDLE CloneQuery (handle)

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
/* We may clone this query in order to get row keys from a result without
causing the 'real' query to reposition. This may be used when performing
multi-select operations in the UI, where we don't want to move off the
current record. Note that these actions may be expensive, because of the
cost of creating, opening, etc the query.
Parameters:
phSource HANDLE
Returns HANDLE
Top

PUBLIC CHARACTER ColumnExpression (character, character, character)

/* (part of IQueryMap interface used by QueryString to map query
Parameters:
pcColumn CHARACTER
pcOperator CHARACTER
pcValue CHARACTER
Returns CHARACTER
Top

PUBLIC CHARACTER ColumnSortSource (character)

Purpose: convert sort expression column for QueryString
(second parse - column already transformed by ColumnSource(pccolumn)
(part of IQueryMap interface used by QueryString to map query)
Parameters:
pcColumn CHARACTER
Returns CHARACTER
Top

PUBLIC CHARACTER ColumnSource (character)

/* return source columns for query mapping
(part of IQueryMap interface used by QueryString to map query
Parameters:
pcColumn CHARACTER
Returns CHARACTER
Top

PUBLIC CHARACTER ColumnValue (character)

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Parameters:
pcColumn CHARACTER
Returns CHARACTER
Top

PROTECTED CHARACTER CompareBuffers (handle, handle, character, character)

Purpose: compares two buffers and returns a comma separated list of fields that are different
This is mainly needed to check for changes in character fields, since A = a.
Many international characters that really are different will also be seen as equal by the
ABL .
Parameters:
phbuffer1 HANDLE
phBuffer2 HANDLE
pcExclude CHARACTER
pcOption CHARACTER
Returns CHARACTER
Top

PROTECTED LOGICAL CompareClobValues (handle, character, handle, character)

Purpose: Purpose: compare two CLOB buffer-fields
Notes: The core does not currently support compare of CLOBs
Parameters:
phColumn1 HANDLE
pcOperator CHARACTER
phcolumn2 HANDLE
pcStrength CHARACTER
Returns LOGICAL
Top

PROTECTED HANDLE CreateMapSource ()

Returns HANDLE
Top

PROTECTED CreateQuery ()

Overrides OpenEdge.DataAdmin.DataSource.DBQuery:CreateQuery ()
Top

PROTECTED HANDLE CreateSaveSource (character)

Parameters:
cKey CHARACTER
Returns HANDLE
Top

PROTECTED CHARACTER CurrentQuery ()

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Purpose: Return the current query for query manipulation and prepare.
returns the default if not yet prepared.
Returns CHARACTER
Top

PUBLIC CHARACTER DefaultQuery ()

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Purpose: Return the BaseQuery or build a default query.
Returns CHARACTER
Top

PROTECTED DefineSource ()

Inherited from OpenEdge.DataAdmin.DataSource.DBQuery
/* hook for sub classes that uses empty constructor to postpone definitions
The implementation must define Tables, PhysicalTables.
BaseQuery or BaseQueryTemplate and BaseTableExpression should then typically
also be defined here, since they need to match the tables/physicaltables.
Undefined should be set to false since this may be checked in more than
one place
Top

PROTECTED DeleteQuery ()

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
/* delete the handles
Top

PROTECTED DetachDatasource (handle)

Parameters:
phBuffer HANDLE
Top

PUBLIC LOGICAL Fill ()

Returns LOGICAL
Top

PROTECTED CHARACTER FindTableJoinValues (character, character)

/*
Called from FindUniqueOrNoneQuery and must be overridden with unique find
for related tables if this functionality is needed.
returns a query expression of the table if it was found and
throw standard progress error from the find
Parameters:
pTable CHARACTER
pFind CHARACTER
Returns CHARACTER
Top

PROTECTED CHARACTER FindUniqueOrNoneQuery (character, character)

/*
Parameters:
pcTable CHARACTER
pcQuery CHARACTER
Returns CHARACTER
Top

PROTECTED HANDLE GetBufferHandles ()

Overrides OpenEdge.DataAdmin.DataSource.DBQuery:GetBufferHandles ()
Returns HANDLE
Top

PUBLIC CHARACTER GetCurrentRowKey ()

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PRIVATE CHARACTER GetNextPosition ()

/* are there more records ahead?
Returns CHARACTER
Top

PUBLIC CHARACTER GetPosition ()

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
/* order neutral position that is safe if tables changes order
passed back to setPosition
note that one need all rowids when the unique table is not
the first
Returns CHARACTER
Top

PUBLIC LOGICAL PositionToLastBatch ()

/* set start rowid to get one batch including last
Returns LOGICAL
Top

PRIVATE LOGICAL PositionToRow (integer)

Parameters:
piRow INTEGER
Returns LOGICAL
Top

PUBLIC LOGICAL PositionToWhere (character, logical)

/* set start rowid to where position
Parameters:
pcWhere CHARACTER
plFill LOGICAL
Returns LOGICAL
Top

PUBLIC LOGICAL Prepare ()

Overrides OpenEdge.DataAdmin.Binding.Query.DataAdminQuery:Prepare ()
Returns LOGICAL
Top

PUBLIC LOGICAL Prepare (handle)

Parameters:
phBuffer HANDLE
Returns LOGICAL
Top

PUBLIC LOGICAL Prepare (handle, character, character)

/* prepare the query with a client query expression
@DEPRECATED - The DataAccess should now use Prepare (handle,ITableRequest)
The IFetchMessage has a GetTableRequest that always returns a
an object also for blank query
- This is kept for backwards compatibility
- There may be cases that uses the join parameter, which
has no replacement in the new prepare.
This should likely be handled by an override an dedicated
constructor. if this complicates stuff and join really is
needed add a prepare(buffer,ITableRequest,join)
Parameters
must in principle be passed if active parent relation or builtquery is empty,
but an empty query is valid when requesting all data
Parameters:
phBuffer HANDLE
pcClientQuery CHARACTER
pcJoin CHARACTER
- optional join to a parent
Returns LOGICAL
Top

PROTECTED LOGICAL Prepare (handle, character, character, character)

/* prepare the query
Parameters
Caller may build a query from key information instead of from querystring
for performance (queryparsing is the single most expensive operation of the source)
must in principle be passed if active parent relation or builtquery is empty,
but an empty query is valid when requesting all data
Parameters:
phBuffer HANDLE
pcBuiltQuery CHARACTER
pcClientQuery CHARACTER
pcJoin CHARACTER
- optional join to a parent
Returns LOGICAL
Top

PUBLIC LOGICAL Prepare (handle, ITableRequest)

Parameters:
phBuffer HANDLE
req OpenEdge.DataAdmin.Message.ITableRequest
Returns LOGICAL
Top

PROTECTED Preparebuffer (handle)

/* override to set callback - define binding etc..
Parameters:
phBuffer HANDLE
Top

PROTECTED LOGICAL PrepareQueryString (QueryString)

/* prepare with QueryString (subclass override this for query optimization)
Parameters:
poQueryString OpenEdge.DataAdmin.Lang.QueryString
Returns LOGICAL
Top

PUBLIC LOGICAL Refresh (handle)

Parameters:
bufferHandle HANDLE
Returns LOGICAL
Top

PUBLIC LOGICAL Refreshbuffers (handle)

Parameters:
bufferHandle HANDLE
Returns LOGICAL
Top

PROTECTED RemoveQueryBuffers (handle)

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Parameters:
phQuery HANDLE
Top

PROTECTED LOGICAL ResetQuery ()

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns LOGICAL
Top

PUBLIC LOGICAL Save (handle)

Parameters:
bufferHandle HANDLE
Returns LOGICAL
Top

PUBLIC LOGICAL Save (handle, handle, integer)

Parameters:
parentbufferHandle HANDLE
bufferHandle HANDLE
piState INTEGER
Returns LOGICAL
Top

PUBLIC LOGICAL Save (handle, integer)

Parameters:
bufferHandle HANDLE
piState INTEGER
Returns LOGICAL
Top

PROTECTED LOGICAL SaveChildBuffers (handle, character, integer)

Parameters:
phBuffer HANDLE
pcChildnames CHARACTER
piState INTEGER
Returns LOGICAL
Top

PUBLIC LOGICAL SetPosition (character)

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Parameters:
pKeyWhere CHARACTER
Returns LOGICAL
Top

PUBLIC LOGICAL SetPosition (character[])

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
/* set position as returned from GetPosition
Parameters:
pcPosition CHARACTER
Returns LOGICAL
Top

PUBLIC LOGICAL SetPosition (rowid[])

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
/* set position as returned from GetPosition
Parameters:
prPosition ROWID
Returns LOGICAL
Top

PROTECTED HANDLE SingleExtent (handle)

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Parameters:
ph HANDLE
Returns HANDLE
Top

PRIVATE CHARACTER SourceFields (character, character)

Parameters:
tablename CHARACTER
clientFields CHARACTER
Returns CHARACTER
Top

PROTECTED CHARACTER TrimQuery (character)

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
/* remove for or preselect from query - duplicated in DataAdminContext - belongs in utility
Parameters:
pcQuery CHARACTER
Returns CHARACTER


Constructor Detail
Top

PUBLIC DataSource ()

/* Expects DefineSource to be overridden with assign of Tables and PhysicalTables
Top

PUBLIC DataSource (character, character)

Parameters:
pcTables CHARACTER
pcMapping CHARACTER
Top

PUBLIC DataSource (character, character, character)

Parameters:
pcTables CHARACTER
pcPhysicalTables CHARACTER
pcMapping CHARACTER
Top

PUBLIC DataSource (character, character, handle, character)

Parameters:
pcTables CHARACTER
pcPhysicalTables CHARACTER
hTempSource HANDLE
pcMapping CHARACTER
Top

PUBLIC DataSource (handle, character, character, character)

Parameters:
hTempSource HANDLE
pcTables CHARACTER
pcPhysicalTables CHARACTER
pcMapping CHARACTER


Property Detail
Top

PUBLIC CHARACTER BaseQuery

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PROTECTED CHARACTER BaseQueryTemplate

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PROTECTED CHARACTER BaseTableExpression

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PUBLIC INTEGER BatchSize

Returns INTEGER
Top

PUBLIC OpenEdge.DataAdmin.DataAccess.IDataAccess DataAccess

Returns OpenEdge.DataAdmin.DataAccess.IDataAccess
Top

PROTECTED OpenEdge.DataAdmin.DataSource.DatabaseInfo DatabaseInfo

Returns OpenEdge.DataAdmin.DataSource.DatabaseInfo
Top

PROTECTED HANDLE DataBuffer

Returns HANDLE
Top

PROTECTED HANDLE DataSourceHandle

Returns HANDLE
Top

PROTECTED CHARACTER FieldMapping

Returns CHARACTER
Top

PUBLIC Progress.Lang.Error FillError

Returns Progress.Lang.Error
Top

PUBLIC CHARACTER FillMode

Returns CHARACTER
Top

PUBLIC CHARACTER KeyFields

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PROTECTED LOGICAL Lazy

Returns LOGICAL
Top

PUBLIC INTEGER NumRecords

Returns INTEGER
Top

PROTECTED HANDLE ParentRelation

Returns HANDLE
Top

PUBLIC CHARACTER PhysicalTables

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PROTECTED HANDLE QueryHandle

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns HANDLE
Top

PROTECTED CHARACTER QueryLock

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PROTECTED CHARACTER QueryMode

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PUBLIC CHARACTER SaveChildNames

Returns CHARACTER
Top

PROTECTED HANDLE SaveSourceHandle

Returns HANDLE
Top

PUBLIC CHARACTER Table

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns CHARACTER
Top

PUBLIC CHARACTER Tables

Overrides OpenEdge.DataAdmin.DataSource.DBQuery:Tables
Returns CHARACTER
Top

PROTECTED HANDLE TempSourceBuffer

Inherited from OpenEdge.DataAdmin.DataSource.DBQuery
Returns HANDLE
Top

PUBLIC CHARACTER Url

Returns CHARACTER
Top

PUBLIC LOGICAL UseRowid

Inherited from OpenEdge.DataAdmin.Binding.Query.DataAdminQuery
Returns LOGICAL
Top

PROTECTED OpenEdge.DataAdmin.Lang.WebUtil WebUtil

Returns OpenEdge.DataAdmin.Lang.WebUtil


Copyright © 2020 Progress Software Corporation. All rights Reserved.

Progress® OpenEdge® Release 12.2.0