Замена тестов в группе на выбранные файлы. Приду, отлажу и закоммичу
This commit is contained in:
@@ -5,6 +5,8 @@ import Common.UI.UI;
|
||||
import Common.Utils.Files.VFileChooser;
|
||||
import Common.Utils.Utils;
|
||||
import GlobalData.Settings.SettingName;
|
||||
import Repository.Server.ServerCode;
|
||||
import Repository.Server.ServerExchangeUnit_2021;
|
||||
import TestingSystem.Common.Group.Group;
|
||||
import TestingSystem.Common.Test.Test;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
@@ -15,9 +17,12 @@ import java.io.File;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
public class ReplaceTestsFromFiles extends TestingSystemPass<Vector<Test>> {
|
||||
Group group;
|
||||
Vector<Test> testsForReplace;
|
||||
VFileChooser fileChooser = new VFileChooser("Выберите файлы для замены тестов");
|
||||
//--
|
||||
Group group;
|
||||
LinkedHashMap<Integer, Test> oldTests;
|
||||
Vector<Test> newTests;
|
||||
//--
|
||||
@Override
|
||||
public String getIconPath() {
|
||||
return "/icons/Menu/Undo.png";
|
||||
@@ -28,9 +33,10 @@ public class ReplaceTestsFromFiles extends TestingSystemPass<Vector<Test>> {
|
||||
if (!Current.Check(Log, Current.Group))
|
||||
return false;
|
||||
group = Current.getGroup();
|
||||
//--->>>
|
||||
Utils.RestoreSelectedDirectory(fileChooser);
|
||||
Vector<File> files = fileChooser.ShowMultiDialog();
|
||||
LinkedHashMap<String, File> sortedFiles = new LinkedHashMap<>();
|
||||
LinkedHashMap<String, File> filesForReplace = new LinkedHashMap<>(); //выделенные файлы, сортированные по именам.
|
||||
//--
|
||||
if (files.isEmpty()) {
|
||||
Log.Writeln_("Не выбрано ни одного файла.");
|
||||
@@ -39,8 +45,8 @@ public class ReplaceTestsFromFiles extends TestingSystemPass<Vector<Test>> {
|
||||
//--
|
||||
for (File file : files) {
|
||||
String name = Utils.getNameWithoutExtension(file.getName()).toLowerCase();
|
||||
if (!sortedFiles.containsKey(name)) {
|
||||
sortedFiles.put(name, file);
|
||||
if (!filesForReplace.containsKey(name)) {
|
||||
filesForReplace.put(name, file);
|
||||
}
|
||||
}
|
||||
//--
|
||||
@@ -56,22 +62,30 @@ public class ReplaceTestsFromFiles extends TestingSystemPass<Vector<Test>> {
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
testsForReplace = new Vector<>();
|
||||
oldTests = new LinkedHashMap<>();
|
||||
Vector<String> testForReplaceNames = new Vector<>();
|
||||
for (Test test : server.db.tests.Data.values()) {
|
||||
if ((test.group_id == group.id)&&sortedFiles.containsKey(test.description)) {
|
||||
testsForReplace.add(test);
|
||||
if ((test.group_id == group.id)&&filesForReplace.containsKey(test.description)) {
|
||||
oldTests.put(test.id, test);
|
||||
testForReplaceNames.add(test.description);
|
||||
}
|
||||
}
|
||||
if (testsForReplace.size()==0){
|
||||
if (oldTests.size()==0){
|
||||
Log.Writeln_("Не найдено тестов на замену.");
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
if (UI.Question("Тесты "+String.join("\n", testForReplaceNames)+"\nбудут заменены. Продолжить")){
|
||||
|
||||
|
||||
newTests = new Vector<>();
|
||||
Pass_2021 createTestPass = passes.get(PassCode_2021.CreateTestFromFile);
|
||||
for (Test old_test: oldTests.values()){
|
||||
File file= filesForReplace.get(old_test.description);
|
||||
if (createTestPass.Do(file, group)){
|
||||
Test new_test = (Test) createTestPass.target;
|
||||
newTests.add(new_test);
|
||||
new_test.id = old_test.id;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
return false;
|
||||
@@ -79,6 +93,11 @@ public class ReplaceTestsFromFiles extends TestingSystemPass<Vector<Test>> {
|
||||
//-
|
||||
@Override
|
||||
protected void ServerAction() throws Exception {
|
||||
UI.Info("+");
|
||||
Command(new ServerExchangeUnit_2021(ServerCode.ReplaceTestsCodes, null, newTests));
|
||||
}
|
||||
@Override
|
||||
protected void performFinish() throws Exception {
|
||||
super.performFinish();
|
||||
passes.get(PassCode_2021.SynchronizeTests).Do();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user