From 094c3fda667b3771544cb3acce7084c7b11c1290 Mon Sep 17 00:00:00 2001 From: 02090095 Date: Sat, 25 Nov 2023 01:51:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=BF=D1=80=D0=BE=D1=85=D0=BE=D0=B4=D1=8B=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=BF=D0=BF=D1=8B=20=D0=B8=D0=B7=20=D0=BF=D0=B0=D0=BF?= =?UTF-8?q?=D0=BA=D0=B8,=20=D0=B8=20=D1=82=D0=B5=D1=81=D1=82=D0=B0=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B8.=20=D0=9E=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=BB=D0=BE=D1=81=D1=8C=20=D0=BE=D0=B1=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=B8=D1=82=D1=8C=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D1=83=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=20=D0=B8?= =?UTF-8?q?=D0=B7=20=D1=80=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=B8=D1=8F,=20=D1=82=D0=B0=D0=BC=20=D1=82=D0=BE=D0=B6=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B5=D0=B9=D1=81=D1=82=D0=B2=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Passes/All/CreateGroupFromDirectory.java | 74 +++++++-------- .../Passes/All/CreateTestFromDirectory.java | 36 ++++---- .../CreateTestsGroupFromSelectedVersions.java | 92 +++++-------------- .../Passes/All/PublishTests.java | 22 ----- src/Visual_DVM_2021/Passes/PassCode_2021.java | 3 - src/Visual_DVM_2021/Passes/PublishTests.java | 73 +++++++++++++++ 6 files changed, 146 insertions(+), 154 deletions(-) delete mode 100644 src/Visual_DVM_2021/Passes/All/PublishTests.java create mode 100644 src/Visual_DVM_2021/Passes/PublishTests.java diff --git a/src/Visual_DVM_2021/Passes/All/CreateGroupFromDirectory.java b/src/Visual_DVM_2021/Passes/All/CreateGroupFromDirectory.java index 8d646934..fa08910a 100644 --- a/src/Visual_DVM_2021/Passes/All/CreateGroupFromDirectory.java +++ b/src/Visual_DVM_2021/Passes/All/CreateGroupFromDirectory.java @@ -1,77 +1,69 @@ package Visual_DVM_2021.Passes.All; import Common.Constants; +import Common.Current; import Common.Utils.Files.VDirectoryChooser; import Common.Utils.Utils; -import TestingSystem.Common.Group.Group; +import GlobalData.Settings.SettingName; import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.Pass_2021; +import Visual_DVM_2021.Passes.PublishTests; import java.io.File; -public class CreateGroupFromDirectory extends Pass_2021 { +import java.util.Arrays; +public class CreateGroupFromDirectory extends PublishTests { File dir = null; - File[] files = null; - int group_id ; VDirectoryChooser directoryChooser = new VDirectoryChooser("Выбор домашней папки группы"); @Override public String getIconPath() { - return "/icons/CreateProject.png"; + return "/icons/OpenProject.png"; } @Override - public String getButtonText() { - return ""; - } - @Override - protected boolean needsAnimation() { - return true; - } - @Override - protected boolean canStart(Object... args) throws Exception { + protected boolean getGroup() { dir = null; - files = null; - target = null; - group_id = Constants.Nan; - //- + Utils.RestoreSelectedDirectory(directoryChooser); dir = directoryChooser.ShowDialog(); - //- if (dir == null) return false; + else + Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, dir.getParent()); //-- if (!dir.isDirectory()) { Log.Writeln_(Utils.Brackets(dir) + "\nне является папкой!"); return false; } - //- + //-- if (dir.getName().equals(Constants.data)) { Log.Writeln_(Utils.Brackets(dir) + "\nявляется служебной папкой визуализатора!"); return false; } - files = dir.listFiles(File::isDirectory); - if (files == null) { - Log.Writeln_("Ошибка при получении списка папок"); + //-- + if (!Utils.validateProjectFile(dir, Log)) { + Log.Writeln_("Имя папки " + Utils.Brackets(dir.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу."); return false; } - if (files.length == 0) { - Log.Writeln_("В выбранной папке не найдено ни одной папки"); - return false; - } - PublishGroup pass = (PublishGroup) passes.get(PassCode_2021.PublishGroup); - if (pass.Do(dir.getName().toUpperCase())) { - group_id = (int) pass.pk; + //-- + if (passes.get(PassCode_2021.PublishGroup).Do(dir.getName().toUpperCase())){ + group = Current.getGroup(); return true; - } + }; return false; } @Override - protected void body() throws Exception { - /* - for (File file : files) { - ShowMessage1("создание проекта: "+file.getName()); - passes.get(PassCode_2021.CreateTestFromDirectory).Do(file, group_id); + protected boolean findFiles() { + File[] files_ = dir.listFiles(File::isDirectory); + if (files_ == null) { + Log.Writeln_("Ошибка при получении списка подпапок"); + return false; } - */ - } - @Override - protected void performFinish() throws Exception { - passes.get(PassCode_2021.SynchronizeTests).Do(); + if (files_.length == 0) { + Log.Writeln_("В выбранной папке не найдено ни одной папки"); + return false; + } + files.addAll(Arrays.asList(files_)); + System.out.println(files.size()); + for (File file: files){ + System.out.println(file.getAbsolutePath()); + } + return true; } } diff --git a/src/Visual_DVM_2021/Passes/All/CreateTestFromDirectory.java b/src/Visual_DVM_2021/Passes/All/CreateTestFromDirectory.java index 3898dd34..a0446611 100644 --- a/src/Visual_DVM_2021/Passes/All/CreateTestFromDirectory.java +++ b/src/Visual_DVM_2021/Passes/All/CreateTestFromDirectory.java @@ -11,6 +11,7 @@ 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 org.apache.commons.io.FileUtils; import java.io.File; import java.util.Vector; @@ -26,11 +27,11 @@ public class CreateTestFromDirectory extends Pass_2021 { } @Override protected boolean needsAnimation() { - return from_directory_chooser; + return true; } Group group = null; File dir = null; - boolean from_directory_chooser=false; + boolean from_directory_chooser = false; Vector project_files = new Vector<>(); @Override protected boolean canStart(Object... args) throws Exception { @@ -42,7 +43,7 @@ public class CreateTestFromDirectory extends Pass_2021 { dir = directoryChooser.ShowDialog(); group = Current.getGroup(); if (dir == null) { - if (from_directory_chooser) Log.Writeln_("Папка не выбрана."); + Log.Writeln_("Папка не выбрана."); return false; } else { Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, dir.getParent()); @@ -62,21 +63,23 @@ public class CreateTestFromDirectory extends Pass_2021 { int other_project_files = 0; //--- if (dir.getName().equalsIgnoreCase(Constants.data)) { - if (from_directory_chooser) - Log.Writeln_("Папка " + Utils.Brackets(dir) + " является служебной папкой визуализатора."); + Log.Writeln_("Папка " + Utils.Brackets(dir) + " является служебной папкой визуализатора."); + return false; + } + //-- + if (!Utils.validateProjectFile(dir, Log)) { + Log.Writeln_("Имя папки " + Utils.Brackets(dir.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу."); return false; } //-- if (files == null) { - if (from_directory_chooser) - Log.Writeln_("Не удалось получить список файлов для папки " + Utils.Brackets(dir) + "."); + Log.Writeln_("Не удалось получить список файлов для папки " + Utils.Brackets(dir) + "."); return false; } //-- for (File file : files) { if (!Utils.validateProjectFile(file, Log)) { - if (from_directory_chooser) - Log.Writeln_("Имя файла " + Utils.Brackets(file.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу."); + Log.Writeln_("Имя файла " + Utils.Brackets(file.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу."); bad++; } if (file.isDirectory() && !file.getName().equalsIgnoreCase(Constants.data)) { @@ -103,20 +106,18 @@ public class CreateTestFromDirectory extends Pass_2021 { } //-- if (subdirs > 0) { - if (from_directory_chooser) Log.Writeln_("Папка " + Utils.Brackets(dir) + " содержит вложенные подпапки."); + Log.Writeln_("Папка " + Utils.Brackets(dir) + " содержит вложенные подпапки."); return false; } if (bad > 0) { return false; } if (fortran_programs == 0) { - if (from_directory_chooser) - Log.Writeln_("Папка не содержит ни одной программы на языке " + group.language.getDescription() + "."); + Log.Writeln_("Папка не содержит ни одной программы на языке " + group.language.getDescription() + "."); return false; } if (other_project_files > 0) { - if (from_directory_chooser) - Log.Writeln_("Папка содержит файлы, не являющиеся программами на языке FORTRAN, или заголовочными."); + Log.Writeln_("Папка содержит файлы, не являющиеся программами на языке FORTRAN, или заголовочными."); return false; } //----- @@ -141,11 +142,13 @@ public class CreateTestFromDirectory extends Pass_2021 { //-- db_project_info project = target.packCode(dir); //создание копии папки, и архивация. //-- получить размерность консольным сапфором. папка уже отправлена и чистить ее не нужно!! + File sapfor_copy = Utils.getTempFileName("SAPFOR"); + FileUtils.copyFile(Current.getSapfor().getFile(), sapfor_copy); ShowMessage2("Синтаксический анализ"); - if (Sapfor.parse(Current.getSapfor().getFile(), project.Home, Current.getSapfor().getConsoleFlags()) + if (Sapfor.parse(sapfor_copy, project.Home, Current.getSapfor().getConsoleFlags()) ) { ShowMessage2("Определение размерности"); - if (Sapfor.analysis(Current.getSapfor().getFile(), project.Home, + if (Sapfor.analysis(sapfor_copy, project.Home, PassCode_2021.SPF_GetMaxMinBlockDistribution, Current.getSapfor().getConsoleFlags())) { for (String line : Sapfor.outputLines) { @@ -162,7 +165,6 @@ public class CreateTestFromDirectory extends Pass_2021 { } else { Log.Writeln_("Не удалось выполнить синтаксический анализ проекта " + Utils.Brackets(dir.getName())); } - //todo получить значение из файла вывода анализа. } @Override protected boolean validate() { diff --git a/src/Visual_DVM_2021/Passes/All/CreateTestsGroupFromSelectedVersions.java b/src/Visual_DVM_2021/Passes/All/CreateTestsGroupFromSelectedVersions.java index 27c8e665..632f0c58 100644 --- a/src/Visual_DVM_2021/Passes/All/CreateTestsGroupFromSelectedVersions.java +++ b/src/Visual_DVM_2021/Passes/All/CreateTestsGroupFromSelectedVersions.java @@ -1,94 +1,44 @@ package Visual_DVM_2021.Passes.All; -import Common.Constants; import Common.Current; import Common.Global; -import Common.UI.UI; -import Common.Utils.Utils; import ProjectData.Project.db_project_info; -import TestingSystem.Common.Test.Test; -import Visual_DVM_2021.Passes.PassCode_2021; -import Visual_DVM_2021.Passes.Pass_2021; +import Visual_DVM_2021.Passes.PublishTests; import java.util.Vector; -public class CreateTestsGroupFromSelectedVersions extends Pass_2021> { - int group_id; - int test_id; - Vector tests = new Vector<>(); - @Override - protected boolean needsAnimation() { - return true; - } +public class CreateTestsGroupFromSelectedVersions extends PublishTests { + Vector versions = new Vector<>(); @Override public String getIconPath() { return "/icons/Publish.png"; } @Override - public String getButtonText() { - return ""; + protected boolean getGroup() { + if (Current.Check(Log, Current.Group)) { + group = Current.getGroup(); + return true; + } + return false; } @Override - protected boolean canStart(Object... args) throws Exception { - group_id = Constants.Nan; - test_id = Constants.Nan; - tests = new Vector<>(); - if (!Current.getAccount().CheckRegistered(Log)) - return false; + protected boolean findFiles() { if (!Global.versions_multiselection) { Log.Writeln_("Нажмите правую клавишу мыши, и перейдите в режим выбора версий."); return false; } - if (!Current.Check(Log, Current.Group)) { - return false; - } - target = new Vector<>(); - group_id = Current.getGroup().id; - Current.getRoot().getSelectedVersions(target); - if (target.size() == 0) { + versions = new Vector<>(); + Current.getRoot().getSelectedVersions(versions); + if (versions.size() == 0) { Log.Writeln_("Не отмечено ни одной версии."); return false; } - if (Current.getProject().hasSubdirectories()) { - Log.Writeln_("Запрещено добавлять тестовые проекты, содержащие подпапки!"); + for (db_project_info version : versions) + files.add(version.Home); + return true; + } + @Override + protected boolean canStart(Object... args) throws Exception { + if (!Current.getAccount().CheckRegistered(Log)) return false; - } - String cp_info = ""; - if (Current.HasProject()) { - for (db_project_info version : target) { - if (version.Home.getAbsolutePath().equals(Current.getProject().Home.getAbsolutePath())) { - cp_info = "Текущий проект будет закрыт."; - break; - } - } - } - return UI.Question("В текущую группу " + Utils.Brackets(Current.getGroup().description) + - "\nбудет добавлено " + target.size() + " тестов.\n" + cp_info + - "\nПродолжить"); - } - @Override - protected void showPreparation() throws Exception { - UI.testingBar.ShowAutoCheckTesting(); - } - @Override - protected void body() throws Exception { - ShowMessage1("Создание тестов"); - CreateTestFromDirectory createTestFromDirectory = (CreateTestFromDirectory) passes.get(PassCode_2021.CreateTestFromDirectory); - PublishTests publishTests = (PublishTests) passes.get(PassCode_2021.PublishTests); - for (db_project_info vizTestProject : target) { - ShowMessage2(vizTestProject.name); - if (createTestFromDirectory.Do(vizTestProject.Home, Current.getGroup())) { - tests.add(createTestFromDirectory.target); - } else break; - } - System.out.println("tests created " + tests.size()); - ShowMessage1("Публикация тестов"); - publishTests.Do(tests); - } - @Override - protected void performFinish() throws Exception { - passes.get(PassCode_2021.SynchronizeTests).Do(); - } - @Override - protected void FocusResult() { - UI.getMainWindow().FocusTests(); + return super.canStart(args); } } diff --git a/src/Visual_DVM_2021/Passes/All/PublishTests.java b/src/Visual_DVM_2021/Passes/All/PublishTests.java deleted file mode 100644 index 9cd60fee..00000000 --- a/src/Visual_DVM_2021/Passes/All/PublishTests.java +++ /dev/null @@ -1,22 +0,0 @@ -package Visual_DVM_2021.Passes.All; -import Repository.Server.ServerCode; -import Repository.Server.ServerExchangeUnit_2021; -import TestingSystem.Common.Test.Test; -import Visual_DVM_2021.Passes.Server.TestingSystemPass; - -import java.util.Vector; -public class PublishTests extends TestingSystemPass> { - @Override - protected boolean needsAnimation() { - return false; - } - @Override - protected boolean canStart(Object... args) throws Exception { - target = (Vector) args[0]; - return target != null && !target.isEmpty(); - } - @Override - protected void ServerAction() throws Exception { - Command(new ServerExchangeUnit_2021(ServerCode.PublishObjects, null, target)); - } -} diff --git a/src/Visual_DVM_2021/Passes/PassCode_2021.java b/src/Visual_DVM_2021/Passes/PassCode_2021.java index 00dd76e1..39274d98 100644 --- a/src/Visual_DVM_2021/Passes/PassCode_2021.java +++ b/src/Visual_DVM_2021/Passes/PassCode_2021.java @@ -298,7 +298,6 @@ public enum PassCode_2021 { AbortTaskPackage, //-- CreateGroupFromDirectory, - PublishTests, CreateTestFromDirectory, //-> TestPass; @@ -308,8 +307,6 @@ public enum PassCode_2021 { return "?"; case CreateTestFromDirectory: return "Создать тест из папки"; - case PublishTests: - return "Опубликовать тесты"; case SPF_RemoveOmpDirectives: return "Удаление Open MP директив"; case CreateGroupFromDirectory: diff --git a/src/Visual_DVM_2021/Passes/PublishTests.java b/src/Visual_DVM_2021/Passes/PublishTests.java new file mode 100644 index 00000000..61a37a08 --- /dev/null +++ b/src/Visual_DVM_2021/Passes/PublishTests.java @@ -0,0 +1,73 @@ +package Visual_DVM_2021.Passes; +import Common.UI.UI; +import Common.Utils.Utils; +import Repository.Server.ServerCode; +import Repository.Server.ServerExchangeUnit_2021; +import TestingSystem.Common.Group.Group; +import TestingSystem.Common.Test.Test; +import Visual_DVM_2021.Passes.All.CreateTestFromDirectory; +import Visual_DVM_2021.Passes.Server.TestingSystemPass; + +import java.io.File; +import java.util.Vector; +public abstract class PublishTests extends TestingSystemPass> { + @Override + public String getButtonText() { + return ""; + } + @Override + protected boolean needsAnimation() { + return true; + } + //--- + protected Group group; + protected Vector files; + protected abstract boolean getGroup(); + protected abstract boolean findFiles(); + @Override + protected boolean canStart(Object... args) throws Exception { + target = new Vector<>(); + files = new Vector<>(); + //-------------------------- + group = null; + if (!getGroup()) return false; + if (group == null) { + Log.Writeln_("Группа не выбрана."); + return false; + } + files = new Vector<>(); + if (!findFiles()) return false; + if (files.isEmpty()) { + Log.Writeln_("Не найдено ни одной папки для формирования теста."); + return false; + } + //--- + CreateTestFromDirectory createTestFromDirectory = (CreateTestFromDirectory) passes.get(PassCode_2021.CreateTestFromDirectory); + //--- + for (File file : files) { + if (createTestFromDirectory.Do(file, group)) + target.add(createTestFromDirectory.target); + } + //--- + if (target.isEmpty()) { + Log.Writeln_("Не удалось создать ни одного теста."); + return false; + } + //--- + return UI.Question("В группу " + Utils.Brackets(group.description) + + "\nбудет добавлено " + target.size() + " тестов.\nПродолжить"); + } + @Override + protected void ServerAction() throws Exception { + Command(new ServerExchangeUnit_2021(ServerCode.PublishObjects, null, target)); + } + @Override + protected void performFinish() throws Exception { + super.performFinish(); + passes.get(PassCode_2021.SynchronizeTests).Do(); + } + @Override + protected void FocusResult() { + UI.getMainWindow().FocusTests(); + } +}