This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit ba5ee9486154326740e3017174636dd5d3f7a7a7 Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Mon Mar 23 18:21:28 2020 +0300 CAY-2648 Whitespace symbols in JDBC Driver and DB URL lines lead to incorrect driver loading - refactor code to make it universal --- .../editor/datanode/JDBCDataSourceView.java | 8 ++++-- ...acesValidator.java => JTextFieldValidator.java} | 33 ++++++++++++++++------ 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/JDBCDataSourceView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/JDBCDataSourceView.java index 2447eac..7aa58c5 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/JDBCDataSourceView.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/datanode/JDBCDataSourceView.java @@ -26,7 +26,7 @@ import javax.swing.JPanel; import javax.swing.JPasswordField; import javax.swing.JTextField; -import org.apache.cayenne.modeler.util.JTextFieldWhitespacesValidator; +import org.apache.cayenne.modeler.util.JTextFieldValidator; import org.apache.cayenne.modeler.util.JTextFieldUndoable; import com.jgoodies.forms.builder.PanelBuilder; @@ -55,8 +55,10 @@ public class JDBCDataSourceView extends JPanel { syncWithLocal = new JButton("Sync with Local"); syncWithLocal.setToolTipText("Update from local DataSource"); - driver.addFocusListener(new JTextFieldWhitespacesValidator(driver)); - url.addFocusListener(new JTextFieldWhitespacesValidator(url)); + JTextFieldValidator.addValidation(driver, text -> text.length() != text.trim().length(), + "There are some whitespaces in this field"); + JTextFieldValidator.addValidation(url, text -> text.length() != text.trim().length(), + "There are some whitespaces in this field"); // assemble CellConstraints cc = new CellConstraints(); diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTextFieldWhitespacesValidator.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTextFieldValidator.java similarity index 55% rename from modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTextFieldWhitespacesValidator.java rename to modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTextFieldValidator.java index 7eacb89..56f3f49 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTextFieldWhitespacesValidator.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/JTextFieldValidator.java @@ -20,34 +20,51 @@ package org.apache.cayenne.modeler.util; import org.apache.cayenne.modeler.dialog.validator.ValidatorDialog; - import javax.swing.JTextField; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; +import java.util.function.Function; +import java.util.function.Predicate; /** * @since 4.2 */ -public class JTextFieldWhitespacesValidator implements FocusListener { +public class JTextFieldValidator implements FocusListener { + + private final JTextField jTextField; + private final Predicate<String> validator; + private final Function<String, String> message; + + static public void addValidation(JTextField field, Predicate<String> validator, Function<String, String> message) { + JTextFieldValidator validationListener + = new JTextFieldValidator(field, validator, message); + field.addFocusListener(validationListener); + } - private JTextField jTextField; + static public void addValidation(JTextField field, Predicate<String> validator, String message) { + addValidation(field, validator, text -> message); + } + + static public void addValidation(JTextField field, Predicate<String> validator) { + addValidation(field, validator, text -> "There are illegal chars in this field"); + } - public JTextFieldWhitespacesValidator(JTextField jTextField) { + JTextFieldValidator(JTextField jTextField, Predicate<String> validator, Function<String, String> message) { this.jTextField = jTextField; + this.validator = validator; + this.message = message; } @Override public void focusGained(FocusEvent e) { - } @Override public void focusLost(FocusEvent e) { String text = jTextField.getText(); - int length = text.length() - text.trim().length(); - if (length != 0) { + if(validator.test(text)) { jTextField.setBackground(ValidatorDialog.WARNING_COLOR); - jTextField.setToolTipText("There are some whitespaces in this line"); + jTextField.setToolTipText(message.apply(text)); } } }