absicherung Mail Adresse im Mahnlauf

This commit is contained in:
Ralph Soika 2023-04-03 12:07:39 +02:00
parent 9b8bc1e330
commit ba221f51f6
5 changed files with 1227 additions and 2 deletions

View file

@ -18,7 +18,9 @@ import javax.json.JsonObjectBuilder;
import org.imixs.workflow.ItemCollection; import org.imixs.workflow.ItemCollection;
import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.engine.DocumentService;
import org.imixs.workflow.exceptions.PluginException;
import org.imixs.workflow.exceptions.QueryException; import org.imixs.workflow.exceptions.QueryException;
import org.imixs.workflow.faces.util.ErrorHandler;
/** /**
* The CargosoftController CDI Bean provides Front-End methods for the cargosoft * The CargosoftController CDI Bean provides Front-End methods for the cargosoft
@ -311,8 +313,11 @@ public class CargosoftController implements Serializable {
/** /**
* Diese Method überträgt die geänderten Daten in das Kreidtoren/Debitoren * Diese Method überträgt die geänderten Daten in das Kreidtoren/Debitoren
* Objekt (cdtr.creditperiod,cdtr.iban,cdtr.bic) * Objekt (cdtr.creditperiod,cdtr.iban,cdtr.bic)
*
* Zusätzlich wird geprüft ob die eingegebene Mail Adresse eine gültige SMTP Adresse ist
* @throws PluginException
*/ */
public void updateZahlungsziel() { public void updateZahlungsziel() throws PluginException {
String cdtrNumber = kreditor.getItemValueString("cdtr.number"); String cdtrNumber = kreditor.getItemValueString("cdtr.number");
logger.fine("Zahlungsziel = " + cdtrNumber); logger.fine("Zahlungsziel = " + cdtrNumber);
@ -331,7 +336,15 @@ public class CargosoftController implements Serializable {
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
// no op // no op
} }
cargoCreditor.setItemValue("cdtr.mail", kreditor.getItemValueString("cdtr.mail"));
String mail= kreditor.getItemValueString("cdtr.mail").trim();
if (!InvoiceUtil.validateEmail(mail)) {
throw new PluginException(CargosoftController.class.getName(),
"INVALID_EMAIL", "Die Daten konnten nicht aktualisiert werden! Bitte geben Sie eine gültige E-Mail Adresse ein!");
}
cargoCreditor.setItemValue("cdtr.mail",mail);
cargoCreditor.setItemValue("cdtr.iban", kreditor.getItemValueString("cdtr.iban")); cargoCreditor.setItemValue("cdtr.iban", kreditor.getItemValueString("cdtr.iban"));
cargoCreditor.setItemValue("cdtr.bic", kreditor.getItemValueString("cdtr.bic")); cargoCreditor.setItemValue("cdtr.bic", kreditor.getItemValueString("cdtr.bic"));
cargoCreditor.setItemValue("cdtr.iban2", kreditor.getItemValueString("cdtr.iban2")); cargoCreditor.setItemValue("cdtr.iban2", kreditor.getItemValueString("cdtr.iban2"));
@ -344,6 +357,12 @@ public class CargosoftController implements Serializable {
} }
} catch (QueryException e) { } catch (QueryException e) {
logger.severe("Unable to find cargosoft kreditor " + e.getMessage()); logger.severe("Unable to find cargosoft kreditor " + e.getMessage());
} catch (PluginException pe) {
// add a new FacesMessage into the FacesContext
ErrorHandler.handlePluginException(pe);
throw pe;
} }
} }

View file

@ -2,6 +2,7 @@ package com.alexanderlogistics;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.regex.Pattern;
/** /**
* Rundungs Methode * Rundungs Methode
* *
@ -18,6 +19,24 @@ public class InvoiceUtil {
return bd.doubleValue(); return bd.doubleValue();
} }
/**
* Hilfsmethode zum validieren der Mailadresse
*
* @param emailAddress
* @return
*/
public static boolean validateEmail(String emailAddress) {
//String regexPattern = "^(.+)@(\\S+)$";
String regexPattern = "^(?=.{1,64}@)[A-Za-z0-9_-]+(\\.[A-Za-z0-9_-]+)*@"
+ "[^-][A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$";
return Pattern.compile(regexPattern)
.matcher(emailAddress)
.matches();
}
@Deprecated @Deprecated
public static double roundConservative(double value) { public static double roundConservative(double value) {
value = value * 100; value = value * 100;

View file

@ -16,6 +16,9 @@
<f:view> <f:view>
<h:form id="zahlungsziel_form_id"> <h:form id="zahlungsziel_form_id">
<!-- ########## Error ########## -->
<ui:include src="/pages/error_message.xhtml" />
<!-- Cargosoft Creditor Search integration --> <!-- Cargosoft Creditor Search integration -->
<ui:include <ui:include
src="/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml"> src="/pages/workitems/forms/alexander/cargsoft-creditor-search.xhtml">

View file

@ -114,5 +114,19 @@ public class TestFormat {
System.out.println("Ich bin Kein Held"); System.out.println("Ich bin Kein Held");
} }
} }
@Test
public void testSMTPMailAddress() {
Assert.assertTrue(InvoiceUtil.validateEmail("info@imixs.com"));
Assert.assertFalse(InvoiceUtil.validateEmail("in fo@imixs.com"));
Assert.assertFalse(InvoiceUtil.validateEmail("SM PSP Queries <PSP.Queries@dssmith.com>"));
Assert.assertTrue(InvoiceUtil.validateEmail("PSP.Queries@dssmith.com"));
}
} }

File diff suppressed because it is too large Load diff