Info |
---|
Help is available by sending an email to csf-support@mit.edu |
Tip |
---|
Need to know the configurable properties for csf-email? Go to The project .properties file properties for more information. |
Panel | |
---|---|
Quick Links to:
|
Panel |
---|
1. IntroductionThe CSF Email Service is a module in CSF to handle various functions related to sending emails to a single or group of recipients. The implementation will include all the methods in the existing EmailServiceImpl in CSF common-legacy. New methods are added |
Panel | ||||||
---|---|---|---|---|---|---|
2. Dependencies2.1 CSF baseWe will utilize CSF base module to
2.2 CSF testWe will utilize CSF test module to facilitate the unit tests created for the email module 2.3 CSF ormWe will utilize CSF orm module to facilitate the IO operations of its dao. |
Panel | |||
---|---|---|---|
3. Object Model3.1 Class DiagramThe following domain classes are created to represent (1) EmailModel is A new domain class EmailModel will be created to hold all the fields in an email message. The following diagram represents the domain class EmailModel. (2) EmailEvent is a persistent object created to represent the persist object for each email that is queued or sent. (3) EmailAttachment is a persistent object created to save the attachment associated with email events. The following diagram represents the domain class EmailEvent and EmailAttachment and their relationship: 3.2 Class Description.indent {indent:2} h5. *3.2.1EmailModel*indent | | 3 | 3 |
This is the domain class that represents an Email Message object. It contains the following fields:
# emailFrom – the email address of the sender
# emailSubject – the subject of the email
# emailTos – the list of email addresses of those who will be sent a copy of the email
# emailCC – the list of email addresses of those will get a cc copy of the email.
# emailBcc – the list of email addresses of those will get a bcc copy of the email.
# emailReportRecipient – the list of email addresses of those who will get a copy of the summary report.
# emailText – the content of the email.
|
Panel | |||||||
---|---|---|---|---|---|---|---|
4. Service Modules
4.1 Class Diagram4.2 Class Descriptions.4.2.1 EmailService InterfaceThis is the interface that defines the methods available for the other web applications to utilize when they are required
4.2.3 EmailService ImplementationThis is the implementation class for the EmailService. 4.2.3.1 sendBulkEmailThis method obtains an EmailModelDomain Object. It will then process the data and call the newEmail method to save the email and
4.2.3.2 sendBulkEmailWithTemplateThis method obtains an EmailModel Object, a velocity template name and a map that contains the values for the variables in the template. 4.2.3.3 sendBulkEmailWithCountsThis method obtains an EmailModel Object. It will call the sendBulkEmail method to create and save the email message and the summary 4.2.3.4 generateEmailPreviewWithTemplateThis method obtains an EmailModel Object, a string to specify the type of preview, a velocity template name, and a Map that contains the values 4.2.3.5 generateSummaryReportPreviewThis private method adds the objects/attributes necessary to create a preview of the summary report. The objects to be added are as follows:
4.2.3.6 sendEmailWithAttachmentsThis method accepts an EmailModel object and a list of attachments. It will then call newEmail method to create and save the message(s) in database. 4.2.3.7 sendEmailWithTemplateAndAttachmentsThis method accepts an EmailModel object, a velocity template name, a map of replaced values, and a list of File objects (attachments). It will then 4.2.3.8 sendEmailWithAttachmentsFromDataSource This method accepts an EmailModel object and a list of DataSource objects(attachments) and a boolean to signal the system to use the from 4.2.3.9 newEmailThese sets of methods are the same public methods available in the EmailService in the CSF common-legacy module. 4.2.3.10 sendReportRecipientEmail4.2.3.11 createReportRecipientContentThis method is a public method migrated over from the EmailServiceImpl in common-legacy module. 4.2.3.12 saveMessageThis is a private method that are is called within the EmailServiceImpl to save the email message (just text 4.2.3.13 saveMessageWithAttachmentAsDataSource This is a private method that is called within the EmailServiceImpl to save the email message with a list of 4.2.3.14 updateDataToEmailEventThis is a private method that are is called within the EmailServiceImpl to update the data to the EmailEvent table. 4.2.3.15 updateApplicationConfigurationParametersToEmailEventThis is a protected method that are is called within the EmailServiceImpl to update the data to the EmailEvent object 4.2.3.16 updateMessageContentThis is a private method that are is called within the EmailServiceImpl by various prepare method to update the 4.2.3.17 createMimeMessagePreparatorForEmailWithCcBccAttachmentsThis is a private method that are is called within the EmailServiceImpl to create a MimeMessage preparator instance 4.2.3.18 createMimeMessagePreparatorForEmailThis is a private method that are is called within the EmailServiceImpl to create a MimeMessage preparator instance 4.2.3.19 prepareThe 4 prepare methods are static public methods that are available to create the MimeMessage object for each email 4.2.3.20 batchSendThis method is a public method migrated over from the EmailServiceImpl in common-legacy module. 4.2.3.21 sendMessageThis is a private method that is called within the EmailServiceImpl to send the email message via the email server. 4.2.3.22 getMessageQueueThis method is a public method migrated over from the EmailServiceImpl in common-legacy module. 4.2.3.23 getMessageQueueStatisticsThis method is a public method that will retrieve statistics from the database based on criteria including from date, 4.2.3.24 validateEmailAddressThis method takes an input of email address in String and validate if the email address is valid. If the email address is valid, it will return
4.2.3.25 deleteThis method deletes records from the email event and email attachment tables, based on a configurable parameter: email.in.system.days, 4.2.3.26 getTemplatePathThis method returns the path where the velocity template locates. 4.2.3.27 getFileSeparatorThis method takes returns the file separator string for the system EmailService is running on. 4.2.3.28 isTomcatServerThis method checks if the system running the EmailService is a tomcat server. It will return a Boolean. 4.2.3.29 isErrorInEmailMetaDataThis method takes will verify if the pass in parameter is in the correct format. 4.2.3.30 getMimeTypeThis method returns the MimeType of the file 4.2.3.31 handleExceptionThis is a private method that prints out the exception message and stack trace to log. 4.2.3.32 nonNullizeArrayAn utility method to replace the null with an empty array if a method passed a null String array as a Cc or Bcc list | |||||||
Panel | |||||||
4. Service Modulesindent | | 1 | 1 | ||||
h4. *4.1 Class Diagram*
| |||||||
indent | 2 | 2 | |||||
!worddav2b7be35577f59c56701a08c35855344b.png|height=857,width=606!
| |||||||
indent | 1 | 1 | |||||
h4. *4.2 Class Descriptions.*
| |||||||
indent | 2 | 2 | |||||
h5. *4.2.1 EmailCentralService Interface*
| |||||||
indent | 3 | 3 | |||||
This is the interface that defines the methods available for the other web applications to utilize when they are required
to send out emails to a single or a list of recipients. The service includes the following methods:
| |||||||
indent | 4 | 4 | |||||
{color:#000091}public{color} {color:#910091}void{color} sendBulkEmail(EmailModel emailModel)
{color:#000091}public{color} {color:#910091}void{color} sendBulkEmailWithTemplate(EmailModel emailModel, String velocityTemplate, Map context)
{color:#000091}public{color} {color:#910091}Map<String, Integer>{color} sendBulkEmailWithCounts(EmailModel emailModel)
{color:#000091}public{color} {color:#910091}Map<String, Object>{color} generateEmailPreviewWithTemplate(EmailModel emailModel, String type, String velocityTemplate, Map context)
public {color:#910091}Map<String, Object>{color} generateSummaryReportPreview(EmailModel emailModel)
{color:#000091}public{color} {color:#910091}void{color} newEmail(String velocityTemplate, Map context, String to, String from, String subject, boolean html)
{color:#000091}public{color} {color:#910091}void{color} newEmail(String velocityTemplate, Map context, String\[\] tos, String from, String subject, boolean html)
{color:#000091}public{color} {color:#910091}void{color} newEmail(String velocityTemplate, Map context, String to, String subject, boolean html)
{color:#000091}public{color} {color:#910091}void{color} newEmail(String velocityTemplate, Map context, String\[\] tos, String subject, boolean html)
{color:#000091}public{color} {color:#910091}void{color} newEmail(String body, String to, String subject, boolean html)
{color:#000091}public{color} {color:#910091}void{color} newEmail(String from, String\[\] to, String subject, String body, String\[\] cc, String\[\] bcc, String\[\] rr)
{color:#000091}public{color} {color:#910091}List{color} getMessageQueue()
public {color:#910091}void{color} batchSend()
public {color:#910091}boolean{color} validateEmailAddress(String emailAddress)
| |||||||
indent | 3 | 3 | |||||
h5. *4.2.3 EmailCentralService Implementation*
| |||||||
indent | 4 | 4 | |||||
This is the implementation class for the EmailCentralService. It contains an EmailService object (in csf common-legacy module) to
perform its tasks.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.1 sendBulkEmail*
{indent:5}
This method obtains an EmailModelDomain Object. It will then process the data and call the newEmail method to send the email and
the summary report to the intended recipients. The call to the newEmail method should be configured with the following parameters:
\\
newEmail(String from, String\[\] to, String subject, String body, String\[\] cc, String\[\] bcc, String\[\] rr);
The following attributes in the EmailModel Object will affect the generation of email:
# a list of email addresses of the recipients specified in the "To" field <required>
# a list of email addresses of the recipients specified in the "cc" field <optional>
# a list of email addresses of the recipients specified in the "Bcc" field <optional>
# a list of email addresses of the recipients speicified in the "Report Recipient" field <optional>
# email subject<optional>
# email text <required>
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.2 sendBulkEmailWithTemplate*
| |||||||
indent | 5 | 5 | |||||
This method obtains an EmailModel Object, a velocity template name and a map that contains the values for the variables in the template.
It will use the velocity template and the map to generate the text for the email. Then, it will call the sendBulkEmail method to send
the email message and the summary report to intended recipients.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.3 sendBulkEmailWithCounts*
| |||||||
indent | 5 | 5 | |||||
This method obtains an EmailModel Object. It will call the sendBulkEmail method to send the email message and the summary report to intended
recipients. Then, it will call the BatchSend to send out the email and return the counts of successful and failed delivery.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.4 generateEmailPreviewWithTemplate*
| |||||||
indent | 5 | 5 | |||||
This method obtains an EmailModel Object, a string to specify the type of preview, a velocity template name, and a Map that contains the values
for the variables within the velocity template. It will use the velocity template and the map to generate the text for the email. Then, it will
updated the email test to the email model object and put the updated object into the returned Map. If a summary report preview is required, it
will call the generateSummaryReportPreview method to add the attributes necessary to generate the summary report preview to the returned map.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.5 generateSummaryReportPreview*
| |||||||
indent | 5 | 5 | |||||
This private method adds the objects/attributes necessary to create a preview of the summary report. The objects to be added are as follows:
# A String that contains the content of the summary report
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.6 newEmail*
| |||||||
indent | 5 | 5 | |||||
These sets of methods are the same public methods available in the EmailService in the CSF common-legacy module.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.7 prepare*
| |||||||
indent | 5 | 5 | |||||
These 3 methods are static public methods available in the EmailService in the CSF common-legacy module.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.8 getMessageQueue*
| |||||||
indent | 5 | 5 | |||||
This method is a public method migrated over from the EmailServiceImpl in common-legacy module.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.9 batchSend*
| |||||||
indent | 5 | 5 | |||||
This method is a public method migrated over from the EmailServiceImpl in common-legacy module.
| |||||||
indent | 4 | 4 | |||||
h6. 4.2.3.10 createReportRecipientContent*
| |||||||
indent | 5 | 5 | |||||
This method is a public method migrated over from the EmailServiceImpl in common-legacy module.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.11 createMessage*
| |||||||
indent | 5 | 5 | |||||
This method is a public method migrated over from the EmailServiceImpl in common-legacy module.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.12 sendMessage*
| |||||||
indent | 5 | 5 | |||||
These methods are public methods that are migrated over from the EmailServiceImpl in common-legacy module.
| |||||||
indent | 4 | 4 | |||||
h6. *4.2.3.13 validateEmailAddress*
| |||||||
indent | 5 | 5 | This method takes an input of email address in String and validate if the email address is valid. If the email address is valid, it will return true. If not, it will return false. The input email address is validated according to the following conditions: # The system will create a new InternetAddress object using the input email address and then invoke the validate method of the InternetAddress object to verify it is a real email address