文件操作相关接口
文件相关的接口由com.basksoft.core.database.manager.file.FileManager接口提供。
获取文件内容
你可以用如下代码获取一个File文件对象XML内容:
FileManager.ins.loadContent(1000);
修改文件名
你可以用如下代码修改文件名称:
FileManager.ins.changeFileName(1000, "新文件名", "andy.jia");
接口说明
FileManager接口针对目录操作的接口和针对文件操作的接口是不一样的,要特别注意。
例如:
修改文件名:
FileManager.ins.changeFileName(1000, "新文件名", "andy.jia");
修改目录名称:
FileManager.ins.changeDirName(1000, "新文件名", "andy.jia");
很多接口需要传递userId参数
userID参数是用来记录当前操作的操作员的,一般都必须传入
tenantId
团队ID在很多接口操作中也是必须的,请注意
事务说明
FileManager中很多接口会对多个表格进行存取,所以在集成模式下涉及到写库操作的方法调用时,最好是确保调用相关接口的时候确保该方法处于事务包裹中。
如果Connection是由BaskServer创建的,就可以这么解决。
- BaskServer在初始化的时候选择JDBC类型:
- 利用ApplicationConfigLoader实现机制用的是JDBC类型的数据库连接:
config.setConfigType(ConfigType.jdbc);
如果是上面两种情况可以用如下代码进行事务包裹:
Connection conn=JdbcUtils.getConnection();
boolean autoCommit = true;
try {
autoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
//调用具体的方法
FileManager.ins.xxx();
conn.commit();
}catch(Exception ex) {
conn.rollback();
throw ex;
}finally {
conn.setAutoCommit(autoCommit);
JdbcUtils.closeConnection(conn);
}
JdbcUtils工具类全路径: com.basksoft.core.util.JdbcUtils
更多接口参考
public interface FileManager {
/**
* 获取文件的XML内容
*
* @param id 文件ID
* @return XML内容
*/
String loadContent(long id);
/**
* 更改文件状态
*
* @param id 文件ID
* @param status 文件状态
* @param userId 修改人
*/
void changeStatus(long id, FileStatus status, String userId);
/**
* 加载目录的子对象(包含目录和文件)
*
* @param tenantId 团队ID
* @param packetId 目录ID
* @return 文件列表
*/
List<BaskFile> loadChildren(String tenantId, long packetId);
/**
* 修改文件名称
*
* @param id 文件ID
* @param newName 新的名称
* @param userId 修改人
*/
void changeFileName(long id, String newName, String userId);
/**
* 修改文件备注
*
* @param id 文件ID
* @param desc 文件备注
* @param userId 修改人
*/
void changeFileDesc(long id, String desc, String userId);
/**
* 新增文件,参考代码:
* BaskFile baskFile = new BaskFile();
* baskFile.setType(FileType.report);
* baskFile.setTenantId("basksoft");
* baskFile.setName("工作周报");
* baskFile.setDesc("金融事业部工作周报");
* baskFile.setParentId(1000);
* baskFile.setCreateUser("lver.jin");
* FileManager.ins.addFile(baskFile, content, false);
*
* @param file BaskFile对象
* @param content 文件XML内容
* @param locked 是否直接锁定文件
*/
void addFile(BaskFile file, String content, boolean locked);
/**
* 更新文件
*
* @param id 文件ID
* @param content 文件XML内容
* @param userId 更新者
*/
void updateFile(long id, String content, String userId);
/**
* 更新文件预览BASE64数据
*
* @param id 文件ID
* @param previewBase64 预览BASE64数据
*/
void updatePreviewBase64(long id, String previewBase64);
/**
* 添加目录,参考代码:
* BaskFile baskFile = new BaskFile();
* baskFile.setDirectory(true);
* baskFile.setTenantId("basksoft");
* baskFile.setName("工作周报");
* baskFile.setDesc("金融事业部工作周报");
* baskFile.setParentId(1000);
* baskFile.setCreateUser("lver.jin");
* FileManager.ins.addDir(baskFile);
*
* @param baskFile 目录对象
*/
void addDir(BaskFile baskFile);
/**
* 加载BaskFile文件,不会加载文件的XML内容
*
* @param id 文件ID
* @return 返回BaskFile对象
*/
BaskFile loadFile(long id);
/**
* 加载目录对象
*
* @param id 文件ID
* @return 返回目录对象
*/
BaskFile loadDir(long id);
/**
* 删除文件对象
*
* @param id 文件ID
*/
void removeFile(long id);
/**
* 删除目录对象,删除目录时会自动删除目录下的所有子目录和文件
*
* @param id 目录ID
*/
void removeDir(long id);
/**
* 修改目录名称
*
* @param id 目录ID
* @param newDirName 新的名称
* @param userId 修改人
*/
void changeDirName(long id, String newDirName, String userId);
/**
* 修改目录备注
*
* @param id 目录ID
* @param desc 新的备注
* @param userId 修改人
*/
void changeDirDesc(long id, String desc, String userId);
/**
* 检查文件是否重名,一般情况下新建文件的时候建议避免重名
*
* @param tenantId 团队ID
* @param parentId 父目录ID
* @param name 文件名称
* @return 是否重名
*/
boolean checkFileExist(String tenantId, long parentId, String name);
/**
* 检查目录是否重名,一般情况下新建文件的时候建议避免重名
*
* @param tenantId 团队ID
* @param parentId 父目录ID
* @param name 目录名称
* @return 是否重名
*/
boolean checkDirExist(String tenantId, long parentId, String name);
/**
* 返回文件目录树(包含文件),rootId为0则为获取所有节点
*
* @param tenantId 团队ID
* @param rootId 根目录
* @return 返回包含文件的目录树
*/
BaskFile tree(String tenantId, long rootId);
/**
* 返回文件目录树(不包含文件),rootId为0则为获取所有节点
*
* @param tenantId 团队ID
* @param rootId 根目录
* @return 返回目录树
*/
List<BaskFile> dirTree(String tenantId, long rootId);
/**
* 修改文件所属目录
*
* @param id 文件ID
* @param parentId 父目录ID
*/
void changeFileParent(long id, long parentId);
/**
* 移动目录
*
* @param id 目录ID
* @param parentId 父目录ID
*/
void changeDirParent(long id, long parentId);
/**
* 锁定文件
*
* @param id 文件ID
* @param userId 账号
*/
void lock(long id, String userId);
/**
* 解锁文件
*
* @param id 文件ID
* @param userId 账号
*/
void unlock(long id, String userId);
/**
* 发布文件
*
* @param id 文件ID
* @param version 文件版本
* @param note 版本说明
* @param userId 账号
*/
void deploy(long id, String version, String note, String userId);
}