package Visual_DVM_2021.Passes;
import Common.Current_;
import Common.Passes.Pass;
import _VisualDVM.Current;
import _VisualDVM.Global;
import _VisualDVM.ServerObjectsCache.ConfigurationCache;
import _VisualDVM.ServerObjectsCache.VisualCaches;
import _VisualDVM.TestingSystem.Common.Configuration.Configuration;
import _VisualDVM.TestingSystem.Common.Group.Group;
import _VisualDVM.TestingSystem.Common.Test.Test;

import java.util.Vector;
public abstract class ShowCurrentConfigurationTests<C extends Configuration> extends Pass<C> {
    @Override
    public String getIconPath() {
        return "/icons/ShowPassword.png";
    }
    @Override
    public String getButtonText() {
        return "";
    }
    public abstract Current currentName();
    @Override
    protected boolean canStart(Object... args) throws Exception {
        target = null;
        if (Global.mainModule.Check(Log, currentName())) {
            target = (C) Global.mainModule.get(currentName());
            return true;
        }
        return false;
    }
    @Override
    protected void showPreparation() throws Exception {
        Global.testingServer.db.UnselectAllGTC();
    }
    @Override
    protected void showDone() throws Exception {
        ConfigurationCache cache = (ConfigurationCache) VisualCaches.GetCache(target);
        Vector<Group> groups =  cache.getGroups();
        Vector<Test> tests = cache.getTests();
        //-----
        //--
        for (Group group: groups)
            group.Select(true);
        for (Test test: tests)
            test.Select(true);
        //--
        if (!groups.isEmpty()){
            Global.testingServer.db.groups.ShowUI(groups.lastElement().id);
        }
        if (!tests.isEmpty()){
            Global.testingServer.db.tests.ShowUI(tests.lastElement().id);
        }
    }
}

