package org.docear.plugin.core.workspace;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
public abstract class AVirtualDirectory extends File {
private static final long serialVersionUID = 1L;
public AVirtualDirectory(String pathname) {
super(pathname);
}
public boolean isDirectory() {
return true;
}
public boolean isFile() {
return false;
}
public boolean exists() {
return true;
}
public boolean canExecute() {
return false;
}
public boolean canRead() {
return true;
}
public boolean canWrite() {
return false;
}
public boolean delete() {
return true;
}
public void deleteOnExit() {
}
public int compareTo(File pathname) {
if(pathname instanceof AVirtualDirectory) {
super.compareTo(pathname);
}
return 1;
}
public boolean equals(Object obj) {
if(obj instanceof AVirtualDirectory) {
return super.equals(obj);
}
return false;
}
public long getFreeSpace() {
return 0;
}
public long getUsableSpace() {
return 0;
}
public long getTotalSpace() {
return 0;
}
public String getParent() {
return null;
}
public File getParentFile() {
return null;
}
public boolean isAbsolute() {
return true;
}
public boolean createNewFile() {
return false;
}
public boolean setReadOnly() {
return true;
}
public boolean setWritable(boolean writable) {
return false;
}
public boolean setWritable(boolean writable, boolean ownerOnly) {
return false;
}
public boolean setReadable(boolean readable) {
return true;
}
public boolean setReadable(boolean readable, boolean ownerOnly) {
return true;
}
public boolean setExecutable(boolean executable) {
return false;
}
public boolean setExecutable(boolean executable, boolean ownerOnly) {
return false;
}
public boolean renameTo(File dest) {
return false;
}
public boolean mkdir() {
return false;
}
public boolean mkdirs() {
return false;
}
public String[] list() {
return list(null);
}
public File[] listFiles() {
return listFiles((FileFilter)null);
}
public URI[] listURIs() {
return listURIs(null);
}
public String[] list(FilenameFilter filter) {
if(filter == null) {
filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return true;
}
};
}
Collection<File> children = getChildren();
if(children == null) {
return new String[]{};
}
ArrayList<String> files = new ArrayList<String>();
for (File child : children) {
if(child.exists() && filter.accept(child.getParentFile(), child.getName())) {
files.add(child.toString());
}
}
return files.toArray(new String[]{});
}
public File[] listFiles(FileFilter filter) {
if(filter == null) {
filter = new FileFilter() {
public boolean accept(File pathname) {
return true;
}
};
}
Collection<File> children = getChildren();
if(children == null) {
return new File[]{};
}
ArrayList<File> files = new ArrayList<File>();
for (File child : children) {
if(child.exists() && filter.accept(child)) {
files.add(child);
}
}
return files.toArray(new File[]{});
}
public File[] listFiles(FilenameFilter filter) {
if(filter == null) {
filter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return true;
}
};
}
Collection<File> children = getChildren();
if(children == null) {
return new File[]{};
}
ArrayList<File> files = new ArrayList<File>();
for (File child : children) {
if(child.exists() && filter.accept(child.getParentFile(), child.getName())) {
files.add(child);
}
}
return files.toArray(new File[]{});
}
public URI[] listURIs(URIFilter filter) {
if(filter == null) {
filter = new URIFilter() {
public boolean accept(URI uri) {
return true;
}
};
}
Collection<File> children = getChildren();
if(children == null) {
return new URI[]{};
}
ArrayList<URI> files = new ArrayList<URI>();
for (File child : children) {
if(child.exists() && filter.accept(child.toURI())) {
files.add(child.toURI());
}
}
return files.toArray(new URI[]{});
}
protected abstract Collection<File> getChildren();
}