package org.flowerplatform.editor.file;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
/**
* @author Cristina Constantinescu
* @author Sebastian Solomon
*/
public abstract class PlainFileAccessController implements IFileAccessController {
@Override
public long getLastModifiedTimestamp(Object file) {
return ((File) file).lastModified();
}
@Override
public String getName(Object file) {
return ((File) file).getName();
}
/**
* @see IOUtils
* @see FileUtils
*/
@Override
public InputStream getContent(Object file) {
try {
return FileUtils.openInputStream((File) file);
} catch (Throwable e) {
throw new RuntimeException("Error while loading file content " + file, e);
}
}
@Override
public void setContent(Object file, String content) {
try {
FileUtils.writeStringToFile((File) file, content);
} catch (IOException e) {
throw new RuntimeException("Error while saving the file " + file, e);
}
}
@Override
public String getFileExtension(Object object) {
File file = (File) object;
String name = file.getName();
int index = name.lastIndexOf(".");
if (index >= 0) {
return name.substring(index + 1);
}
return "";
}
@Override
public boolean isFile(Object file) {
return (file instanceof File);
}
@Override
public Class getFileClass() {
return File.class;
}
@Override
public File[] listFiles(Object folder) {
return ((File)folder).listFiles();
}
@Override
public boolean delete(Object child) {
return ((File)child).delete();
}
@Override
public Object getParentFile(Object file){
return ((File)file).getParentFile();
}
@Override
public String getParent(Object file){
return ((File)file).getParent();
}
@Override
public void rename(Object file, Object dest) {
((File)file).renameTo((File)dest);
}
@Override
public String readFileToString(Object file){
try {
return FileUtils.readFileToString((File)file);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void writeStringToFile(Object file, String str) {
try {
FileUtils.writeStringToFile((File)file, str);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public boolean isDirectory(Object file) {
return ((File)file).isDirectory();
}
@Override
public boolean createNewFile(Object file) {
try {
return ((File) file).createNewFile();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public Object createNewFile(Object file, String name) {
return new File((File) file, name);
}
@Override
public boolean exists(Object file) {
return ((File) file).exists();
}
@Override
public String getPathRelativeToFile(Object file, Object relativeTo) {
String relative = ((File)relativeTo).toURI().relativize(((File)file).toURI()).getPath();
if (relative.length() > 0 && relative.endsWith("/")) {
relative = relative.substring(0, relative.length() - 1);
}
return relative;
}
@Override
public String getAbsolutePath(Object file) {
return ((File)file).getAbsolutePath();
}
}