Skip to content

Commit

Permalink
Introduced validation support while creating configuration
Browse files Browse the repository at this point in the history
Fixes #112
  • Loading branch information
amitjoy committed Jun 10, 2022
1 parent 7dedbda commit e007eed
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,15 @@
import org.controlsfx.dialog.LoginDialog;
import org.controlsfx.glyphfont.FontAwesome;
import org.controlsfx.glyphfont.Glyph;
import org.controlsfx.validation.ValidationSupport;
import org.controlsfx.validation.Validator;
import org.eclipse.fx.core.Triple;
import org.eclipse.fx.core.log.FluentLogger;
import org.eclipse.fx.core.log.Log;

import com.google.common.base.Strings;
import com.google.common.base.Supplier;
import com.google.common.base.Throwables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.osgifx.console.agent.dto.ConfigValue;
Expand Down Expand Up @@ -69,8 +72,9 @@ public final class ConfigurationCreateDialog extends Dialog<ConfigurationDTO> {

@Log
@Inject
private FluentLogger logger;
private final ValueConverter converter = new ValueConverter();
private FluentLogger logger;
private final ValueConverter converter = new ValueConverter();
private final ValidationSupport validationSupport = new ValidationSupport();

private final Map<PropertiesForm, Triple<Supplier<String>, Supplier<String>, Supplier<XAttributeDefType>>> configurationEntries = Maps
.newHashMap();
Expand All @@ -86,6 +90,7 @@ public void init() {
dialogPane.getButtonTypes().addAll(ButtonType.CANCEL);

final var txtPid = (CustomTextField) TextFields.createClearableTextField();
validationSupport.registerValidator(txtPid, Validator.createEmptyValidator("Invalid PID"));
txtPid.setLeft(new ImageView(getClass().getResource("/graphic/icons/id.png").toExternalForm()));

final var txtFactoryPid = (CustomTextField) TextFields.createClearableTextField();
Expand Down Expand Up @@ -130,11 +135,18 @@ public void init() {
setResultConverter(dialogButton -> {
final var data = dialogButton == null ? null : dialogButton.getButtonData();
try {
return data == ButtonData.OK_DONE ? getInput(txtPid, txtFactoryPid) : null;
if (data == ButtonData.OK_DONE) {
if (validationSupport.isInvalid()) {
throw new RuntimeException("Validation for configuration creation failed");
}
return getInput(txtPid, txtFactoryPid);
}
return null;
} catch (final Exception e) {
logger.atError().withException(e).log("Configuration values cannot be converted");
Throwables.throwIfInstanceOf(e, RuntimeException.class);
return null;
}
return null;
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.StageStyle;
import javafx.util.Callback;

public final class RoleCreateDialog extends Dialog<RoleDTO> {

Expand Down Expand Up @@ -105,6 +106,26 @@ public void init() {

dropdownRoleType.getSelectionModel().select(0);
txtRoleName.setPromptText(pidCaption);

setResultConverter(new Callback<ButtonType, RoleCreateDialog.RoleDTO>() {

@Override
public RoleDTO call(ButtonType param) {
final var data = param == null ? null : param.getButtonData();
try {
if (data == ButtonData.OK_DONE) {
if (validationSupport.isInvalid()) {
throw new RuntimeException("Role name validation failed");
}
return getInput(dropdownRoleType.getValue(), txtRoleName.getText());
}
return null;
} catch (final Exception e) {
logger.atError().withException(e).log("Role cannot be created");
throw e;
}
}
});

setResultConverter(dialogButton -> {
final var data = dialogButton == null ? null : dialogButton.getButtonData();
Expand Down

0 comments on commit e007eed

Please sign in to comment.