Skip to content

Commit 9c75c1b

Browse files
committed
Support parameters, final part
1 parent cb23dd6 commit 9c75c1b

File tree

3 files changed

+31
-6
lines changed

3 files changed

+31
-6
lines changed

src/main/java/com/github/introfog/gitwave/controller/main/CommandTabController.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ public boolean isValid() {
6161
return true;
6262
}
6363

64+
public String getCommandWithParameters() {
65+
return parametersTabController.applyParameters(command.getText());
66+
}
67+
6468
public void clean() {
6569
specifySourceCommand(null);
6670
}

src/main/java/com/github/introfog/gitwave/controller/main/MainController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ protected void runCommand() {
9797
AppConfig.getInstance().setLastRunFolder(directoryTabController.getDirectory());
9898

9999
new Thread(() -> {
100-
CommandExecutor.searchGitReposAndExecuteCommand(directoryTabController.getDirectory(), command.getText());
100+
CommandExecutor.searchGitReposAndExecuteCommand(directoryTabController.getDirectory(),
101+
commandTabController.getCommandWithParameters());
101102
}).start();
102103
}
103104
}

src/main/java/com/github/introfog/gitwave/controller/main/ParametersTabController.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public class ParametersTabController extends SupportController {
4141
private static final Pattern ONLY_SPACES_PATTERN = Pattern.compile("^\\s*$");
4242
private final Label parametersText;
4343
private final TableView<ParameterDto> parametersTable;
44+
private final Set<ParameterDto> parameters = new HashSet<>();
4445

4546
public ParametersTabController(FxmlStageHolder fxmlStageHolder, TableView<ParameterDto> parametersTable, Label parametersText) {
4647
super(fxmlStageHolder);
@@ -50,21 +51,30 @@ public ParametersTabController(FxmlStageHolder fxmlStageHolder, TableView<Parame
5051

5152
@Override
5253
public boolean isValid() {
53-
for (ParameterDto parameter : parametersTable.getItems()) {
54+
for (ParameterDto parameter : parameters) {
5455
final String value = parameter.getValue();
5556
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);
5859
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.");
6061
return false;
6162
}
6263
}
6364
return true;
6465
}
6566

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+
6676
public void parseCommandParameters(String command) {
67-
final Set<ParameterDto> parameters = new HashSet<>();
77+
parameters.clear();
6878
Matcher matcher = PARAMETERS_PATTERN.matcher(command);
6979
while (matcher.find()) {
7080
final String name = matcher.group(1);
@@ -93,6 +103,16 @@ public void parseCommandParameters(String command) {
93103
final TableColumn<ParameterDto, String> valueTableColumn = (TableColumn<ParameterDto, String>) parametersTable.getColumns().get(1);
94104
valueTableColumn.setCellValueFactory(new PropertyValueFactory<>("value"));
95105
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+
});
96116
}
97117
}
98118
}

0 commit comments

Comments
 (0)