package Visual_DVM_2021.Passes.All;
import Common.Constants;
import Common.Current;
import Common.Utils.Files.VFileChooser;
import Common.Utils.Utils;
import GlobalData.Settings.SettingName;
import TestingSystem.Common.Group.Group;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;

import java.io.File;
import java.util.Vector;
public class CreateGroupFromFiles extends PublishTests{
    Group group;
    VFileChooser fileChooser = new VFileChooser("Выберите файлы для создания тестов");

    @Override
    protected PassCode_2021 getCreateTestCode() {
        return PassCode_2021.CreateTestFromFile;
    }
    @Override
    protected String getNoFilesMessage() {
        return "ни одного файла";
    }
    @Override
    protected boolean canStart(Object... args) throws Exception {
        Utils.RestoreSelectedDirectory(fileChooser);
        Vector<File> files = fileChooser.ShowMultiDialog();
        if (files.isEmpty()){
            Log.Writeln_("Не выбрано ни одного файла.");
            return false;
        }
        File dir = fileChooser.getCurrentDirectory();
        Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, dir);
        //---------------
        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;
        }
        if (passes.get(PassCode_2021.PublishGroup).Do(dir.getName().toUpperCase())) {
            group = Current.getGroup();
        } else return false;
        //--
        return super.canStart(files, group);
    }
}
