package com.walker.file;
import java.io.File;
import java.util.List;
@Deprecated
public interface FileEngine {
/**
* 文件存储方式:文件系统、数据库、内存等
* @author shikeying
*
*/
@Deprecated
public enum StoreType {
FileSystem{
public int getIndex(){
return INDEX_FS;
}
},
Database{
public int getIndex(){
return INDEX_DB;
}
},
Memory{
public int getIndex(){
return INDEX_MM;
}
};
static final int INDEX_FS = 0;
static final int INDEX_DB = 1;
static final int INDEX_MM = 2;
public int getIndex(){
throw new AbstractMethodError();
}
public static final StoreType getStoreType(int index){
if(index == INDEX_FS){
return FileSystem;
} else if(index == INDEX_DB){
return Database;
} else {
throw new UnsupportedOperationException();
}
}
}
/**
* 返回存储文件的根路径,如:d:/file_store/
* @return
*/
String getFileStoreRootPath();
/**
* 读入上传的文件信息
* @param request 请求对象
* @param fileFormId 文件在界面上的ID
* @param st 存储方式:数据库、文件等。
* @return 返回生成的文件定义对象
*/
List readFiles(Object request, String fileFormId, StoreType st) throws FileOperateException;
/**
* 把得到的文件信息写入到持久化存储设备中,如:数据库或磁盘中。
* 此方法通常被应用系统在事务控制层中调用,以保持与数据库事务的一致性。
* @param fileMetas 获取的文件集合
// * @param thumb 是否缩略图
* @return
* @throws FileOperateException
*/
List writeFiles(List fileMetas) throws FileOperateException;
// /**
// * 方法同上,仅仅返回参数不同。
// * @param fileMetas
// * @return
// * @throws FileOperateException
// */
// List writeFilesForMeta(List fileMetas) throws FileOperateException;
/**
* 创建一个空的文件,此文件会存储到文件系统中,系统也会记录其信息。
* @param filename 文件全名,如:abc.xls
* @return 返回文件元数据对象
*/
FileMeta createEmptyFile(String filename, String mimeType);
/**
* 根据文件ID集合,获取文件对象列表
* @param ids 这些ID是系统在创建时自动生成的。
* @return
* @throws FileOperateException
*/
List listFiles(List ids) throws FileOperateException;
/**
* 根据ID获得一个文件对象
* @param id
* @return
*/
FileMeta getFile(String id);
/**
* 返回JAVA文件对象,此方法只有在'存储方式'为'文件系统时'才有效
* @param filePath 相对文件路径,在数据库中存储的path字段
* @return
*/
File getFileObject(String filePath);
/**
* 从系统删除一个文件
* @param id
* @throws FileOperateException
*/
void removeFile(String id) throws FileOperateException;
/**
* 设置使用文件系统存储文件时,根目录,如:d:/files/ or home/
* @param rootPath
*/
void setFileStoreRootPath(String rootPath);
void setFileReader(FileReader reader);
}