package Visual_DVM_2021.Passes.All; import Common.Constants; import Common.Current; import Common.UI.UI; import Common.Utils.Files.VFileChooser; import Common.Utils.Utils; import GlobalData.Settings.SettingName; import TestingSystem.Common.Group.Group; import TestingSystem.Common.Test.Test; import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.Pass_2021; import Visual_DVM_2021.Passes.Server.TestingSystemPass; import java.io.File; import java.util.LinkedHashMap; import java.util.Vector; public class ReplaceTestsFromFiles extends TestingSystemPass> { Group group; Vector testsForReplace; VFileChooser fileChooser = new VFileChooser("Выберите файлы для замены тестов"); @Override public String getIconPath() { return "/icons/Menu/Undo.png"; } //- @Override protected boolean canStart(Object... args) throws Exception { if (!Current.Check(Log, Current.Group)) return false; group = Current.getGroup(); Utils.RestoreSelectedDirectory(fileChooser); Vector files = fileChooser.ShowMultiDialog(); LinkedHashMap sortedFiles = new LinkedHashMap<>(); //-- if (files.isEmpty()) { Log.Writeln_("Не выбрано ни одного файла."); return false; } //-- for (File file : files) { String name = Utils.getNameWithoutExtension(file.getName()).toLowerCase(); if (!sortedFiles.containsKey(name)) { sortedFiles.put(name, file); } } //-- File dir = fileChooser.getCurrentDirectory(); Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, dir); //--------------- if (dir.getName().equals(Constants.data)) { Log.Writeln_(Utils.Brackets(dir) + "\nявляется служебной папкой визуализатора!"); return false; } if (!Utils.validateProjectFile(dir, Log)) { Log.Writeln_("Имя папки " + Utils.Brackets(dir.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу."); return false; } //-- testsForReplace = new Vector<>(); Vector testForReplaceNames = new Vector<>(); for (Test test : server.db.tests.Data.values()) { if ((test.group_id == group.id)&&sortedFiles.containsKey(test.description)) { testsForReplace.add(test); testForReplaceNames.add(test.description); } } if (testsForReplace.size()==0){ Log.Writeln_("Не найдено тестов на замену."); return false; } //-- if (UI.Question("Тесты "+String.join("\n", testForReplaceNames)+"\nбудут заменены. Продолжить")){ return true; }; return false; } //- @Override protected void ServerAction() throws Exception { UI.Info("+"); } }