package _VisualDVM.GlobalData.EnvironmentValue; import Common.Database.Tables.iDBTable; import Common.Utils.Utils_; import Common.Visual.DataSetControlForm; import Common.Visual.UI_; import Common.Visual.Windows.Dialog.DBObjectDialog; import _VisualDVM.Current; import _VisualDVM.Global; import _VisualDVM.GlobalData.EnvironmentValue.UI.EnvironmentValueFields; import _VisualDVM.Utils; public class EnvironmentValuesDBTable extends iDBTable { public EnvironmentValuesDBTable() { super(EnvironmentValue.class); } @Override public String getSingleDescription() { return "переменная окружения"; } @Override public String getPluralDescription() { return "переменные окружения"; } @Override public DBObjectDialog getDialog() { return new DBObjectDialog(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 (env.isVisible() && (Result.id != env.id) && (env.name.equals(name))) { Log.Writeln("В конфигурации запуска уже задана переменная окружения с именем " + Utils_.Brackets(name)); break; } } } @Override public void ProcessResult() { Result.machine_id = Global.mainModule.getMachine().id; Result.run_configuration_id = Global.mainModule.getRunConfiguration().id; Result.name = (String) fields.cbName.getSelectedItem(); Result.value = fields.tfValue.getText(); } @Override public int getDefaultHeight() { return 200; } }; } @Override protected DataSetControlForm createUI() { return new DataSetControlForm(this) { @Override protected void AdditionalInitColumns() { columns.get(0).setVisible(false); } }; } @Override public String[] getUIColumnNames() { return new String[]{"имя", "значение"}; } @Override public Object getFieldAt(EnvironmentValue object, int columnIndex) { switch (columnIndex) { case 1: return object.name; case 2: return object.value; } return null; } @Override public Current CurrentName() { return Current.EnvironmentValue; } public EnvironmentValue getEnvByName(String name_in) { for (EnvironmentValue environmentValue : Data.values()) if (environmentValue.name.equalsIgnoreCase(name_in)) return environmentValue; return null; } }