Author: hansbak
Date: Sat May 23 02:19:21 2009 New Revision: 777768 URL: http://svn.apache.org/viewvc?rev=777768&view=rev Log: do not treat incoming email message as a reply, select plain text part for incoming message improved error message Modified: ofbiz/trunk/applications/party/script/org/ofbiz/party/communication/CommunicationEventServices.xml ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java Modified: ofbiz/trunk/applications/party/script/org/ofbiz/party/communication/CommunicationEventServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/script/org/ofbiz/party/communication/CommunicationEventServices.xml?rev=777768&r1=777767&r2=777768&view=diff ============================================================================== --- ofbiz/trunk/applications/party/script/org/ofbiz/party/communication/CommunicationEventServices.xml (original) +++ ofbiz/trunk/applications/party/script/org/ofbiz/party/communication/CommunicationEventServices.xml Sat May 23 02:19:21 2009 @@ -33,19 +33,21 @@ </simple-method> <simple-method method-name="createCommunicationEvent" short-description="Create a CommunicationEvent with or w/o permission check"> - <!-- check for forward --> - <if-not-empty field="parameters.origCommEventId"> - <entity-one entity-name="CommunicationEvent" value-field="newEntity"> - <field-map field-name="communicationEventId" from-field="parameters.origCommEventId"/> - </entity-one> - <clear-field field="newEntity.communicationEventId"/> - <clear-field field="newEntity.partyIdFrom"/> - <clear-field field="newEntity.partyIdTo"/> - <set field="newEntity.subject" value="Forw: ${newEntity.subject}"/> - <else><!-- if not create empty one --> - <make-value value-field="newEntity" entity-name="CommunicationEvent"/> - </else> - </if-not-empty> + <!-- check for forward only if created by a user and not incoming email by system--> + <if-compare field="parameters.userLogin.userLoginId" value="system" operator="not-equals"> + <if-not-empty field="parameters.origCommEventId"> + <entity-one entity-name="CommunicationEvent" value-field="newEntity"> + <field-map field-name="communicationEventId" from-field="parameters.origCommEventId"/> + </entity-one> + <clear-field field="newEntity.communicationEventId"/> + <clear-field field="newEntity.partyIdFrom"/> + <clear-field field="newEntity.partyIdTo"/> + <set field="newEntity.subject" value="Forw: ${newEntity.subject}"/> + </if-not-empty> + </if-compare> + <if-empty field="newEntity"> + <make-value value-field="newEntity" entity-name="CommunicationEvent"/> + </if-empty> <set-nonpk-fields map="parameters" value-field="newEntity"/> @@ -58,25 +60,26 @@ <field-to-result field="newEntity.communicationEventId" result-name="communicationEventId"/> <!-- check for reply --> - <if-not-empty field="parameters.parentCommEventId"> - <entity-one entity-name="CommunicationEvent" value-field="parentCommEvent"> - <field-map field-name="communicationEventId" from-field="parameters.parentCommEventId"/> - </entity-one> - <entity-one entity-name="PartyNameView" value-field="partyNameView"> - <field-map field-name="partyId" from-field="parentCommEvent.partyIdFrom"/> - </entity-one> - - <if-compare-field field="parentCommEvent.partyIdFrom" operator="equals" to-field="parameters.partyIdTo"> - <set field="newEntity.partyIdTo" from-field="parentCommEvent.partyIdFrom"/> - </if-compare-field> - - <set field="newEntity.subject" value="RE: ${parentCommEvent.subject}"/> - - <set field="newEntity.content" value="${groovy: - def localContent = parentCommEvent.content; - if (!localContent) return(""); - - resultLine = "\n\n\n" + <if-compare field="parameters.userLogin.userLoginId" value="system" operator="not-equals"> + <if-not-empty field="parameters.parentCommEventId"> + <entity-one entity-name="CommunicationEvent" value-field="parentCommEvent"> + <field-map field-name="communicationEventId" from-field="parameters.parentCommEventId"/> + </entity-one> + <entity-one entity-name="PartyNameView" value-field="partyNameView"> + <field-map field-name="partyId" from-field="parentCommEvent.partyIdFrom"/> + </entity-one> + + <if-compare-field field="parentCommEvent.partyIdFrom" operator="equals" to-field="parameters.partyIdTo"> + <set field="newEntity.partyIdTo" from-field="parentCommEvent.partyIdFrom"/> + </if-compare-field> + + <set field="newEntity.subject" value="RE: ${parentCommEvent.subject}"/> + + <set field="newEntity.content" value="${groovy: + def localContent = parentCommEvent.content; + if (!localContent) return(""); + + resultLine = "\n\n\n" + (partyNameView.firstName!=null?partyNameView.firstName:"") + " " + (partyNameView.middleName!=null?partyNameView.middleName+" ":"") @@ -84,27 +87,28 @@ + (partyNameView.lastName!=null?partyNameView.lastName:"") + (partyNameView.groupName!=null?partyNameView.groupName:"") + " wrote:"; - resultLine += "\n -------------------------------------------------------------------- "; - resultLine += "\n> " + localContent.substring(0, localContent.indexOf("\n",0) == -1 ? localContent.length() : localContent.indexOf("\n",0)); - startChar = localContent.indexOf("\n",0); - while(startChar != -1 && (startChar = localContent.indexOf("\n",startChar) + 1) != 0) + resultLine += "\n -------------------------------------------------------------------- "; + resultLine += "\n> " + localContent.substring(0, localContent.indexOf("\n",0) == -1 ? localContent.length() : localContent.indexOf("\n",0)); + startChar = localContent.indexOf("\n",0); + while(startChar != -1 && (startChar = localContent.indexOf("\n",startChar) + 1) != 0) resultLine += "\n> " + localContent.substring(startChar, localContent.indexOf("\n",startChar)==-1 ? localContent.length() : localContent.indexOf("\n",startChar)); - return(resultLine); - }"/> - - <!-- set rolestatus from original email to completed --> - <entity-and list="roles" entity-name="CommunicationEventRole"> - <field-map field-name="communicationEventId" from-field="parentCommEvent.communicationEventId"/> - <field-map field-name="partyId" from-field="parentCommEvent.partyIdTo"/> - </entity-and> - <if-not-empty field="roles"> - <first-from-list list="roles" entry="role"/> - <set-service-fields service-name="setCommunicationEventRoleStatus" map="role" to-map="newStat"/> - <set field="newStat.statusId" value="COM_ROLE_COMPLETED"/> - <call-service service-name="setCommunicationEventRoleStatus" in-map-name="newStat"/> + return(resultLine); + }"/> + + <!-- set rolestatus from original email to completed --> + <entity-and list="roles" entity-name="CommunicationEventRole"> + <field-map field-name="communicationEventId" from-field="parentCommEvent.communicationEventId"/> + <field-map field-name="partyId" from-field="parentCommEvent.partyIdTo"/> + </entity-and> + <if-not-empty field="roles"> + <first-from-list list="roles" entry="role"/> + <set-service-fields service-name="setCommunicationEventRoleStatus" map="role" to-map="newStat"/> + <set field="newStat.statusId" value="COM_ROLE_COMPLETED"/> + <call-service service-name="setCommunicationEventRoleStatus" in-map-name="newStat"/> + </if-not-empty> </if-not-empty> - </if-not-empty> - + </if-compare> + <if-empty field="parameters.statusId"> <set value="COM_ENTERED" field="parameters.statusId"/> </if-empty> @@ -191,6 +195,7 @@ <simple-method method-name="updateCommunicationEvent" short-description="Update a CommunicationEvent"> <entity-one entity-name="CommunicationEvent" value-field="event"/> + <log level="always" message="====Udating communication event: ${communicationEvent.communicationEventId} with subject: ${communicationEvent.subject}"></log> <if-compare-field to-field="parameters.statusId" operator="not-equals" field="event.statusId"> <call-simple-method method-name="setCommunicationEventStatus"/> </if-compare-field> Modified: ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java?rev=777768&r1=777767&r2=777768&view=diff ============================================================================== --- ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java (original) +++ ofbiz/trunk/applications/party/src/org/ofbiz/party/communication/CommunicationEventServices.java Sat May 23 02:19:21 2009 @@ -36,6 +36,7 @@ import java.util.regex.Pattern; import javax.mail.Address; +import javax.mail.BodyPart; import javax.mail.MessagingException; import javax.mail.internet.InternetAddress; import javax.servlet.http.HttpServletRequest; @@ -634,12 +635,9 @@ } if (!commEvents.isEmpty()) { Debug.logInfo("Ignoring Duplicate Email: " + aboutThisEmail, module); - return ServiceUtil.returnSuccess(" Message Ignored: deplicate messageId"); - } else { - Debug.logInfo("Persisting New Email: " + aboutThisEmail, module); + return ServiceUtil.returnSuccess(" Message Ignored: duplicate messageId"); } - // get the related partId's List<Map<String, Object>> toParties = buildListOfPartyInfoFromEmailAddresses(addressesTo, userLogin, dispatcher); List<Map<String, Object>> ccParties = buildListOfPartyInfoFromEmailAddresses(addressesCC, userLogin, dispatcher); @@ -703,7 +701,21 @@ if (messageBodyContentType.indexOf(";") > -1) { messageBodyContentType = messageBodyContentType.substring(0, messageBodyContentType.indexOf(";")); } - String messageBody = wrapper.getMessageBody(); + + // select the plain text bodypart + String messageBody = null; + if (wrapper.getMainPartCount() > 1) { + for (int ind=0; ind < wrapper.getMainPartCount(); ind++) { + BodyPart p = wrapper.getPart(ind + ""); + if (p.getContentType().toLowerCase().indexOf("text/plain") > -1) { + messageBody = (String) p.getContent(); + } + } + } + + if (messageBody == null ) { + messageBody = wrapper.getMessageBody(); + } commEventMap.put("content", messageBody); commEventMap.put("contentMimeTypeId", messageBodyContentType.toLowerCase()); @@ -777,6 +789,7 @@ result = dispatcher.runSync("createCommunicationEvent", commEventMap); communicationEventId = (String)result.get("communicationEventId"); + Debug.logInfo("Persisting New Email: " + aboutThisEmail + " into CommunicationEventId: " + communicationEventId, module); // handle the attachments createAttachmentContent(dispatcher, wrapper, communicationEventId, userLogin); |
Free forum by Nabble | Edit this page |