## org.das2.util.filesystem.WebFileSystem

Base class for HTTP and FTP-based filesystems. A local cache is kept of the files.

## LISTING_TIMEOUT_MS

we keep a cached listing in on disk. This is backed by the website.

## MEMORY_LISTING_TIMEOUT_MS

we keep a cached listing in memory for performance. This is backed by the .listing file.

## HTTP_CHECK_TIMESTAMP_LIMIT_MS

timestamp checks will occur no more often than this.

## PROP_OFFLINE

if true, then the remote filesystem is not accessible, but local cache copies may be accessed. See FileSystemSettings.allowOffline

## PROP_READ_ONLY_CACHE

alternate location to check for file before downloading.

## addPropertyChangeListener

addPropertyChangeListener( java.beans.PropertyChangeListener listener ) → void

### Parameters

listener - a PropertyChangeListener

### Returns:

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

## cacheListing

cacheListing( String directory, org.das2.util.filesystem.FileSystem.DirectoryEntry[] listing ) → void

### Parameters

directory - a String
listing - an org.das2.util.filesystem.FileSystem.DirectoryEntry[]

### Returns:

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

## consumeStream

Deprecated: see HtmlUtil.consumeStream.

## getDownloadDirectory

getDownloadDirectory( ) → java.io.File

### Returns:

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

## getFileObject

getFileObject( String filename ) → org.das2.util.filesystem.FileObject

Return the handle for this file. This is not the file itself, and accessing this object does not necessarily download the resource. This will be a container for file metadata, in addition to providing access to the data file itself.

### Parameters

filename - the name of the file within the filesystem.

### Returns:

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

## getLocalName

getLocalName( java.io.File file ) → String

return the name of the File within the FileSystem, where File is a local file within the local copy of the filesystem.

### Parameters

file - a File

### Returns:

the name within the filesystem
[search for examples] [view on GitHub] [view on old javadoc] [view source]
getLocalName( java.net.URL url ) → String [view source]

## getLocalRoot

getLocalRoot( ) → java.io.File

### Returns:

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

## getLocalRootAbsPath

Deprecated: use getLocalRoot().getAbsolutePath()

## getOfflineMessage

getOfflineMessage( ) → String

return the reason (if any provided) why the filesystem is offline,

### Returns:

the message for the response code
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getOfflineResponseCode

getOfflineResponseCode( ) → int

if non-zero, the response code (e.g. 403) why the filesystem is offline.

### Returns:

the response code.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getPartFile

getPartFile( java.io.File localFile ) → java.io.File

return a name where the download is to be staged. This will be unique for any process. We make the following assumptions:

- multiple Java processes will be using and modifying the file database.
- java processes may be on different machines
- an ID conflict may occur should two processes have the same UID, hostname, and are started at the same clock time millisecond.

See https://sourceforge.net/p/autoplot/bugs/1301/

### Parameters

localFile - a File

### Returns:

the temporary filename to use.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getProtocol

getProtocol( ) → org.das2.util.filesystem.WebProtocol

return the protocol object, which allows access to the metadata. This may go away, so do not depend on this for production code.

### Returns:

the protocol object.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getReadOnlyCache

getReadOnlyCache( ) → java.io.File

### Returns:

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

## getRootURL

getRootURL( ) → java.net.URL

return the root of the filesystem as a URL. Since the root is stored as a URI and "ftp://jbf@mysite.com:@ftpproxy.net/temp/" is a legal address, check for this case.

### Returns:

the root of the filesystem as a URL.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## getURI

getURI( String filename ) → java.net.URI

return the URI for the internal filename

### Parameters

filename - internal filename

### Returns:

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

## getURL

getURL( String filename ) → java.net.URL

return the URL for the internal filename, encoding the characters if necessary.

### Parameters

filename - internal filename

### Returns:

a java.net.URL

### See Also:

DefaultHttpProtocol#urlEncodeSansSlash(java.lang.String)
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## isAppletMode

isAppletMode( ) → boolean

### Returns:

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

## isDirectory

isDirectory( String filename ) → boolean

return true if the name refers to a directory, not a file.

### Parameters

filename - a String

### Returns:

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

## isGitClone

isGitClone( java.io.File root, String path ) → String

return the canonical path for the path, if it is part of a git clone.

### Parameters

root - a directory which is a clone of some path, possibly
path - the path within the path.

### Returns:

the canonical path, or null if it is not a git clone.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## isListingCached

isListingCached( String directory ) → boolean

return true if the listing file (.listing) is available in the file system cache, and is still fresh. LISTING_TIMEOUT_MS controls the freshness, where files older than LISTING_TIMEOUT_MS milliseconds will not be used. Note the timestamp on the file comes from the server providing the listing, so the age may be negative when clocks are not synchronized.

### Parameters

directory - a String

### Returns:

true if the listing is cached.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## isOffline

isOffline( ) → boolean

### Returns:

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

## listDirectory

listDirectory( String directory ) → String[]

return the directory listing for the name.

### Parameters

directory - a String

### Returns:

a String[]
[search for examples] [view on GitHub] [view on old javadoc] [view source]
listDirectory( String directory, String regex ) → String[] [view source]

## localRoot

localRoot( java.net.URI root ) → java.io.File

return the local root for the URI.

### Parameters

root - the URI such as http://das2.org/data/

### Returns:

/home/jbf/autoplot_data/fscache/http/das2.org/data/
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## maybeUpdateDirectoryEntry

maybeUpdateDirectoryEntry( String filename, boolean force ) → org.das2.util.filesystem.FileSystem.DirectoryEntry

trigger an update of the in-memory listing, or check to see if it is in memory.

### Parameters

filename - the particular file for which we need a listing.
force - if true, then list if it isn't available.

### Returns:

null if the listing is not available, or if the element is not in the folder, the DirectoryEntry otherwise.
[search for examples] [view on GitHub] [view on old javadoc] [view source]

## removePropertyChangeListener

removePropertyChangeListener( java.beans.PropertyChangeListener listener ) → void

### Parameters

listener - a PropertyChangeListener

### Returns:

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

## resetListCache

resetListCache( String directory ) → void

From FTPBeanFileSystem.

### Parameters

directory - a String

### Returns:

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

## resetListingCache

resetListingCache( ) → void

reset the .listing files and the ram-memory caches.

### Returns:

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

## setAppletMode

setAppletMode( boolean applet ) → void

### Parameters

applet - a boolean

### Returns:

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

## setOffline

setOffline( boolean offline ) → void

### Parameters

offline - a boolean

### Returns:

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

## setReadOnlyCache

setReadOnlyCache( java.io.File f ) → void

### Parameters

f - a File

### Returns:

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

## toString

toString( ) → String

### Returns:

java.lang.String
[search for examples] [view on GitHub] [view on old javadoc] [view source]