package _VisualDVM.Passes.Testing;
import Common.Visual.UI;
import _VisualDVM.Current;
import _VisualDVM.Global;
import _VisualDVM.Passes.Server.PublishServerObject;
import _VisualDVM.TestingSystem.Common.TasksPackageState;
import _VisualDVM.TestingSystem.Common.TestingPackage.TestingPackage;
import _VisualDVM.TestingSystem.Common.TestingServer;
public abstract class StartTestingPackage<P extends TestingPackage> extends PublishServerObject<TestingServer, P> {
    public StartTestingPackage(Class<P> p_in) {
        super(Global.testingServer, p_in);
    }
    @Override
    public String getIconPath() {
        return "/Common/icons/BlueStart.png";
    }
    protected abstract Current getCurrentName();
    @Override
    protected boolean canStart(Object... args) throws Exception {
        if (!Global.mainModule.getAccount().CheckRegistered(Log)) {
            return false;
        }
        if (Global.mainModule.Check(Log, getCurrentName())) {
            target = (P) Global.mainModule.get(getCurrentName());
            //-
            if (!target.state.equals(TasksPackageState.Draft)) {
                Log.Writeln_("Возможно запустить только пакет, готовящийся к публикации!");
                return false;
            }
            if (target.tasksCount == 0) {
                Log.Writeln_("В пакете отсутствуют задачи.");
                return false;
            }
            if (UI.Question("Будет запущено:\n"
                    + target.tasksCount + " задач.\n" +
                    "Продолжить")) {
                target.state = TasksPackageState.Queued;
                return true;
            }
        }
        return false;
    }
}

