package _VisualDVM.Passes.All;
import Common.Utils.Utils_;
import Common.Visual.Windows.Dialog.VFileChooser;
import _VisualDVM.Constants;
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.TestingSystem.Common.Group.Group;
import _VisualDVM.Utils;

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.ChooserProjectsSearchDirectory(fileChooser);
        Vector<File> files = fileChooser.ShowMultiDialog();
        if (files.isEmpty()) {
            Log.Writeln_("Не выбрано ни одного файла.");
            return false;
        }
        File dir = fileChooser.getCurrentDirectory();
        Global.mainModule.getPass(PassCode.UpdateProperty).Do("ProjectsSearchDirectory", dir.getAbsolutePath());
        //---------------
        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.testingServer.db.groups.getUI().getCurrent();
        } else return false;
        //--
        return super.canStart(files, group);
    }
}
