67 lines
2.7 KiB
Java
67 lines
2.7 KiB
Java
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<File> files = new Vector<>(Arrays.asList(files_));
|
||
Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, directoryChooser.getCurrentDirectory());
|
||
return super.canStart(files, group);
|
||
}
|
||
}
|