From d6637e742513998e3eea604b3269616dc3bb4734 Mon Sep 17 00:00:00 2001 From: David B Malkovsky Date: Tue, 26 Dec 2023 14:52:10 -0500 Subject: [PATCH] Chore: use compiled pattern instead of regular expression that needs to be regenerated each time (#1916) * Chore: use compiled pattern instead of regular expression that needs to be regenerated each time * Chore: format code --- .../java/org/isf/admission/gui/AdmittedPatientBrowser.java | 6 ++++-- src/main/java/org/isf/sms/gui/SmsEdit.java | 4 +++- src/main/java/org/isf/utils/jobjects/VoDoubleTextField.java | 5 ++++- src/main/java/org/isf/utils/jobjects/VoFloatTextField.java | 5 ++++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/isf/admission/gui/AdmittedPatientBrowser.java b/src/main/java/org/isf/admission/gui/AdmittedPatientBrowser.java index c1f83d450f..0e2aa065c8 100644 --- a/src/main/java/org/isf/admission/gui/AdmittedPatientBrowser.java +++ b/src/main/java/org/isf/admission/gui/AdmittedPatientBrowser.java @@ -39,6 +39,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.regex.Pattern; import javax.swing.BorderFactory; import javax.swing.BoxLayout; @@ -124,6 +125,7 @@ public class AdmittedPatientBrowser extends ModalJFrame implements PatientInsert private static final long serialVersionUID = 1L; private static final int PANEL_WIDTH = 240; + private static final Pattern DIGIT_PATTERN = Pattern.compile("\\d+"); private PatientHistoryManager patientHistoryManager = Context.getApplicationContext().getBean(PatientHistoryManager.class); @@ -1189,7 +1191,7 @@ else if (patientClassBox.getSelectedItem().equals(patientClassItems[1])) { // lower age limit String ageLimit = patientAgeFromTextField.getText(); - if (ageLimit.matches("\\d+")) { + if (DIGIT_PATTERN.matcher(ageLimit).matches()) { if (!(ap.getPatient().getAge() >= Integer.parseInt(ageLimit))) { continue; } @@ -1197,7 +1199,7 @@ else if (patientClassBox.getSelectedItem().equals(patientClassItems[1])) { // upper age limit ageLimit = patientAgeToTextField.getText(); - if (ageLimit.matches("\\d+")) { + if (DIGIT_PATTERN.matcher(ageLimit).matches()) { if (!(ap.getPatient().getAge() <= Integer.parseInt(ageLimit))) { continue; } diff --git a/src/main/java/org/isf/sms/gui/SmsEdit.java b/src/main/java/org/isf/sms/gui/SmsEdit.java index 9b71c4ef62..e94c6f0062 100644 --- a/src/main/java/org/isf/sms/gui/SmsEdit.java +++ b/src/main/java/org/isf/sms/gui/SmsEdit.java @@ -31,6 +31,7 @@ import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.time.LocalDateTime; +import java.util.regex.Pattern; import javax.swing.ImageIcon; import javax.swing.JButton; @@ -65,6 +66,7 @@ public class SmsEdit extends JDialog implements SelectionListener { private static final long serialVersionUID = 1L; + private static final Pattern SPACE_PATTERN = Pattern.compile(" "); private JPanel jCenterPanel; private JPanel jButtonPanel; @@ -231,7 +233,7 @@ private JButton getJOkButton() { jOkButton = new JButton(MessageBundle.getMessage("angal.common.ok.btn")); jOkButton.setMnemonic(MessageBundle.getMnemonic("angal.common.ok.btn.key")); jOkButton.addActionListener(actionEvent -> { - String number = jNumberTextField.getText().replaceAll(" ", "").trim(); + String number = SPACE_PATTERN.matcher(jNumberTextField.getText()).replaceAll("").trim(); String text = jTextArea.getText(); LocalDateTime schedDate = jSchedDateChooser.getLocalDateTime(); if (schedDate == null) { diff --git a/src/main/java/org/isf/utils/jobjects/VoDoubleTextField.java b/src/main/java/org/isf/utils/jobjects/VoDoubleTextField.java index fb6f2542db..b098c9d218 100644 --- a/src/main/java/org/isf/utils/jobjects/VoDoubleTextField.java +++ b/src/main/java/org/isf/utils/jobjects/VoDoubleTextField.java @@ -21,6 +21,8 @@ */ package org.isf.utils.jobjects; +import java.util.regex.Pattern; + import javax.swing.JTextField; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; @@ -33,6 +35,7 @@ public class VoDoubleTextField extends JTextField { private static final long serialVersionUID = 1L; + private static final Pattern ALPHA_NUMERIC_PATTERN = Pattern.compile("^[a-zA-Z0-9]*$"); /** * @param defval - default value @@ -70,7 +73,7 @@ public void insertString(int offs, String str, AttributeSet a) throws BadLocatio Double.parseDouble(newString + '0'); super.insertString(offs, str, a); } catch (NumberFormatException e) { - if (!str.matches("^[a-zA-Z0-9]*$")) { + if (!ALPHA_NUMERIC_PATTERN.matcher(str).matches()) { super.insertString(offs, ".", a); } } diff --git a/src/main/java/org/isf/utils/jobjects/VoFloatTextField.java b/src/main/java/org/isf/utils/jobjects/VoFloatTextField.java index 4e70c7ab7e..fc0aa3aa80 100644 --- a/src/main/java/org/isf/utils/jobjects/VoFloatTextField.java +++ b/src/main/java/org/isf/utils/jobjects/VoFloatTextField.java @@ -21,6 +21,8 @@ */ package org.isf.utils.jobjects; +import java.util.regex.Pattern; + import javax.swing.JTextField; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; @@ -33,6 +35,7 @@ public class VoFloatTextField extends JTextField { private static final long serialVersionUID = 1L; + private static final Pattern ALPHA_NUMERIC_PATTERN = Pattern.compile("^[a-zA-Z0-9]*$"); /** * @param defval - default value @@ -75,7 +78,7 @@ public void insertString(int offs, String str, AttributeSet a) throws BadLocatio Float.parseFloat(newString + '0'); super.insertString(offs, str, a); } catch (NumberFormatException e) { - if (!str.matches("^[a-zA-Z0-9]*$")) { + if (!ALPHA_NUMERIC_PATTERN.matcher(str).matches()) { super.insertString(offs, ".", a); } }