Files
VisualSapfor/src/_VisualDVM/Passes/All/ReplaceTestsFromFiles.java

138 lines
5.4 KiB
Java
Raw Normal View History

2024-10-14 12:14:01 +03:00
package _VisualDVM.Passes.All;
2024-10-14 15:19:13 +03:00
import Common.Passes.Pass;
2024-10-11 00:00:30 +03:00
import Common.Utils.Utils_;
import Common.Visual.UI;
2024-10-14 15:19:13 +03:00
import Common.Visual.Windows.Dialog.VFileChooser;
2024-10-09 22:01:19 +03:00
import _VisualDVM.Constants;
import _VisualDVM.Global;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.Server.ClientPass;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Passes.Server.TestingSystemPass;
2024-10-09 22:21:57 +03:00
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
import _VisualDVM.TestingSystem.Common.Group.Group;
import _VisualDVM.TestingSystem.Common.Test.Test;
import _VisualDVM.TestingSystem.Common.TestingServer;
2024-10-14 15:19:13 +03:00
import _VisualDVM.Utils;
import java.io.File;
import java.util.LinkedHashMap;
import java.util.Vector;
public class ReplaceTestsFromFiles extends ClientPass<TestingServer,Vector<Test>> {
VFileChooser fileChooser = new VFileChooser("Выберите файлы для замены тестов");
//--
Group group;
LinkedHashMap<Integer, Test> oldTests;
2024-03-05 19:21:42 +03:00
Vector<Test> replaceTests;
Vector<Test> newTests;
//--
@Override
public String getIconPath() {
return "/icons/Menu/Undo.png";
}
@Override
protected TestingServer getServer() {
return Global.testingServer;
}
//-
@Override
protected boolean canStart(Object... args) throws Exception {
2024-10-25 00:50:19 +03:00
if (!Global.testingServer.db.groups.getUI().CheckCurrent(Log))
return false;
group = Global.testingServer.db.groups.getUI().getCurrent();
//--->>>
Utils.RestoreSelectedDirectory(fileChooser);
Vector<File> files = fileChooser.ShowMultiDialog();
2024-03-05 19:21:42 +03:00
//---------------------------------------------------------------
//--
File dir = fileChooser.getCurrentDirectory();
Global.mainModule.getPass(PassCode.UpdateProperty).Do("ProjectsSearchDirectory", dir);
//---------------
if (dir.getName().equals(Constants.data)) {
2024-10-11 00:00:30 +03:00
Log.Writeln_(Utils_.Brackets(dir) + "\nявляется служебной папкой визуализатора!");
return false;
}
if (!Utils.validateProjectFile(dir, Log)) {
2024-10-11 00:00:30 +03:00
Log.Writeln_("Имя папки " + Utils_.Brackets(dir.getName()) + " содержит запрещённые символы "
2024-10-14 15:19:13 +03:00
+ Utils_.printAllForbiddenCharacters()
2024-10-07 22:04:09 +03:00
+ ", или кириллицу.");
return false;
}
2024-03-05 19:21:42 +03:00
if (files.isEmpty()) {
Log.Writeln_("Не выбрано ни одного файла.");
return false;
}
//-----------------------------------------
LinkedHashMap<String, File> filesByNames = new LinkedHashMap<>(); //выделенные файлы, сортированные по именам.
//--
for (File file : files) {
2024-10-11 00:00:30 +03:00
String name = Utils_.getNameWithoutExtension(file.getName()).toLowerCase();
2024-03-05 19:21:42 +03:00
if (!filesByNames.containsKey(name)) {
filesByNames.put(name, file);
}
}
//--
oldTests = new LinkedHashMap<>();
Vector<String> testForReplaceNames = new Vector<>();
Vector<String> newTestsNames = new Vector<>();
2024-03-05 19:21:42 +03:00
//--
for (String name : filesByNames.keySet()) {
2024-03-05 19:21:42 +03:00
boolean exists = false;
for (Test test : getServer().db.tests.Data.values()) {
if ((test.group_id == group.id) && test.description.equals(name)) {
exists = true;
2024-03-05 19:21:42 +03:00
//--
oldTests.put(test.id, test);
testForReplaceNames.add(name);
break;
}
}
if (!exists)
newTestsNames.add(name);
}
2024-03-05 19:21:42 +03:00
//--
if (oldTests.size() == 0) {
Log.Writeln_("Не найдено тестов на замену.");
return false;
}
//--
if (UI.Question(
testForReplaceNames.size() + " тестов будет заменено,\n" +
newTestsNames.size() + " тестов будет добавлено.\n" +
"Продолжить"
)) {
2024-03-05 19:21:42 +03:00
replaceTests = new Vector<>();
2024-10-14 15:19:13 +03:00
Pass createTestPass = Global.mainModule.getPass(PassCode.CreateTestFromFile);
for (Test old_test : oldTests.values()) {
File file = filesByNames.get(old_test.description);
if (createTestPass.Do(file, group)) {
Test new_test = (Test) createTestPass.target;
2024-03-05 19:21:42 +03:00
replaceTests.add(new_test);
new_test.id = old_test.id;
}
}
//--
newTests = new Vector<>();
for (String name : newTestsNames) {
File file = filesByNames.get(name);
if (createTestPass.Do(file, group)) {
Test new_test = (Test) createTestPass.target;
newTests.add(new_test);
}
}
if (!replaceTests.isEmpty())
SendRequest(ServerCode.ReplaceTestsCodes, null, replaceTests);
if (!newTests.isEmpty())
SendRequest(ServerCode.PublishObjects, null, newTests);
return true;
}
return false;
}
//-
@Override
protected void performFinish() throws Exception {
super.performFinish();
Global.mainModule.getPass(PassCode.SynchronizeTests).Do();
}
}