package _VisualDVM.TestingSystem.Common.Configuration;
import Common.Database.Objects.DBObject;
import Common.Database.Objects.riDBObject;
import Common.Utils.Utils_;
import Common.Utils.TextLog;
import _VisualDVM.TestingSystem.Common.Group.Group;
import _VisualDVM.TestingSystem.Common.Group.Json.GroupsJson;
import _VisualDVM.TestingSystem.Common.Settings.Json.SettingsArrayJson;
import _VisualDVM.TestingSystem.Common.Settings.Settings;
import _VisualDVM.TestingSystem.Common.Test.Json.TestsJson;
import _VisualDVM.TestingSystem.Common.Test.Test;
import com.sun.org.glassfish.gmbal.Description;

import javax.swing.*;
import java.util.Vector;
public class Configuration extends riDBObject {
    //конфигурация = данные для пакета.
    //группы
    //тесты
    //настройки тестируемого объекта
    //пакет = запуск конфигурация + тестируемый объект
    //---
    public int maxtime = 300;
    @Description("DEFAULT 0")
    public int autoTesting = 0;
    @Description("DEFAULT 1")
    public int kernels = 1;  //ядра
    //----
    public String printAuto() {
        return autoTesting > 0 ? "Да" : "Нет";
    }
    public void SwitchAuto() {
        autoTesting = (autoTesting == 0) ? 1 : 0;
    }
    public ImageIcon GetAutoIcon() {
        return Utils_.getIcon("/Common/icons/" + (autoTesting == 1 ? "RedPick" : "NotPick") + ".png");
    }
    //--
    @Description("DEFAULT ''")
    public String packedGroupsJson = "";
    @Description("DEFAULT ''")
    public String packedTestsJson = "";
    @Description("DEFAULT ''")
    public String packedSettingsJson = "";
    //--
    public void saveGroupsAsJson(Vector<Group> groups) {
        packedGroupsJson = Utils_.gson.toJson(new GroupsJson(groups));
    }
    public void saveTestsAsJson(Vector<Test> tests) {
        packedTestsJson = Utils_.gson.toJson(new TestsJson(tests));
    }
    public void saveSettingsAsJson(Vector<Settings> settings) {
        packedSettingsJson = Utils_.gson.toJson(new SettingsArrayJson(settings));
    }
    //--
    @Override
    public void SynchronizeFields(DBObject src) {
        super.SynchronizeFields(src);
        Configuration c = (Configuration) src;
        //--
        maxtime = c.maxtime;
        autoTesting = c.autoTesting;
        kernels = c.kernels;
        //-
        packedGroupsJson = c.packedGroupsJson;
        packedTestsJson = c.packedTestsJson;
        packedSettingsJson = c.packedSettingsJson;
    }
    //- для автоматического тестирования главным образом.
    public boolean validate(TextLog log) {
        return true;
    }
}
