You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by mb...@apache.org on 2017/12/16 15:47:25 UTC

svn commit: r1818427 - /ofbiz/ofbiz-framework/trunk/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java

Author: mbrohl
Date: Sat Dec 16 15:47:25 2017
New Revision: 1818427

URL: http://svn.apache.org/viewvc?rev=1818427&view=rev
Log:
Improved: General refactoring and code improvements, package 
org.apache.ofbiz.party.communication.
(OFBIZ-10066)

Thanks Julian Leichert for reporting and providing the patch.

Modified:
    ofbiz/ofbiz-framework/trunk/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java

Modified: ofbiz/ofbiz-framework/trunk/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java?rev=1818427&r1=1818426&r2=1818427&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java Sat Dec 16 15:47:25 2017
@@ -83,7 +83,7 @@ public class CommunicationEventServices
         String communicationEventId = (String) context.get("communicationEventId");
 
         Map<String, Object> result = ServiceUtil.returnSuccess();
-        List<Object> errorMessages = new LinkedList<Object>(); // used to keep a list of all error messages returned from sending emails to contact list
+        List<Object> errorMessages = new LinkedList<>(); // used to keep a list of all error messages returned from sending emails to contact list
 
         try {
             // find the communication event and make sure that it is actually an email
@@ -115,7 +115,7 @@ public class CommunicationEventServices
             }
 
             // prepare the email
-            Map<String, Object> sendMailParams = new HashMap<String, Object>();
+            Map<String, Object> sendMailParams = new HashMap<>();
             sendMailParams.put("sendFrom", communicationEvent.getRelatedOne("FromContactMech", false).getString("infoString"));
             sendMailParams.put("subject", communicationEvent.getString("subject"));
             sendMailParams.put("contentType", communicationEvent.getString("contentMimeTypeId"));
@@ -128,7 +128,7 @@ public class CommunicationEventServices
             List <GenericValue> comEventContents = EntityQuery.use(delegator).from("CommEventContentAssoc").where("communicationEventId", communicationEventId).filterByDate().queryList();
             if (UtilValidate.isNotEmpty(comEventContents)) {
                 isMultiPart = true;
-                List<Map<String, ? extends Object>> bodyParts = new LinkedList<Map<String,? extends Object>>();
+                List<Map<String, ? extends Object>> bodyParts = new LinkedList<>();
                 if (UtilValidate.isNotEmpty(communicationEvent.getString("content"))) {
                     bodyParts.add(UtilMisc.<String, Object>toMap("content", communicationEvent.getString("content"), "type", communicationEvent.getString("contentMimeTypeId")));
                 }
@@ -240,7 +240,7 @@ public class CommunicationEventServices
 
             } else {
                 // Call the sendEmailToContactList service if there's a contactListId present
-                Map<String, Object> sendEmailToContactListContext = new HashMap<String, Object>();
+                Map<String, Object> sendEmailToContactListContext = new HashMap<>();
                 sendEmailToContactListContext.put("contactListId", communicationEvent.getString("contactListId"));
                 sendEmailToContactListContext.put("communicationEventId", communicationEventId);
                 sendEmailToContactListContext.put("userLogin", userLogin);
@@ -253,9 +253,7 @@ public class CommunicationEventServices
                     errorMessages.addAll(e.getMessageList());
                 }
             }
-        } catch (GeneralException eez) {
-            return ServiceUtil.returnError(eez.getMessage());
-        } catch (IOException eey) {
+        } catch (IOException | GeneralException eey) {
             return ServiceUtil.returnError(eey.getMessage());
         }
 
@@ -272,7 +270,7 @@ public class CommunicationEventServices
         GenericValue userLogin = (GenericValue) context.get("userLogin");
         Locale locale = (Locale) context.get("locale");
 
-        List<Object> errorMessages = new LinkedList<Object>();
+        List<Object> errorMessages = new LinkedList<>();
         String errorCallingUpdateContactListPartyService = UtilProperties.getMessage(resource, "commeventservices.errorCallingUpdateContactListPartyService", locale);
         String errorCallingSendMailService = UtilProperties.getMessage(resource, "commeventservices.errorCallingSendMailService", locale);
         String errorInSendEmailToContactListService = UtilProperties.getMessage(resource, "commeventservices.errorInSendEmailToContactListService", locale);
@@ -286,7 +284,7 @@ public class CommunicationEventServices
             GenericValue communicationEvent = EntityQuery.use(delegator).from("CommunicationEvent").where("communicationEventId", communicationEventId).queryOne();
             GenericValue contactList = EntityQuery.use(delegator).from("ContactList").where("contactListId", contactListId).queryOne();
 
-            Map<String, Object> sendMailParams = new HashMap<String, Object>();
+            Map<String, Object> sendMailParams = new HashMap<>();
             sendMailParams.put("sendFrom", communicationEvent.getRelatedOne("FromContactMech", false).getString("infoString"));
             sendMailParams.put("subject", communicationEvent.getString("subject"));
             sendMailParams.put("contentType", communicationEvent.getString("contentMimeTypeId"));
@@ -305,7 +303,7 @@ public class CommunicationEventServices
                     .where(EntityCondition.makeCondition(conditionList, EntityOperator.AND))
                     .cursorScrollInsensitive()
                     .distinct();
-                    
+
 
             try (EntityListIterator eli = eq.queryIterator()) {
                 // Send an email to each contact list member
@@ -317,7 +315,9 @@ public class CommunicationEventServices
                     try {
 
                         String emailAddress = contactListPartyAndContactMech.getString("infoString");
-                        if (UtilValidate.isEmpty(emailAddress)) continue;
+                        if (UtilValidate.isEmpty(emailAddress)) {
+                            continue;
+                        }
                         emailAddress = emailAddress.trim();
 
                         if (! UtilValidate.isEmail(emailAddress)) {
@@ -339,7 +339,9 @@ public class CommunicationEventServices
                                 .orderBy("-fromDate")
                                 .cache(true)
                                 .queryFirst();
-                        if (lastContactListPartyACM == null) continue;
+                        if (lastContactListPartyACM == null) {
+                            continue;
+                        }
 
                         String partyId = lastContactListPartyACM.getString("partyId");
 
@@ -377,7 +379,7 @@ public class CommunicationEventServices
                                 .queryFirst();
                         if (contactListPartyStatus != null) {
                             // prepare body parameters
-                            Map<String, Object> bodyParameters = new HashMap<String, Object>();
+                            Map<String, Object> bodyParameters = new HashMap<>();
                             bodyParameters.put("contactListId", contactListId);
                             bodyParameters.put("partyId", contactListPartyAndContactMech.getString("partyId"));
                             bodyParameters.put("preferredContactMechId", contactListPartyAndContactMech.getString("preferredContactMechId"));
@@ -432,24 +434,26 @@ public class CommunicationEventServices
                                     errorMessages.add(e.getMessage());
                                 }
                                 continue;
-                            } else {
-                                // If the send attempt fails, just log and skip the email address
-                                Debug.logError(errorCallingSendMailService + ": " + ServiceUtil.getErrorMessage(tmpResult), module);
-                                errorMessages.add(errorCallingSendMailService + ": " + ServiceUtil.getErrorMessage(tmpResult));
-                                continue;
                             }
-                        } else {
-                            // attach the parent communication event to the new event created when sending the mail
-                            String thisCommEventId = (String) tmpResult.get("communicationEventId");
-                            GenericValue thisCommEvent = EntityQuery.use(delegator).from("CommunicationEvent").where("communicationEventId", thisCommEventId).queryOne();
-                            if (thisCommEvent != null) {
-                                thisCommEvent.set("contactListId", contactListId);
-                                thisCommEvent.set("parentCommEventId", communicationEventId);
-                                thisCommEvent.store();
-                            }
-                            String messageId = (String) tmpResult.get("messageId");
-                            contactListCommStatusRecord.set("messageId", messageId);
+                            // If the send attempt fails, just log and skip the email address
+                            Debug.logError(errorCallingSendMailService + ": " + ServiceUtil.getErrorMessage(tmpResult),
+                                    module);
+                            errorMessages.add(errorCallingSendMailService + ": " + ServiceUtil.getErrorMessage(
+                                    tmpResult));
+                            continue;
                         }
+                        // attach the parent communication event to the new event created when sending
+                        // the mail
+                        String thisCommEventId = (String) tmpResult.get("communicationEventId");
+                        GenericValue thisCommEvent = EntityQuery.use(delegator).from("CommunicationEvent").where(
+                                "communicationEventId", thisCommEventId).queryOne();
+                        if (thisCommEvent != null) {
+                            thisCommEvent.set("contactListId", contactListId);
+                            thisCommEvent.set("parentCommEventId", communicationEventId);
+                            thisCommEvent.store();
+                        }
+                        String messageId = (String) tmpResult.get("messageId");
+                        contactListCommStatusRecord.set("messageId", messageId);
 
                         if ("Y".equals(contactList.get("singleUse"))) {
 
@@ -560,7 +564,7 @@ public class CommunicationEventServices
 
         Timestamp now = UtilDateTime.nowTimestamp();
 
-        Map<String, Object> commEventMap = new HashMap<String, Object>();
+        Map<String, Object> commEventMap = new HashMap<>();
         commEventMap.put("communicationEventTypeId", "EMAIL_COMMUNICATION");
         commEventMap.put("contactMechTypeId", "EMAIL_ADDRESS");
         commEventMap.put("contactMechIdFrom", contactMechIdFrom);
@@ -608,7 +612,7 @@ public class CommunicationEventServices
         String communicationEventId = (String) context.get("communicationEventId");
         MimeMessageWrapper wrapper = (MimeMessageWrapper) context.get("messageWrapper");
 
-        Map<String, Object> commEventMap = new HashMap<String, Object>();
+        Map<String, Object> commEventMap = new HashMap<>();
         commEventMap.put("communicationEventId", communicationEventId);
         commEventMap.put("subject", wrapper.getSubject());
         commEventMap.put("statusId", "COM_COMPLETE");
@@ -692,7 +696,9 @@ public class CommunicationEventServices
                     ((addressesFrom == null || addressesFrom[0] == null) ? "not found" : addressesFrom[0].toString()) + "] to [" +
                     ((addressesTo == null || addressesTo[0] == null) ? "not found" : addressesTo[0].toString()) + "]";
 
-            if (Debug.verboseOn()) Debug.logVerbose("Processing Incoming Email " + aboutThisEmail, module);
+            if (Debug.verboseOn()) {
+                Debug.logVerbose("Processing Incoming Email " + aboutThisEmail, module);
+            }
 
             // ignore the message when the spam status = yes
             String spamHeaderName = EntityUtilProperties.getPropertyValue("general", "mail.spam.name", "N", delegator);
@@ -702,7 +708,7 @@ public class CommunicationEventServices
                 String msgHeaderValue = wrapper.getHeader(spamHeaderName)[0];
                 if (msgHeaderValue != null && msgHeaderValue.startsWith(configHeaderValue)) {
                     Debug.logInfo("Incoming Email message ignored, was detected by external spam checker", module);
-                    return ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, 
+                    return ServiceUtil.returnSuccess(UtilProperties.getMessage(resource,
                             "PartyCommEventMessageIgnoredDetectedByExternalSpamChecker", locale));
                 }
             }
@@ -710,7 +716,7 @@ public class CommunicationEventServices
             // if no 'from' addresses specified ignore the message
             if (addressesFrom == null) {
                 Debug.logInfo("Incoming Email message ignored, had not 'from' email address", module);
-                return ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, 
+                return ServiceUtil.returnSuccess(UtilProperties.getMessage(resource,
                         "PartyCommEventMessageIgnoredNoFromAddressSpecified", locale));
             }
 
@@ -724,7 +730,7 @@ public class CommunicationEventServices
             }
             if (!commEvents.isEmpty()) {
                 Debug.logInfo("Ignoring Duplicate Email: " + aboutThisEmail, module);
-                return ServiceUtil.returnSuccess(UtilProperties.getMessage(resource, 
+                return ServiceUtil.returnSuccess(UtilProperties.getMessage(resource,
                         "PartyCommEventMessageIgnoredDuplicateMessageId", locale));
             }
 
@@ -766,7 +772,7 @@ public class CommunicationEventServices
             partyIdFrom = (String)result.get("partyId");
             contactMechIdFrom = (String)result.get("contactMechId");
 
-            Map<String, Object> commEventMap = new HashMap<String, Object>();
+            Map<String, Object> commEventMap = new HashMap<>();
             commEventMap.put("communicationEventTypeId", "AUTO_EMAIL_COMM");
             commEventMap.put("contactMechTypeId", "EMAIL_ADDRESS");
             commEventMap.put("messageId", messageId);
@@ -820,7 +826,9 @@ public class CommunicationEventServices
                 if (parentCommEvent != null) {
                     String parentCommEventId = parentCommEvent.getString("communicationEventId");
                     String orgCommEventId = parentCommEvent.getString("origCommEventId");
-                    if (orgCommEventId == null) orgCommEventId = parentCommEventId;
+                    if (orgCommEventId == null) {
+                        orgCommEventId = parentCommEventId;
+                    }
                     commEventMap.put("parentCommEventId", parentCommEventId);
                     commEventMap.put("origCommEventId", orgCommEventId);
                 }
@@ -857,7 +865,9 @@ public class CommunicationEventServices
             } else {
                 commEventMap.put("statusId", "COM_UNKNOWN_PARTY");
             }
-            if (commNote.length() > 255) commNote = commNote.substring(0,255);
+            if (commNote.length() > 255) {
+                commNote = commNote.substring(0,255);
+            }
 
             if (!("".equals(commNote))) {
                 commEventMap.put("note", commNote);
@@ -914,24 +924,24 @@ public class CommunicationEventServices
         Address[] addressesCC = wrapper.getCc();
         Address[] addressesBCC = wrapper.getBcc();
 
-        Set<String> emailAddressesFrom = new TreeSet<String>();
-        Set<String> emailAddressesTo = new TreeSet<String>();
-        Set<String> emailAddressesCC = new TreeSet<String>();
-        Set<String> emailAddressesBCC = new TreeSet<String>();
-        for (int x = 0 ; x < addressesFrom.length ; x++) {
-            emailAddressesFrom.add(((InternetAddress) addressesFrom[x]).getAddress());
+        Set<String> emailAddressesFrom = new TreeSet<>();
+        Set<String> emailAddressesTo = new TreeSet<>();
+        Set<String> emailAddressesCC = new TreeSet<>();
+        Set<String> emailAddressesBCC = new TreeSet<>();
+        for (Address element : addressesFrom) {
+            emailAddressesFrom.add(((InternetAddress) element).getAddress());
         }
-        for (int x = 0 ; x < addressesTo.length ; x++) {
-            emailAddressesTo.add(((InternetAddress) addressesTo[x]).getAddress());
+        for (Address element : addressesTo) {
+            emailAddressesTo.add(((InternetAddress) element).getAddress());
         }
         if (addressesCC != null) {
-            for (int x = 0 ; x < addressesCC.length ; x++) {
-                emailAddressesCC.add(((InternetAddress) addressesCC[x]).getAddress());
+            for (Address element : addressesCC) {
+                emailAddressesCC.add(((InternetAddress) element).getAddress());
             }
         }
         if (addressesBCC != null) {
-            for (int x = 0 ; x < addressesBCC.length ; x++) {
-                emailAddressesBCC.add(((InternetAddress) addressesBCC[x]).getAddress());
+            for (Address element : addressesBCC) {
+                emailAddressesBCC.add(((InternetAddress) element).getAddress());
             }
         }
         String fromString = StringUtil.join(UtilMisc.toList(emailAddressesFrom), ",");
@@ -939,10 +949,18 @@ public class CommunicationEventServices
         String ccString = StringUtil.join(UtilMisc.toList(emailAddressesCC), ",");
         String bccString = StringUtil.join(UtilMisc.toList(emailAddressesBCC), ",");
 
-        if (UtilValidate.isNotEmpty(fromString)) commEventMap.put("fromString", fromString);
-        if (UtilValidate.isNotEmpty(toString)) commEventMap.put("toString", toString);
-        if (UtilValidate.isNotEmpty(ccString)) commEventMap.put("ccString", ccString);
-        if (UtilValidate.isNotEmpty(bccString)) commEventMap.put("bccString", bccString);
+        if (UtilValidate.isNotEmpty(fromString)) {
+            commEventMap.put("fromString", fromString);
+        }
+        if (UtilValidate.isNotEmpty(toString)) {
+            commEventMap.put("toString", toString);
+        }
+        if (UtilValidate.isNotEmpty(ccString)) {
+            commEventMap.put("ccString", ccString);
+        }
+        if (UtilValidate.isNotEmpty(bccString)) {
+            commEventMap.put("bccString", bccString);
+        }
     }
 
     private static List<String> getCommEventAttachmentNames(final Delegator delegator, final String communicationEventId) throws GenericEntityException {
@@ -952,7 +970,7 @@ public class CommunicationEventServices
             .filterByDate()
             .queryList();
 
-        List<String> attachmentNames = new ArrayList<String>();
+        List<String> attachmentNames = new ArrayList<>();
         for (GenericValue commEventContentAssoc : commEventContentAssocList) {
             String dataResourceName = commEventContentAssoc.getString("drDataResourceName");
             attachmentNames.add(dataResourceName);
@@ -976,7 +994,7 @@ public class CommunicationEventServices
                     continue;
                 }
 
-                Map<String, Object> attachmentMap = new HashMap<String, Object>();
+                Map<String, Object> attachmentMap = new HashMap<>();
                 attachmentMap.put("communicationEventId", communicationEventId);
                 attachmentMap.put("contentTypeId", "DOCUMENT");
                 attachmentMap.put("mimeTypeId", "text/html");
@@ -1004,7 +1022,9 @@ public class CommunicationEventServices
                     attachmentMap.put("textData", text);
                 } else {
                     ByteBuffer data = wrapper.getPartByteBuffer(attachmentIdx);
-                    if (Debug.infoOn()) Debug.logInfo("Binary attachment size: " + data.limit(), module);
+                    if (Debug.infoOn()) {
+                        Debug.logInfo("Binary attachment size: " + data.limit(), module);
+                    }
                     attachmentMap.put("drDataResourceName", attFileName);
                     attachmentMap.put("imageData", data);
                     attachmentMap.put("drDataResourceTypeId", "IMAGE_OBJECT"); // TODO: why always use IMAGE
@@ -1034,9 +1054,7 @@ public class CommunicationEventServices
                     dispatcher.runSync("createCommunicationEventRole", input);
                 }
             }
-        } catch (GenericServiceException e) {
-            Debug.logError(e, module);
-        } catch (Exception e) {
+        } catch (GenericServiceException | GenericEntityException e) {
             Debug.logError(e, module);
         }
     }
@@ -1050,8 +1068,6 @@ public class CommunicationEventServices
             }
         } catch (GenericServiceException e) {
             Debug.logError(e, module);
-        } catch (Exception e) {
-            Debug.logError(e, module);
         }
     }
 
@@ -1075,7 +1091,7 @@ public class CommunicationEventServices
         }
 
         if (emailAddress != null) {
-            map = new HashMap<String, Object>();
+            map = new HashMap<>();
             map.put("address", emailAddress.getAddress());
             map.put("userLogin", userLogin);
             result = dispatcher.runSync("findPartyFromEmailAddress", map);
@@ -1090,7 +1106,7 @@ public class CommunicationEventServices
     private static List<Map<String, Object>> buildListOfPartyInfoFromEmailAddresses(Address [] addresses, GenericValue userLogin, LocalDispatcher dispatcher) throws GenericServiceException {
         InternetAddress emailAddress = null;
         Map<String, Object> result = null;
-        List<Map<String, Object>> tempResults = new LinkedList<Map<String,Object>>();
+        List<Map<String, Object>> tempResults = new LinkedList<>();
 
         if (addresses != null) {
             for (Address addr: addresses) {
@@ -1115,14 +1131,14 @@ public class CommunicationEventServices
         InternetAddress emailAddress = null;
         Map<String, Object> result = null;
         Delegator delegator = dispatcher.getDelegator();
-        List<Map<String, Object>> tempResults = new LinkedList<Map<String,Object>>();
+        List<Map<String, Object>> tempResults = new LinkedList<>();
         String caseInsensitiveEmail = EntityUtilProperties.getPropertyValue("general", "mail.address.caseInsensitive", "N", delegator);
 
         if (addresses != null) {
             for (Address addr: addresses) {
                 if (addr instanceof InternetAddress) {
                     emailAddress = (InternetAddress)addr;
-                    Map<String, String> inputFields = new HashMap<String, String>();
+                    Map<String, String> inputFields = new HashMap<>();
                     inputFields.put("infoString", emailAddress.getAddress());
                     inputFields.put("infoString_ic", caseInsensitiveEmail);
                     result = dispatcher.runSync("performFind", UtilMisc.<String, Object>toMap("entityName",
@@ -1164,8 +1180,9 @@ public class CommunicationEventServices
                 if (part2Text == null) {
                     part2Text = "";
                 }
-                if (Debug.verboseOn())
-                    if (Debug.verboseOn()) Debug.logVerbose("Part 2 Text :\n\n" + part2Text, module);
+                if (Debug.verboseOn()) {
+                    Debug.logVerbose("Part 2 Text :\n\n" + part2Text, module);
+                }
 
                 // find the "Action" element and obtain its value (looking for "failed")
                 Pattern p2 = Pattern.compile("^Action: (.*)$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
@@ -1181,8 +1198,9 @@ public class CommunicationEventServices
                     if (part3Text == null) {
                         part3Text = "";
                     }
-                    if (Debug.verboseOn())
-                        if (Debug.verboseOn()) Debug.logVerbose("Part 3 Text :\n\n" + part3Text, module);
+                    if (Debug.verboseOn()) {
+                        Debug.logVerbose("Part 3 Text :\n\n" + part3Text, module);
+                    }
 
                     // find the "Message-Id" element and obtain its value (looking for "failed")
                     Pattern p3 = Pattern.compile("^Message-Id: (.*)$", Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
@@ -1207,7 +1225,7 @@ public class CommunicationEventServices
                             GenericValue value = values.get(0);
 
                             // update the communication event status
-                            Map<String, Object> updateCtx = new HashMap<String, Object>();
+                            Map<String, Object> updateCtx = new HashMap<>();
                             updateCtx.put("communicationEventId", value.getString("communicationEventId"));
                             updateCtx.put("statusId", "COM_BOUNCED");
                             updateCtx.put("userLogin", context.get("userLogin"));
@@ -1237,7 +1255,7 @@ public class CommunicationEventServices
                                 // there should be only one; unique key
                                 GenericValue value = values.get(0);
 
-                                Map<String, Object> updateCtx = new HashMap<String, Object>();
+                                Map<String, Object> updateCtx = new HashMap<>();
                                 updateCtx.put("communicationEventId", value.getString("communicationEventId"));
                                 updateCtx.put("contactListId", value.getString("contactListId"));
                                 updateCtx.put("contactMechId", value.getString("contactMechId"));