Files
VisualSapfor/src/Visual_DVM_2021/Passes/All/CreateGroupFromDirectory.java

68 lines
2.7 KiB
Java
Raw Normal View History

package Visual_DVM_2021.Passes.All;
2024-10-07 14:22:52 +03:00
import Common.Utils.CommonUtils;
import Common_old.Constants;
import Common_old.Current;
import Common_old.Utils.Files.VDirectoryChooser;
import Common_old.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()) {
2024-10-07 14:22:52 +03:00
Log.Writeln_(CommonUtils.Brackets(dir) + "\е является папкой!");
return false;
}
if (dir.getName().equals(Constants.data)) {
2024-10-07 14:22:52 +03:00
Log.Writeln_(CommonUtils.Brackets(dir) + "\nявляется служебной папкой визуализатора!");
return false;
}
if (!Utils.validateProjectFile(dir, Log)) {
2024-10-07 14:22:52 +03:00
Log.Writeln_("Имя папки " + CommonUtils.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<File> files = new Vector<>(Arrays.asList(files_));
Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, directoryChooser.getCurrentDirectory());
return super.canStart(files, group);
2023-11-20 22:29:38 +03:00
}
}