package _VisualDVM.GlobalData.EnvironmentValue.UI;
import Common.MainModule_;
import Common.Utils.Utils_;
import Common.Visual.UI;
import Common.Visual.Windows.Dialog.DBObjectDialog;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.EnvironmentValue.EnvironmentValue;
import _VisualDVM.GlobalData.Machine.Machine;
import _VisualDVM.GlobalData.RunConfiguration.RunConfiguration;
import _VisualDVM.Utils;
public class EnvironmentValueDialog extends DBObjectDialog<EnvironmentValue, EnvironmentValueFields> {
    public EnvironmentValueDialog() {
        super(EnvironmentValueFields.class);
    }
    @Override
    public void fillFields() {
        UI.TrySelect(fields.cbName, Result.name);
        fields.tfValue.setText(Result.value);
    }
    //https://javarush.ru/groups/posts/regulyarnye-vyrazheniya-v-java
    @Override
    public void validateFields() {
        String name = (String) fields.cbName.getSelectedItem();
        String value = fields.tfValue.getText();
        if (name.isEmpty())
            Log.Writeln("Имя переменной окружения не может быть пустым.");
        if (!name.matches("\\w*")) {
            Log.Writeln("Имя переменной окружения может содержать только латинские буквы, цифры и подчёркивания");
        }
        if (Utils.isLinuxSystemCommand(name))
            Log.Writeln(Utils_.DQuotes(name) + " является системной командой Linux,\nи не может быть задано в качестве имени переменной окружения.");
        if (value.contains("\"")) {
            Log.Writeln("Значение переменной окружения не может содержать двойные кавычки");
        }
        for (EnvironmentValue env : Global.mainModule.getDb().environmentValues.Data.values()) {
            if (
                    Global.mainModule.getDb().environmentValues.getUI().isObjectVisible(env)
                            && (Result.id != env.id) && (env.name.equals(name))) {
                Log.Writeln("В конфигурации запуска уже задана переменная окружения  с именем " + Utils_.Brackets(name));
                break;
            }
        }
    }
    @Override
    public void ProcessResult() {
        Result.machine_id = MainModule_.instance.getDb().getTable(Machine.class).getUI().getCurrent().id;
        Result.run_configuration_id = MainModule_.instance.getDb().getTable(RunConfiguration.class).getUI().getCurrent().id;
        Result.name = (String) fields.cbName.getSelectedItem();
        Result.value = fields.tfValue.getText();
    }
    @Override
    public int getDefaultHeight() {
        return 200;
    }
}
