| 1 | |
package org.webslinger.commons.vfs.local; |
| 2 | |
|
| 3 | |
import java.io.File; |
| 4 | |
import java.util.Arrays; |
| 5 | |
import java.util.Collection; |
| 6 | |
import java.util.Collections; |
| 7 | |
import java.util.HashSet; |
| 8 | |
|
| 9 | |
import org.apache.commons.vfs.Capability; |
| 10 | |
import org.apache.commons.vfs.FileName; |
| 11 | |
import org.apache.commons.vfs.FileObject; |
| 12 | |
import org.apache.commons.vfs.FileSystem; |
| 13 | |
import org.apache.commons.vfs.FileSystemException; |
| 14 | |
import org.apache.commons.vfs.FileSystemOptions; |
| 15 | |
import org.apache.commons.vfs.provider.AbstractOriginatingFileProvider; |
| 16 | |
import org.apache.commons.vfs.provider.LocalFileProvider; |
| 17 | |
import org.apache.commons.vfs.provider.UriParser; |
| 18 | |
import org.apache.commons.vfs.provider.local.GenericFileNameParser; |
| 19 | |
import org.apache.commons.vfs.provider.local.LocalFileName; |
| 20 | |
import org.apache.commons.vfs.provider.local.LocalFileNameParser; |
| 21 | |
import org.apache.commons.vfs.provider.local.WindowsFileNameParser; |
| 22 | |
import org.apache.commons.vfs.util.Os; |
| 23 | |
|
| 24 | |
public class WebslingerLocalFileProvider extends AbstractOriginatingFileProvider implements LocalFileProvider { |
| 25 | 1 | protected static final Collection<Capability> capabilities = Collections.unmodifiableSet(new HashSet<Capability>( |
| 26 | |
Arrays.asList( |
| 27 | |
new Capability[] { |
| 28 | |
Capability.READ_CONTENT, |
| 29 | |
Capability.WRITE_CONTENT, |
| 30 | |
Capability.RANDOM_ACCESS_READ, |
| 31 | |
Capability.RANDOM_ACCESS_WRITE, |
| 32 | |
Capability.ATTRIBUTES, |
| 33 | |
Capability.LAST_MODIFIED, |
| 34 | |
Capability.GET_LAST_MODIFIED, |
| 35 | |
Capability.SET_LAST_MODIFIED_FILE, |
| 36 | |
Capability.SET_LAST_MODIFIED_FOLDER, |
| 37 | |
Capability.SIGNING, |
| 38 | |
Capability.CREATE, |
| 39 | |
Capability.DELETE, |
| 40 | |
Capability.RENAME, |
| 41 | |
Capability.GET_TYPE, |
| 42 | |
Capability.LIST_CHILDREN, |
| 43 | |
Capability.URI, |
| 44 | |
Capability.FS_ATTRIBUTES, |
| 45 | |
} |
| 46 | |
) |
| 47 | |
)); |
| 48 | |
|
| 49 | 46 | protected final FileSystemOptions defaultOptions = new FileSystemOptions(); |
| 50 | |
|
| 51 | 46 | public WebslingerLocalFileProvider() { |
| 52 | 46 | setFileNameParser(Os.isFamily(Os.OS_FAMILY_WINDOWS) ? new WindowsFileNameParser() : new GenericFileNameParser()); |
| 53 | 46 | } |
| 54 | |
|
| 55 | |
public Collection getCapabilities() { |
| 56 | 0 | return capabilities; |
| 57 | |
} |
| 58 | |
|
| 59 | |
public boolean isAbsoluteLocalName(final String name) { |
| 60 | 61 | return ((LocalFileNameParser) getFileNameParser()).isAbsoluteName(name); |
| 61 | |
} |
| 62 | |
|
| 63 | |
public FileObject findLocalFile(String name) throws FileSystemException { |
| 64 | |
|
| 65 | 73 | return findFile(parseUri(null, "wsfile:" + name), defaultOptions); |
| 66 | |
} |
| 67 | |
|
| 68 | |
public FileObject findLocalFile(File file) throws FileSystemException { |
| 69 | |
|
| 70 | 18 | return findLocalFile(UriParser.encode(file.getAbsolutePath())); |
| 71 | |
} |
| 72 | |
|
| 73 | |
protected FileSystem doCreateFileSystem(FileName name, FileSystemOptions options) throws FileSystemException { |
| 74 | 59 | System.err.println("wsfile.doCreateFileSystem(" + name + ", " + options + ")"); |
| 75 | 59 | LocalFileName rootName = (LocalFileName) name; |
| 76 | 59 | return new LocalFileSystem(rootName, options, new File(rootName.getRootFile())); |
| 77 | |
} |
| 78 | |
} |