mirror of
https://github.com/KOHGYLW/kiftd-source.git
synced 2025-01-08 12:07:47 +08:00
update to v1.2.0 已完成扩展存储区数据移出功能
This commit is contained in:
parent
308449f770
commit
dc8a77edbe
@ -72,5 +72,5 @@ _提示:源代码路径下包含了一些程序运行所需的非源代码资
|
||||
### 联系作者?
|
||||
如有任何需要(例如对该资源有疑问、意见或建议),请发件联系作者: kohgylw@163.com (青阳龙野),随时恭候您的来信!
|
||||
|
||||
青阳龙野@kohgylw by 2024年01月11日
|
||||
青阳龙野@kohgylw by 2024年04月06日
|
||||
|
||||
|
6
TODO.txt
6
TODO.txt
@ -1,4 +1,4 @@
|
||||
kiftd项目 计划表-2024-04-03 by 青阳龙野
|
||||
kiftd项目 计划表-2024-04-06 by 青阳龙野
|
||||
|
||||
已完成 v1.0.17
|
||||
--------------
|
||||
@ -201,13 +201,13 @@ test.auth.xxx=ucd
|
||||
【已完成】解决“文件”功能中,FileSystemManager.transferFile(:935)的Java 8兼容性问题。
|
||||
【已完成】优化剪切复制操作,使得用户不必完成粘贴步骤,可以重新开始此操作流程。
|
||||
|
||||
计划中 v1.2.0
|
||||
已完成 v1.2.0
|
||||
--------------
|
||||
【已完成】将文件体积的单位精确到Byte,以便用户能够更加精准地获取文件体积。
|
||||
【已完成】新增文件夹体积计算功能:当访问者打开文件夹的“详细信息...”模态框时,系统将实时统计该文件夹的内容总体积,之后将结果显示在该界面上供用户查看。
|
||||
【已完成】在账户配置中新增“超级权限”设置:具备该权限的账户将无视权限和分组设定,可执行一切操作并可访问任何文件夹(包括“仅创建者”文件夹)。
|
||||
注:该功能旨在方便系统管理员更为方便快捷的对整个系统进行全权管理。
|
||||
【待实现】新增扩展存储区导出功能:当用户删除某一扩展存储区时,可以选择将该存储区内的文件全部导出至指定位置,便于对其进行归档。
|
||||
【已完成】新增扩展存储区导出功能:当用户删除某一扩展存储区时,可以选择将该存储区内的文件全部导出至指定位置,便于对其进行归档。
|
||||
【已完成】完善移动“m”权限的安全性:当仅有“m”权限时,用户可执行“复制”操作;若同时具备删除“d”权限,才可以进行“剪切”操作。
|
||||
注:这是为了防止使用者先将某个文件从一个原本不具备删除权限的文件夹内移动的一个具备删除权限的文件夹内再将其删除的恶意操作。
|
||||
【已完成】新增“文件”功能的导入账户设置:在账户配置文件中,可通过“import.account=?”设置项来为“文件”功能中的导入操作指定“创建者”。
|
||||
|
@ -6,6 +6,7 @@ import kohgylw.kiftd.server.exception.FoldersTotalOutOfLimitException;
|
||||
import kohgylw.kiftd.server.model.Node;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.FileAlreadyExistsException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@ -80,6 +81,10 @@ public class ConsoleRunner {
|
||||
doImport(args);
|
||||
break;
|
||||
}
|
||||
case "-transfer": {
|
||||
doTransfer(args);
|
||||
break;
|
||||
}
|
||||
case "-console": {
|
||||
this.startKiftdByConsole();
|
||||
break;
|
||||
@ -695,7 +700,7 @@ public class ConsoleRunner {
|
||||
if (FileSystemManager.getInstance().exportTo(foldersId, filesId, path, type)) {
|
||||
return;
|
||||
} else {
|
||||
Printer.instance.print("错误:导出失败,可能导出全部文件。");
|
||||
Printer.instance.print("错误:导出失败,可能未导出全部文件。");
|
||||
}
|
||||
} catch (Exception e1) {
|
||||
Printer.instance.print("错误:导出失败,出现意外错误。");
|
||||
@ -780,6 +785,40 @@ public class ConsoleRunner {
|
||||
}
|
||||
}
|
||||
|
||||
// 移出指定存储区的数据至指定文件夹内
|
||||
private void doTransfer(String[] args) {
|
||||
short extendStoreIndex;
|
||||
File reservePath;
|
||||
if (args.length == 3) {
|
||||
try {
|
||||
extendStoreIndex = Short.parseShort(args[1]);
|
||||
reservePath = new File(args[2]);
|
||||
if (!reservePath.isDirectory()) {
|
||||
Printer.instance.print("错误:移出数据的保存路径(" + args[2] + ")必须指向一个已经存在的文件夹。");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
long total = FileSystemManager.getInstance().getTotalOfNodesAtExtendStore(extendStoreIndex);
|
||||
if (total > 0) {
|
||||
FileSystemManager.getInstance().transferExtendStore(extendStoreIndex, reservePath);
|
||||
return;
|
||||
} else {
|
||||
Printer.instance.print("错误:该扩展存储区(" + args[1] + ")不存在或其内部尚无任何数据,无需执行该操作。");
|
||||
return;
|
||||
}
|
||||
} catch (FileAlreadyExistsException e1) {
|
||||
Printer.instance.print("错误:目标文件夹内存在同名文件,建议选择一个空文件夹作为移出数据的保存路径。");
|
||||
} catch (Exception e2) {
|
||||
Printer.instance.print("错误:无法移出该扩展存储区内的数据,请重试。");
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
Printer.instance.print("错误:扩展存储区编号(" + args[1] + ")无法被识别。");
|
||||
}
|
||||
} else {
|
||||
Printer.instance.print("错误:移出失败,必须指定要移出的扩展存储区编号和移出数据的保存路径(示例:“-transfer 1 /home/your/transfer/folder”)。");
|
||||
}
|
||||
}
|
||||
|
||||
// 删除某一文件或文件夹
|
||||
private void doDelete(String fname) {
|
||||
fname = fname.trim();
|
||||
|
@ -213,29 +213,29 @@ public class FileSystemPathViewer extends KiftdDynamicWindow {
|
||||
});
|
||||
removeBtn.addActionListener((e) -> {
|
||||
disableAllButtons();
|
||||
worker.execute(() -> {
|
||||
if (JOptionPane.showConfirmDialog(window, "确认要移除该扩展存储区么?警告:移除后,该存储区内原先存放的数据将丢失,且设置生效后不可恢复。", "移除扩展存储区",
|
||||
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
|
||||
short index = pathsTable.getSelectFileSystemIndex();
|
||||
for (int i = 0; i < SettingWindow.extendStores.size(); i++) {
|
||||
if (SettingWindow.extendStores.get(i).getIndex() == index) {
|
||||
final int removeItemIndex = i;// 待删除的扩展存储区索引号
|
||||
// 检查该存储区内是否存有数据
|
||||
try {
|
||||
long total = FileSystemManager.getInstance().getTotalOfNodesAtExtendStore(index);
|
||||
if (total > 0) {
|
||||
// 如果已存有数据,则询问是否需要移出
|
||||
switch (JOptionPane.showConfirmDialog(window,
|
||||
"是否立即将该存储区内的数据全部移出以便留档?注意:该操作即时生效,无论是否应用新设置均无法回退。", "移出",
|
||||
JOptionPane.YES_NO_CANCEL_OPTION)) {
|
||||
case 0:
|
||||
// 是:先执行移出操作
|
||||
JFileChooser transferDirChooer = new JFileChooser();
|
||||
transferDirChooer.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||
transferDirChooer.setPreferredSize(fileChooerSize);
|
||||
transferDirChooer.setDialogTitle("请选择移出数据的保存路径...");
|
||||
if (transferDirChooer.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
|
||||
File transferDir = transferDirChooer.getSelectedFile();
|
||||
if (JOptionPane.showConfirmDialog(window, "确认要移除该扩展存储区么?警告:移除后,该存储区内原先存放的数据将丢失,且设置生效后不可恢复。", "移除扩展存储区",
|
||||
JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
|
||||
short index = pathsTable.getSelectFileSystemIndex();
|
||||
for (int i = 0; i < SettingWindow.extendStores.size(); i++) {
|
||||
if (SettingWindow.extendStores.get(i).getIndex() == index) {
|
||||
final int removeItemIndex = i;// 待删除的扩展存储区索引号
|
||||
// 检查该存储区内是否存有数据
|
||||
try {
|
||||
long total = FileSystemManager.getInstance().getTotalOfNodesAtExtendStore(index);
|
||||
if (total > 0) {
|
||||
// 如果已存有数据,则询问是否需要移出
|
||||
switch (JOptionPane.showConfirmDialog(window,
|
||||
"是否立即将该扩展存储区内的数据全部移出以便留档?如果您确定要移除该扩展存储区,推荐执行该操作。注意:该操作即时生效,无论是否应用新设置均无法回退。",
|
||||
"移出", JOptionPane.YES_NO_CANCEL_OPTION)) {
|
||||
case 0:
|
||||
// 是:先执行移出操作
|
||||
JFileChooser transferDirChooer = new JFileChooser();
|
||||
transferDirChooer.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||
transferDirChooer.setPreferredSize(fileChooerSize);
|
||||
transferDirChooer.setDialogTitle("请选择移出数据的保存路径...");
|
||||
if (transferDirChooer.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
|
||||
File transferDir = transferDirChooer.getSelectedFile();
|
||||
worker.execute(() -> {
|
||||
FSProgressDialog fsd = FSProgressDialog.getNewInstance(window);
|
||||
Thread t = new Thread(() -> {
|
||||
fsd.show();
|
||||
@ -249,6 +249,7 @@ public class FileSystemPathViewer extends KiftdDynamicWindow {
|
||||
if (r) {
|
||||
// 若所有数据移出成功,则移除指定存储区并结束流程
|
||||
SettingWindow.extendStores.remove(removeItemIndex);
|
||||
refresh();// 这里单独刷新一次是因为此部分逻辑可能会稍后才执行
|
||||
} else {
|
||||
// 若出现错误,则进行提示
|
||||
JOptionPane.showMessageDialog(window,
|
||||
@ -263,32 +264,40 @@ public class FileSystemPathViewer extends KiftdDynamicWindow {
|
||||
"目标文件夹内存在同名文件,建议选择一个空文件夹作为移出数据的保存路径。", "错误",
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
});
|
||||
} catch (Exception e1) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
fsd.close();
|
||||
JOptionPane.showMessageDialog(window,
|
||||
"出现意外错误,无法统计扩展存储区数据,请重启应用后重试。", "错误",
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
// 否:直接移除指定存储区
|
||||
SettingWindow.extendStores.remove(i);
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
break;
|
||||
});
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
case 1:
|
||||
// 否:直接移除指定存储区
|
||||
SettingWindow.extendStores.remove(i);
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} catch (Exception e1) {
|
||||
JOptionPane.showMessageDialog(window, "出现意外错误,无法统计存储区数据,请重启应用后重试。", "错误",
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
e1.printStackTrace();
|
||||
} else {
|
||||
SettingWindow.extendStores.remove(i);
|
||||
}
|
||||
break;
|
||||
} catch (Exception e1) {
|
||||
JOptionPane.showMessageDialog(window, "出现意外错误,无法统计扩展存储区数据,请重启应用后重试。", "错误",
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
enableAllButtons();
|
||||
refresh();
|
||||
});
|
||||
}
|
||||
enableAllButtons();
|
||||
refresh();
|
||||
|
||||
});
|
||||
// 生成文件列表
|
||||
pathsTable = new PathsTable();
|
||||
|
@ -1,5 +1,5 @@
|
||||
#Generated by Maven Integration for Eclipse
|
||||
#Wed Apr 03 23:36:07 CST 2024
|
||||
#Sat Apr 06 23:38:28 CST 2024
|
||||
m2e.projectLocation=/Users/kohgylw/Programs/java_workspace/kiftd
|
||||
m2e.projectName=kiftd
|
||||
groupId=kohgylw
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user