## org.autoplot.datasource.DataSetURI

Works with DataSourceRegistry to translate a URI into a DataSource. Also, will provide completions.

## DataSetURI( )

## RECOGNIZE_FILE_EXTENSION_JSON

carefully inspect the file to see if there is a particular handler for it.

## RECOGNIZE_FILE_EXTENSION_XML

carefully inspect the file to see if there is a particular handler for it.

## abbreviateForHumanComsumption

abbreviateForHumanComsumption( String ssuri, int len ) → String

return a human-readable abbreviation of the URI, limiting to len characters.

### Parameters

ssuri - a String
len - an int

### Returns:

a string of length no more than len characters
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## blurTsbResolutionUri

blurTsbResolutionUri( String value ) → String

create the URI without the timerange.

### Parameters

value - a uri. e.g. /tmp/foo$Y$m$d.dat?timerange=2014-001

### Returns:

null or the value without the timerange, e.g. /tmp/foo$Y$m$d.dat
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## blurTsbUri

blurTsbUri( String value ) → String

create the URI without the timerange.

### Parameters

value - a uri. e.g. /tmp/foo$Y$m$d.dat?timerange=2014-001

### Returns:

null or the value without the timerange, e.g. /tmp/foo$Y$m$d.dat
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## checkLength

checkLength( java.io.File file ) → void

check that the file has length>0 and throw EmptyFileException if it does. This code is the standard way this should be done.

### Parameters

file - a File

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## downloadResourceAsTempFile

downloadResourceAsTempFile( java.net.URL url, ProgressMonitor mon ) → java.io.File

This loads the URL to a local temporary file. If the temp file is already downloaded and less than 10 seconds old, it will be used.

### Parameters

url - the address to download.
mon - a progress monitor.

### Returns:

a File in the FileSystemCache. The file will have question marks and ampersands removed.

### See Also:

DataSetURI.downloadResourceAsTempFile.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## downloadResourceAsTempFile

downloadResourceAsTempFile( java.net.URL url, int timeoutSeconds, ProgressMonitor mon ) → java.io.File

This was introduced when we needed access to a URL with arguments. This allows us to download the file in a script and then read the file. It will put the file in the .../fscache/temp/ directory, and the parameters are encoded in the name. Note this cannot be used to download HTML content, because checkNonHtml is called. We may introduce "downloadHtmlResourceAsTempFile" or similar if it's needed. This will almost always download, very little caching is done. We allow subsequent calls within 10 seconds to use the same file (by default). The timeoutSeconds parameter can be used to set this to any limit. Files older than one day are deleted. This is not deleted if the file is already local. Do not delete this file yourself, it should be deleted when the process exits.

### Parameters

url - the address to download.
timeoutSeconds - if positive, the number of seconds to allow use of a downloaded resource. If -1, then the default ten seconds is used. 12 hours is the longest allowed interval.
mon - a progress monitor, or null.

### Returns:

a File in the FileSystemCache. The file will have question marks and ampersands removed.

### See Also:

HtmlUtil#getInputStream(java.net.URL) which is not used but serves a similar function.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## fromFile

fromFile( java.io.File file ) → String

canonical method for converting from File to human-readable string. This simply tacks on "file://" to the filename. This was introduced so that there is one canonical way to do this.

### Parameters

file - a File

### Returns:

a String
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## fromUri

fromUri( java.net.URI uri ) → String

canonical method for converting URI to human-readable string, containing spaces and other illegal characters. Note pluses in the query part are interpreted as spaces. See also URISplit.uriDecode,etc.

### Parameters

uri - an URI

### Returns:

a String
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getCacheFilename

getCacheFilename( java.net.URI suri ) → java.io.File

provide standard logic for identifying the cache location for a file. The file will not be downloaded, but clients can check to see if such resource has already been loaded. There is one case where this might be slow, and that's when a zip file must be downloaded to get the location. This returns null if the file is not from the cache (e.g. local file references).

### Parameters

suri - the uri like http://autoplot.org/data/autoplot.dat

### Returns:

the cache file, like /home/jbf/autoplot_data/fscache/http/autoplot.org/data/autoplot.dat, or null if the file is not from the cache.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getCompletions

getCompletions( String surl, int carotpos, ProgressMonitor mon ) → java.util.List

this is never used in the application code. It must be left over from an earlier system. This is used in Test005, some scripts, and IDL codes, so don't delete it!

### Parameters

surl - a String
carotpos - an int
mon - a ProgressMonitor

### Returns:

a java.util.List
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getDataSource

getDataSource( java.net.URI uri ) → org.autoplot.datasource.DataSource

get the data source for the URI.

### Parameters

uri - the URI.

### Returns:

the data source from which the data set can be retrieved.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getDataSource

getDataSource( String suri ) → org.autoplot.datasource.DataSource

get the data source for the URI.

### Parameters

suri - the URI.

### Returns:

the data source from which the data set can be retrieved.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getDataSourceFactory

getDataSourceFactory( java.net.URI uri, ProgressMonitor mon ) → org.autoplot.datasource.DataSourceFactory

get the datasource factory for the URL. This has the rarely-used logic that looks up MIME types for HTTP requests.

### Parameters

uri - the URI of the data source.
mon - progress monitor

### Returns:

the factory that produces the data source.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getDataSourceFormat

getDataSourceFormat( java.net.URI uri ) → org.autoplot.datasource.DataSourceFormat

for now, just hide the URI stuff from clients, let's not mess with factories

### Parameters

uri - the URI describing the output format and any arguments.

### Returns:

the DataSourceFormat that formats a dataset to the format.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getDataSourceUri

getDataSourceUri( org.autoplot.datasource.DataSource ds ) → String

Prefix the URL with the datasource extension if necessary, so that the URL would resolve to the dataSource. This is to support TimeSeriesBrowse, and any time a resouce URL must be understood out of context. TODO: note ds.getURI() should return the fully-qualified URI, so this is no longer necessary.

### Parameters

ds - the data source.

### Returns:

the canonical URI.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getDiscoverableExtensions

getDiscoverableExtensions( ) → java.util.List

return a list of the extensions we were can immediately enter the editor, so new users can plot things without knowing how to start a URI. Since rev 10581, this uses introspection to call the reject method to support compiling the applet.

### Returns:

a java.util.List
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getExplicitExt

getExplicitExt( String surl ) → String

return the extension prefix of the URI, if specified.

### Parameters

surl - a String

### Returns:

null or an extension like "tsds"
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getExt

getExt( String surl ) → String

returns the explicit extension, or the file extension if found, or null. The extension will not contain a period. Inputs include:

- ac_h2_cris_20111221_v06.cdf → "cdf"
- /tmp/ac_h2_cris_20111221_v06.cdf → "cdf"
- /tmp/ac_h2_cris_20111221_v06 → null

### Parameters

surl - a String

### Returns:

the extension found, without the ".", or null if no period is found in the filename.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFactoryCompletions

getFactoryCompletions( String surl1, int carotPos, ProgressMonitor mon ) → java.util.List

get the completions from the plug-in factory..

### Parameters

surl1 - a String
carotPos - an int
mon - a ProgressMonitor

### Returns:

a java.util.List
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFile

getFile( java.net.URL url, ProgressMonitor mon ) → java.io.File

return a file reference for the url. This is initially to fix the problem for Windows where new URL( "file://c:/myfile.dat" ).getPath() -> "/myfile.dat". This will use a temporary local file in some cases, such as when the URL has parameters, which prevent use with the FileSystem model. TODO: why are there both getFile(url,mon) and getFile( suri, allowHtml, mon )???

### Parameters

url - the URL of the file.
mon - progress monitor or null. If null then AlertProgressMonitor is used to show when the download time is not trivial.

### Returns:

the File

### See Also:

getFile(java.lang.String, boolean, org.das2.util.monitor.ProgressMonitor)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFile

getFile( String suri, boolean allowHtml, ProgressMonitor mon ) → java.io.File

return a file reference for the url. The file must have a nice name on the server, and cannot be the result of a server query with parameters. (Use downloadResourceAsTempFile for this). This is initially to fix the problem for Windows where new URL( "file://c:/myfile.dat" ).getPath() -> "/myfile.dat".

### Parameters

suri - the URL.
allowHtml - skip html test that tests for html content.
mon - progress monitor

### Returns:

a local copy of the file.

### See Also:

getFile(java.net.URL, org.das2.util.monitor.ProgressMonitor)
FileSystemUtil#doDownload(java.lang.String, org.das2.util.monitor.ProgressMonitor)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFile

getFile( java.net.URI uri, ProgressMonitor mon ) → java.io.File

retrieve the file specified in the URI, possibly using the VFS library to download the resource to a local cache. The URI should be a downloadable file, and not the vap scheme URI.

### Parameters

uri - resource to download, such as "sftp://user@host/file.dat."
mon - a ProgressMonitor

### Returns:

a java.io.File

### See Also:

FileSystemUtil#doDownload(java.lang.String, org.das2.util.monitor.ProgressMonitor)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFile

getFile( String uri, ProgressMonitor mon ) → java.io.File

retrieve the file specified in the URI, possibly using the VFS library to download the resource to a local cache. The URI should be a downloadable file, and not the vap scheme URI.

### Parameters

uri - resource to download, such as "sftp://user@host/file.dat."
mon - a ProgressMonitor

### Returns:

a java.io.File
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFile

getFile( String uri ) → java.io.File

retrieve the file specified in the URI, possibly using the VFS library to download the resource to a local cache. The URI should be a downloadable file, and not the vap scheme URI.

### Parameters

uri - resource to download, such as "sftp://user@host/file.dat."

### Returns:

the file
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFileSystemAggCompletions

getFileSystemAggCompletions( String surl, int carotpos, ProgressMonitor mon ) → java.util.List

get completions within the filesystem that appear to form aggregations. Note this does not appear to be used, having no Java references.

### Parameters

surl - a String
carotpos - an int
mon - a ProgressMonitor

### Returns:

a java.util.List
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFileSystemCacheCompletions

getFileSystemCacheCompletions( String surl, int carotpos, boolean inclAgg, boolean inclFiles, String acceptPattern, ProgressMonitor mon ) → java.util.List

gets completions based on cached folders. This supports use when the filesystem is offline, when parents are not web filesystems, and presents used folders separately.

### Parameters

surl - http://sarahandjeremy.net/
carotpos - the position of the carot. Presently everything after the carot is ignored.
inclAgg - include aggregations it sees. These are a guess.
inclFiles - include files as well as aggregations.
acceptPattern - if non-null, files and aggregations much match this.
mon - a ProgressMonitor

### Returns:

possibly immutable list.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFileSystemCompletions

getFileSystemCompletions( String surl, int carotpos, boolean inclAgg, boolean inclFiles, String acceptPattern, ProgressMonitor mon ) → java.util.List

get completions within the filesystem for the directory listing of files.

### Parameters

surl - a String
carotpos - an int
inclAgg - include aggregations it sees. These are a guess.
inclFiles - include files as well as aggregations.
acceptPattern - if non-null, files and aggregations much match this.
mon - a ProgressMonitor

### Returns:

a java.util.List
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getFileSystemCompletions

getFileSystemCompletions( String surl, int carotpos, boolean inclAgg, java.util.List inclFiles, String acceptPattern, ProgressMonitor mon ) → java.util.List

Get the completions from the FileSystem, including aggregation suggestions. Note that one only folder of the aggregation will be listed, presuming that each folder looks the same as the others.

### Parameters

surl - the URI, e.g. file:/home/jbf/pngwalk/product_$Y$m.png
carotpos - the position of the editor carot (cursor) where the completions
inclAgg - include aggregations it sees. These are a guess.
inclFiles - if null, list files, but is non-null, then only include files in the list of regex.
acceptPattern - if non-null, files and aggregations much match this.
mon - a ProgressMonitor

### Returns:

list of results.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getHostCompletions

getHostCompletions( String surl, int carotpos, ProgressMonitor mon ) → java.util.List

get completions for hosts, by looking in the user's cache area.

### Parameters

surl - a String
carotpos - an int
mon - a ProgressMonitor

### Returns:

possibly immutable list.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getHtmlFile

getHtmlFile( java.net.URL url, ProgressMonitor mon ) → java.io.File

get the file, allowing it to have "<html>" in the front. Normally this is not allowed because of http://sourceforge.net/tracker/?func=detail&aid=3379717&group_id=199733&atid=970682

### Parameters

url - an URL
mon - a ProgressMonitor

### Returns:

a java.io.File
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getInputStream

getInputStream( java.net.URL url, ProgressMonitor mon ) → java.io.InputStream

get the InputStream from the path part of the URI. The stream must be closed by the client.

### Parameters

url - URL like http://autoplot.org/data/autoplot.dat
mon - monitor that will monitor the stream as it is transmitted.

### Returns:

the InputStream, which must be closed by the client. TODO: check usages...
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getInputStream

getInputStream( java.net.URI uri, ProgressMonitor mon ) → java.io.InputStream

get the InputStream from the path part of the URI. The stream must be closed by the client.

### Parameters

uri - URI like vap+dat:http://autoplot.org/data/autoplot.dat
mon - monitor that will monitor the stream as it is transmitted.

### Returns:

the InputStream, which must be closed by the client. TODO: check usages...
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getResourceURI

getResourceURI( java.net.URI uri ) → java.net.URI

returns the URI to be interpreted by the DataSource. This identifies a file (or database) resource that can be passed to VFS.

### Parameters

uri - an URI

### Returns:

the URI for the datasource resource, or null if it is not valid.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getResourceURI

getResourceURI( String surl ) → java.net.URI

returns the URI to be interpreted by the DataSource. For file-based data sources, this will probably be the filename plus server-side parameters, and can be converted to a URL. Changes: 20090916: client-side parameters removed from URI.

### Parameters

surl - a String

### Returns:

the URI for the datasource resource, or null if it is not valid.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getSortedDiscoverableExtentions

getSortedDiscoverableExtentions( ) → java.util.List

return the list of discoverable extentions, sorted by recent use.

### Returns:

a java.util.List
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getTypesCompletions

getTypesCompletions( String surl, int carotpos, ProgressMonitor mon ) → java.util.List

return a list of completions showing discovery plugins, and the list of supported filesystem types.

### Parameters

surl - a String
carotpos - an int
mon - a ProgressMonitor

### Returns:

a java.util.List
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getURI

getURI( String surl ) → java.net.URI

canonical method for getting the Autoplot URI. If no protocol is specified, then file:// is used. Note URIs may contain prefix like vap+bin:http://www.cdf.org/data.cdf. The result will start with an Autoplot scheme like "vap:" or "vap+cdf:" Note 20111117: "vap+cdaweb:" -> URI( "vap+cdaweb:file:///" that's why this works to toUri doesn't.

### Parameters

surl - the string from the user that should be representable as a URI.

### Returns:

the URI or null if it's clearly not a URI.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getURIValid

getURIValid( String surl ) → java.net.URI

get a URI from the string which is believed to be valid. This was introduced because a number of codes called getURI without checking for null, which could be returned when the URI could not be parsed ("This is not a uri"). Codes that didn't check would produce a null pointer exception, and now they will produce a more accurate error.

### Parameters

surl - a String

### Returns:

a java.net.URI
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getURL

getURL( String surl ) → java.net.URL

canonical method for getting the URL. These will always be web-downloadable URLs.

### Parameters

surl - the string from the user that should be representable as a URI.

### Returns:

null or the URL if available.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getWebURL

getWebURL( java.net.URI uri ) → java.net.URL

returns a downloadable URL from the Autoplot URI, perhaps popping off the data source specifier. This assumes that the resource is a URL, and getResourceURI().toURL() should be used to handle all cases.

### Parameters

uri - An Autoplot URI.

### Returns:

a URL that can be downloaded, or null if it is not found.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## init

init( ) → void

call this to trigger initialization

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## isAggregating

isAggregating( String surl ) → boolean

check that the string uri is aggregating by looking for %Y's (etc) in the file part of the URI. This also looks for:

- $y -- two digit year
- $(o -- orbit number
- $(periodic -- interval number
- $v -- version

### Parameters

surl - a String

### Returns:

a boolean
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## main

main( String[] args ) → void

### Parameters

args - a java.lang.String[]

### Returns:

void (returns nothing)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## maybePlusToSpace

maybePlusToSpace( String ssheet ) → String

Legacy behavior was to convert pluses into spaces in URIs. This caused problems distinguishing spaces from pluses, so we dropped this as the default behavior. If data sources are to support legacy URIs, then they should use this routine to mimic the behavior. This checks if the URI already contains spaces, and will not convert if there are already spaces.

### Parameters

ssheet - a String

### Returns:

a String
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## resetUriTsbTime

resetUriTsbTime( String value, DatumRange timeRange ) → String

return the URI with a new time.

### Parameters

value - a String
timeRange - a DatumRange

### Returns:

the URI with a new time.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## toUri

toUri( String suri ) → java.net.URI

canonical method for converting string from the wild into a URI-safe string. This contains the code that converts a colloquial string URI into a properly formed URI. For example: space is converted to "%20" %Y is converted to $Y This does not add file: or vap:. Pluses are only changed in the params part.

### Parameters

suri - a String

### Returns:

a java.net.URI
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## unaggregate

unaggregate( String resourceURI, DatumRange timerange ) → String[]

taken from unaggregate.jy in the servlet.

### Parameters

resourceURI - resource URI like "file://tmp/data$Y$m$d.dat"
timerange - a timerange that will be covered by the span.

### Returns:

the strings resolved.
[search for examples] [view on GitHub] [view on old javadoc] [view source]