package Visual_DVM_2021.Passes.All;
import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Current;
import Common.Visual.Windows.Dialog.VFileChooser;
import _VisualDVM.Global;
import _VisualDVM.Utils;
import _VisualDVM.GlobalData.Settings.SettingName;
import _VisualDVM.TestingSystem.Common.Group.Group;
import Visual_DVM_2021.Passes.PassCode;
import Common.Passes.Pass;

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

    @Override
    protected PassCode getCreateTestCode() {
        return PassCode.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();
        Global.mainModule.getPass(PassCode.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())
                    + " содержит запрещённые символы "
                    +  Utils_.printAllForbiddenCharacters() + ", или кириллицу.");
            return false;
        }
        if ( Global.mainModule.getPass(PassCode.PublishGroup).Do(dir.getName().toUpperCase())) {
            group = Global.mainModule.getGroup();
        } else return false;
        //--
        return super.canStart(files, group);
    }
}
