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 Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.Pass_2021; import java.util.Vector; public class CreateTestsGroupFromSelectedVersions extends Pass_2021> { int group_id; int test_id; @Override protected boolean needsAnimation() { return true; } @Override public String getIconPath() { return "/icons/Publish.png"; } @Override public String getButtonText() { return ""; } @Override protected boolean canStart(Object... args) throws Exception { group_id = Constants.Nan; test_id = Constants.Nan; if (!Current.getAccount().CheckRegistered(Log)) return false; 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) { Log.Writeln_("Не отмечено ни одной версии."); return false; } if (Current.getProject().hasSubdirectories()) { Log.Writeln_("Запрещено добавлять тестовые проекты, содержащие подпапки!"); 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Текущий проект будет закрыт." + "\nПродолжить"); } @Override protected void performPreparation() throws Exception { passes.get(PassCode_2021.CloseCurrentProject).Do(); } @Override protected void showPreparation() throws Exception { UI.testingBar.ShowAutoCheckTesting(); } @Override protected void body() throws Exception { for (db_project_info vizTestProject : target) { //на случай если версия в текущем сеансе еще не открывалась. vizTestProject.Open(); vizTestProject.Close(); ShowMessage1("Публикация теста " + vizTestProject.getTitle()); PublishTest pass = new PublishTest() { @Override protected boolean needsAnimation() { return false; } @Override public boolean setProject() { project = vizTestProject; return true; } @Override public boolean fillObjectFields() throws Exception { if (setProject() && project.checkSubdirectories(Log)) { target.description = project.getLocalName() + " " + project.description; target.group_id = group_id; switch (project.languageName) { case fortran: target.dim = Current.getSapfor().getTextMaxDim(null, project); return true; case c: target.dim = Utils.getCProjectMaxDim(project); return true; default: return false; } } return false; } @Override public String getDescription() { return "Добавление версии " + vizTestProject.name; } @Override protected void performDone() throws Exception { test_id = (int) pk; } @Override protected void showDone() throws Exception { } }; if (!pass.Do()) return; } } @Override protected void performFinish() throws Exception { super.performDone(); passes.get(PassCode_2021.SynchronizeTests).Do(); } @Override protected void showDone() throws Exception { super.showDone(); Global.testingServer.db.groups.ui_.Show(group_id); Global.testingServer.db.tests.ui_.Show(test_id); } @Override protected void FocusResult() { UI.getMainWindow().FocusTests(); } }