@@ -41,6 +41,7 @@ public class ParametersTabController extends SupportController {
41
41
private static final Pattern ONLY_SPACES_PATTERN = Pattern .compile ("^\\ s*$" );
42
42
private final Label parametersText ;
43
43
private final TableView <ParameterDto > parametersTable ;
44
+ private final Set <ParameterDto > parameters = new HashSet <>();
44
45
45
46
public ParametersTabController (FxmlStageHolder fxmlStageHolder , TableView <ParameterDto > parametersTable , Label parametersText ) {
46
47
super (fxmlStageHolder );
@@ -50,21 +51,30 @@ public ParametersTabController(FxmlStageHolder fxmlStageHolder, TableView<Parame
50
51
51
52
@ Override
52
53
public boolean isValid () {
53
- for (ParameterDto parameter : parametersTable . getItems () ) {
54
+ for (ParameterDto parameter : parameters ) {
54
55
final String value = parameter .getValue ();
55
56
final String name = parameter .getName ();
56
- if (value == null | | ONLY_SPACES_PATTERN .matcher (value ).matches ()) {
57
- LOGGER .warn ("Parameter '{}' hasn't been specified yet, either remove or set value ." , name );
57
+ if (value == null || ONLY_SPACES_PATTERN .matcher (value ).matches ()) {
58
+ LOGGER .warn ("Parameter '{}' hasn't been specified yet." , name );
58
59
DialogFactory .createErrorAlert ("Invalid parameter" ,
59
- "Parameter {" + name + "} hasn't been specified yet, either remove or set value." );
60
+ "Parameter {" + name + "} hasn't been specified yet, either remove or set not empty value." );
60
61
return false ;
61
62
}
62
63
}
63
64
return true ;
64
65
}
65
66
67
+ public String applyParameters (String command ) {
68
+ for (ParameterDto param : parameters ) {
69
+ final String name = param .getName ();
70
+ final String value = param .getValue ();
71
+ command = command .replaceAll ("\\ {" + name + "\\ }" , value );
72
+ }
73
+ return command ;
74
+ }
75
+
66
76
public void parseCommandParameters (String command ) {
67
- final Set < ParameterDto > parameters = new HashSet <> ();
77
+ parameters . clear ();
68
78
Matcher matcher = PARAMETERS_PATTERN .matcher (command );
69
79
while (matcher .find ()) {
70
80
final String name = matcher .group (1 );
@@ -93,6 +103,16 @@ public void parseCommandParameters(String command) {
93
103
final TableColumn <ParameterDto , String > valueTableColumn = (TableColumn <ParameterDto , String >) parametersTable .getColumns ().get (1 );
94
104
valueTableColumn .setCellValueFactory (new PropertyValueFactory <>("value" ));
95
105
valueTableColumn .setCellFactory (TextFieldTableCell .forTableColumn ());
106
+
107
+ valueTableColumn .setOnEditCommit (event -> {
108
+ ParameterDto editedDto = event .getRowValue ();
109
+ ParameterDto found = parameters .stream ().filter (item -> item .equals (editedDto )).findFirst ().orElse (null );
110
+ if (found == null ) {
111
+ LOGGER .error ("While updating parameters table, parameter '{}' wasn't found." , editedDto );
112
+ } else {
113
+ found .setValue (event .getNewValue ());
114
+ }
115
+ });
96
116
}
97
117
}
98
118
}
0 commit comments