package Visual_DVM_2021.Passes.All; import Common.Constants; import Common.Current; import Common.Utils.Files.VDirectoryChooser; import Common.Utils.Utils; import GlobalData.Settings.SettingName; import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.Pass_2021; import java.io.File; import java.util.Arrays; import java.util.Vector; public class CreateGroupFromDirectory extends PublishTests { VDirectoryChooser directoryChooser = new VDirectoryChooser("Выбор домашней папки группы"); @Override public String getIconPath() { return "/icons/OpenProject.png"; } @Override protected PassCode_2021 getCreateTestCode() { return PassCode_2021.CreateTestFromDirectory; } @Override protected String getNoFilesMessage() { return "ни одной папки"; } @Override protected boolean canStart(Object... args) throws Exception { Utils.RestoreSelectedDirectory(directoryChooser); File dir = directoryChooser.ShowDialog(); if (dir == null) { Log.Writeln_("Папка не выбрана"); return false; } //--------------- 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; } if (!Utils.validateProjectFile(dir, Log)) { Log.Writeln_("Имя папки " + Utils.Brackets(dir.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу."); return false; } //-- File[] files_ = dir.listFiles(File::isDirectory); if (files_ == null) { Log.Writeln_("Ошибка при получении списка подпапок"); return false; } if (files_.length == 0) { Log.Writeln_("В выбранной папке не найдено ни одной папки"); return false; } if (passes.get(PassCode_2021.PublishGroup).Do(dir.getName().toUpperCase())) { group = Current.getGroup(); } else return false; //--------------- Vector files = new Vector<>(Arrays.asList(files_)); Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, directoryChooser.getCurrentDirectory()); return super.canStart(files, group); } }