Update of 
/var/cvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
In directory 
james.mmbase.org:/tmp/cvs-serv25177/portlets-dynamicforms/src/java/com/finalist/portlets/responseform

Modified Files:
        ResponseFormPortlet.java 
Log Message:
CMSC-680 - Made improvements again, because my previous work was reverted by 
mguo. Also did some enhancements. 


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
See also: http://www.mmbase.org/jira/browse/CMSC-680


Index: ResponseFormPortlet.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform/ResponseFormPortlet.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- ResponseFormPortlet.java    15 Feb 2008 09:05:52 -0000      1.9
+++ ResponseFormPortlet.java    3 Mar 2008 10:41:55 -0000       1.10
@@ -127,15 +127,21 @@
                      errorMessages.put(fieldIdentifier, 
"view.formfield.empty");
                   }
                   if (!regex.equals("")
-                        && (((type == TYPE_TEXTBOX) || (type == 
TYPE_TEXTAREA)) && !value.toString().matches(regex))) {
+                        && (((type == TYPE_TEXTBOX) || (type == 
TYPE_TEXTAREA)) && !isEmailAddress(value.toString()))) {
                      errorMessages.put(fieldIdentifier, 
"view.formfield.invalid");
                   }
+                  
+                  if ((type == TYPE_TEXTBOX) && sendEmail) {   //If data is 
used as email address, then it should be valid 
+                      if (!isEmailAddress(userEmailAddress))
+                         errorMessages.put(fieldIdentifier, 
"view.formfield.invalid");
+                  }
+                  
                   if (type == TYPE_CHECKBOX) {
                      if(value != null && value instanceof String){
                         textValue = (value == null) ? CHECKBOX_NO : 
value.toString();
                      }
                      else if (value != null && value instanceof ArrayList){
-                        textValue = chansferParamtersValues((ArrayList)value);
+                        textValue = transferParameterValues((ArrayList)value);
                      }
                      else{
                         textValue = CHECKBOX_NO;
@@ -163,9 +169,11 @@
                      errorMessages.put("sendemail", "view.error.sendemail");
                   }
                   else {
-                     // if the responseform email has been sent, send also the
-                     // email to the user
-                     sendUserEmail(responseForm, userEmailAddress, emailData, 
parameterMap);
+                      // if the responseform email has been sent, send also 
the email to the user
+                      sent = sendUserEmail(responseForm, userEmailAddress, 
emailData, parameterMap);
+                      if (!sent) {
+                         errorMessages.put("sendemail", 
"view.error.sendemail");
+                      }
                   }
                }
             }
@@ -195,8 +203,9 @@
       data.append(textValue);
       data.append(System.getProperty("line.separator"));
    }
+   
    @SuppressWarnings("unchecked")
-   private String chansferParamtersValues(List textValues) {
+   private String transferParameterValues(List textValues) {
       StringBuffer temp = new StringBuffer();
       for(Object textValue : textValues){
          temp.append(textValue+REGEX);
@@ -242,11 +251,11 @@
    }
 
 
-   protected void sendUserEmail(Node responseform, String userEmailAddress, 
String responseformData,
+   protected boolean sendUserEmail(Node responseform, String userEmailAddress, 
String responseformData,
          Map<String, Object> parameterMap) {
       boolean sent = false;
       String userEmailSubject = 
responseform.getStringValue("useremailsubject");
-      String userEmailSender = responseform.getStringValue("useremailsender");
+      String userEmailSenderAddress = 
responseform.getStringValue("useremailsender");
       String userEmailSenderName = 
responseform.getStringValue("useremailsendername");
       String userEmailTextBefore = 
responseform.getStringValue("useremailbody");
       String userEmailTextAfter = 
responseform.getStringValue("useremailbodyafter");
@@ -265,13 +274,14 @@
          userEmailText.append(userEmailTextAfter);
       }
 
-      String emailRegex = getEmailRegex();
-      if (!StringUtil.isEmptyOrWhitespace(userEmailSender) && 
!StringUtil.isEmptyOrWhitespace(userEmailText.toString())
+      if (!StringUtil.isEmptyOrWhitespace(userEmailText.toString())
             && !StringUtil.isEmptyOrWhitespace(userEmailSenderName)
-            && !StringUtil.isEmptyOrWhitespace(userEmailAddress) && 
userEmailAddress.matches(emailRegex)) {
+            && isEmailAddress(userEmailAddress)
+            && isEmailAddress(userEmailSenderAddress)) {
          try {
-            EmailSender.getInstance().sendEmail(userEmailSender, 
userEmailSenderName, userEmailAddress,
+            EmailSender.getInstance().sendEmail(userEmailSenderAddress, 
userEmailSenderName, userEmailAddress,
                   userEmailSubject, userEmailText.toString());
+            sent = true;
          }
          catch (UnsupportedEncodingException e) {
             getLogger().error("error sending email", e);
@@ -280,6 +290,7 @@
             getLogger().error("error sending email", e);
          }
       }
+      return sent;
    }
 
 
@@ -291,12 +302,13 @@
       String emailTextBefore = responseform.getStringValue("emailbody");
       String emailTextAfter = responseform.getStringValue("emailbodyafter");
 
-      String senderEmail = userEmailAddress;
+      String senderEmailAddress = userEmailAddress;
       String senderName = userEmailAddress;
       if (StringUtil.isEmptyOrWhitespace(userEmailAddress)) {
-         senderEmail = responseform.getStringValue("useremailsender");
+         senderEmailAddress = responseform.getStringValue("useremailsender");
          senderName = responseform.getStringValue("useremailsendername");
       }
+      if (!isEmailAddress(senderEmailAddress)) return false; //Last check 
email address
 
       emailTextBefore = emailTextBefore.trim();
       emailText.append(emailTextBefore);
@@ -311,8 +323,13 @@
       String emailAddressesValue = 
responseform.getStringValue("emailaddresses");
       String emailSubject = responseform.getStringValue("emailsubject");
       List<String> emailList = Arrays.asList(emailAddressesValue.split(";"));
+      if (!isEmailAddress(emailList)) {
+         getLogger().error("error sending email. Some of the following 
emailaddresses are incorrect: " + emailList.toString());
+         return false; //Could not sent email because of false email address
+      }
+
       try {
-         EmailSender.getInstance().sendEmail(senderEmail, senderName, 
emailList, emailSubject, emailText.toString(),
+         EmailSender.getInstance().sendEmail(senderEmailAddress, senderName, 
emailList, emailSubject, emailText.toString(),
                attachment);
          sent = true;
       }
@@ -448,6 +465,26 @@
 
    }
 
+   public boolean isEmailAddress(String emailAddress) {
+      if (emailAddress == null) return false;
+      if (StringUtil.isEmptyOrWhitespace(emailAddress)) return false;
+      
+      String emailRegex = getEmailRegex();
+      return emailAddress.matches(emailRegex);
+   }
+          
+   public boolean isEmailAddress(List<String> emailList) {
+      if (emailList == null) return false;
+      if (emailList.isEmpty()) return false;
+            
+      String emailRegex = getEmailRegex();
+      for (String email : emailList) {
+        if (email == null || StringUtil.isEmptyOrWhitespace(email)) return 
false;
+         if (!email.matches(emailRegex)) return false;
+      }
+      
+      return true;
+   }
 
    private long getMaxAttachmentSize() {
       long maxFileSize = DEFAULT_MAXFILESIZE;
@@ -465,8 +502,7 @@
       return maxFileSize * MEGABYTE;
    }
 
-
-   private String getEmailRegex() {
+   protected String getEmailRegex() {
       String emailRegex = PropertiesUtil.getProperty("email.regex");
       if (!StringUtil.isEmptyOrWhitespace(emailRegex)) {
          return emailRegex;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to