package floobits.impl;
import com.intellij.openapi.vfs.VFileProperty;
import com.intellij.openapi.vfs.VirtualFile;
import floobits.common.interfaces.IFile;
import floobits.utilities.Flog;
import java.io.IOException;
import java.io.InputStream;
public class FileImpl extends IFile {
final protected VirtualFile virtualFile;
public FileImpl(VirtualFile virtualFile) {
this.virtualFile = virtualFile;
}
public String toString() {
return virtualFile.toString();
}
@Override
public String getPath() {
return virtualFile.getPath();
}
@Override
public byte[] getBytes() {
try {
return virtualFile.contentsToByteArray();
} catch (IOException e) {
return null;
}
}
@Override
public boolean setBytes(byte[] bytes) {
try {
virtualFile.setBinaryContent(bytes);
} catch (IOException e) {
Flog.error(e);
return false;
}
return true;
}
@Override
public boolean rename(Object obj, String name) {
try {
virtualFile.rename(obj, name);
} catch (IOException e) {
Flog.error(e);
return false;
}
return true;
}
@Override
public boolean createDirectories(String dir) {
try {
virtualFile.createChildDirectory(this, dir);
} catch (IOException e) {
Flog.error(e);
return false;
}
return true;
}
@Override
public boolean move(Object obj, IFile d) {
try {
virtualFile.move(obj, ((FileImpl)d).virtualFile);
} catch (Throwable e) {
Flog.error(e);
return false;
}
return true;
}
@Override
public boolean delete(Object obj) {
try {
virtualFile.delete(obj);
} catch (Throwable e) {
Flog.error(e);
return false;
}
return true;
}
@Override
public boolean isDirectory() {
return virtualFile.isDirectory();
}
@Override
public IFile[] getChildren() {
VirtualFile[] children = virtualFile.getChildren();
if (children == null) {
return new IFile[]{};
}
IFile[] iFiles = new IFile[children.length];
for (int i = 0; i < children.length; i++) {
iFiles[i] = new FileImpl(children[i]);
}
return iFiles;
}
@Override
public InputStream getInputStream() {
try {
return virtualFile.getInputStream();
} catch (IOException e) {
Flog.error(e);
return null;
}
}
@Override
public String getName() {
return virtualFile.getName();
}
@Override
public boolean isValid() {
return virtualFile.isValid();
}
@Override
public long getLength() {
return virtualFile.getLength();
}
@Override
public boolean isSpecial() {
return virtualFile.is(VFileProperty.SPECIAL);
}
@Override
public boolean isSymLink() {
return virtualFile.is(VFileProperty.SYMLINK);
}
@Override
public void refresh() {
virtualFile.refresh(false, false);
}
@Override
public boolean exists() {
return virtualFile.exists();
}
}