You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2020/03/23 15:23:33 UTC
[cayenne] 02/04: CAY-2648 Whitespace symbols in JDBC Driver and DB
URL lines lead to incorrect driver loading - refactor code to make it
universal
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 <st...@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));
}
}
}