public class NDFNdxHandler extends Object implements NdxHandler, HdxDocumentFactory
URLs are given in the format:
container.sdf
or
container.sdf#
path
where the container.sdf
part is a full absolute or
relative URL referring
to the HDS container file, and the optional fragment identifier
gives the HDS path within that container file in the traditional
dot-separated format. If there is no fragment identifier
(no #
), the object at the top level of the HDS container
file is understood.
This is a singleton class; use getInstance()
to get an instance.
HDSReference
Modifier and Type | Method and Description |
---|---|
static NDFNdxHandler |
getInstance()
Returns an NDFNdxHandler.
|
boolean |
makeBlankNdx(URL url,
Ndx template)
Constructs a new Ndx containing writable and uninitialised
array components at the given URL with characteristics
matching those of a given template Ndx.
|
Document |
makeHdxDocument(URL url)
Obtains a Document representing the data referred to by the URL.
|
Source |
makeHdxSource(URL url)
Obtains a Source which can produce the data referred to by the
URL.
|
Ndx |
makeNdx(HDSObject hobj,
URL persistentURL,
AccessMode mode)
Constructs an Ndx based on an existing HDS object.
|
Ndx |
makeNdx(URL url,
AccessMode mode)
Creates an NDX with the given mode from a URL referening an HDS file.
|
boolean |
outputNdx(URL url,
Ndx orig)
Constructs a new Ndx which is a copy of the given Ndx at a
location determined by a given URL.
|
public static NDFNdxHandler getInstance()
LinkageError
- if the JNIHDS package is not availablepublic Ndx makeNdx(URL url, AccessMode mode) throws IOException
makeNdx
in interface NdxHandler
url
- the location of the HDS objectmode
- the read/write/update mode for data accessIOException
- if the URL is understood but an Ndx cannot
be madepublic Ndx makeNdx(HDSObject hobj, URL persistentURL, AccessMode mode) throws HDSException
hobj
- the HDS object to be viewed as an NdxpersistentURL
- the URL at which this NDX persists.
Use null
if hobj
resides
in a temporary file or is otherwise transient.mode
- the read/write/update mode for the Ndx array datahobj
, or null
if it doesn't look like an NDFHDSException
- if there is an error in HDSIllegalArgumentException
- if hobj
doesn't look like
and NDF structurepublic boolean makeBlankNdx(URL url, Ndx template) throws IOException
NdxHandler
If the URL is not recognised by this handler or it is not known
how to construct such an Ndx then false
should be returned.
If the handler recognises the URL but some error occurs in
creating the new Ndx, then an IOException should be thrown;
however, if it is possible that a different handler could
correctly construct a writable Ndx as requested then a false
return is preferred.
makeBlankNdx
in interface NdxHandler
url
- a URL at which the new NDX should be writtentemplate
- a template Ndx object from which non-array data
should be initialised - all scalar components
will be copied from it, and new blank writable
array components matching the ones in it will be
createdurl
,
false if it doesn't understand this URLIOException
- if the URL is understood but an NDArray cannot
be madepublic boolean outputNdx(URL url, Ndx orig) throws IOException
NdxHandler
The return status indicates whether such a resource was successfully created. If the URL is not recognised or this factory does not feel qualified to construct an Ndx with the given URL then it must return false. If some error occurs during construction then an IOException should in general be thrown; however if this factory thinks that another factory might have more luck then a false return is preferred.
outputNdx
in interface NdxHandler
url
- the URL at which the resource backing the Ndx is
to be writtenorig
- an Ndx whose data is to be copied to the resource
given by url
IOException
- if an error occurred during the resource
creation or data copyingpublic Document makeHdxDocument(URL url) throws HdxException
HdxDocumentFactory
makeHdxDocument
in interface HdxDocumentFactory
HdxException
- if we ought to be able to read this type
of URL, but processing fails for some reason. That is, do not
simply fail silently in this situation.HdxResourceType
public Source makeHdxSource(URL url) throws HdxException
HdxDocumentFactory
makeHdxSource
in interface HdxDocumentFactory
HdxException
- if we ought to be able to read this type
of URL, but processing fails for some reason. That is, do not
simply fail silently in this situation.Copyright © 2024 Central Laboratory of the Research Councils. All Rights Reserved.