/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content.mail;
import java.io.IOException;
import java.util.Date;
import javax.mail.MessagingException;
import org.springframework.util.Assert;
import com.enonic.cms.core.content.ContentEntity;
import com.enonic.cms.core.mail.SendMailService;
import com.enonic.cms.core.security.user.UserEntity;
public class AssignmentMailSender
{
public SendMailService sendMailService;
private UserEntity updater;
private String assignmentDescription;
private Date assignmentDueDate;
private ContentEntity assignedContent;
private UserEntity originalAssignee;
private UserEntity originalAssigner;
private UserEntity newAssignee;
public AssignmentMailSender( SendMailService sendMailService )
{
this.sendMailService = sendMailService;
}
public void sendAssignmentMails()
throws IOException, MessagingException
{
verify();
AssignedContentMailTemplate assignedMail = createAssignedContentMailTemplate();
if ( assignedMail != null )
{
sendMailService.sendMail( assignedMail );
}
AssignmentTakenOverMailTemplate assignmentTakenOverMail = createAssignmentHasBeenTakenOverMailTemplate();
if ( assignmentTakenOverMail != null )
{
sendMailService.sendMail( assignmentTakenOverMail );
}
}
protected AssignedContentMailTemplate createAssignedContentMailTemplate()
{
if ( !doCreateAssignedContentMail() )
{
return null;
}
AssignedContentMailTemplate assignedContentMailTemplate =
new AssignedContentMailTemplate( assignedContent, assignedContent.getAssignedVersion() );
assignedContentMailTemplate.addRecipient( newAssignee );
assignedContentMailTemplate.setAssignmentDescription( assignmentDescription );
assignedContentMailTemplate.setAssigner( updater );
assignedContentMailTemplate.setAssignmentDueDate( assignmentDueDate );
return assignedContentMailTemplate;
}
protected AssignmentTakenOverMailTemplate createAssignmentHasBeenTakenOverMailTemplate()
{
if ( !doCreateAssignmentHasBeenTakenOverMail() )
{
return null;
}
AssignmentTakenOverMailTemplate assignmentTakeOverMailTemplate =
new AssignmentTakenOverMailTemplate( assignedContent, assignedContent.getAssignedVersion() );
assignmentTakeOverMailTemplate.setAssigner( updater );
assignmentTakeOverMailTemplate.setAssignmentDueDate( assignmentDueDate );
assignmentTakeOverMailTemplate.setAssignmentDescription( assignmentDescription );
assignmentTakeOverMailTemplate.addRecipient( originalAssignee );
if ( !originalAssignee.equals( originalAssigner ) )
{
assignmentTakeOverMailTemplate.addRecipient( originalAssigner );
}
return assignmentTakeOverMailTemplate;
}
private boolean doCreateAssignedContentMail()
{
if ( updater.equals( newAssignee ) )
{
return false;
}
return true;
}
private boolean doCreateAssignmentHasBeenTakenOverMail()
{
boolean contentHasBeenReassigned = originalAssignee != null;
if ( contentHasBeenReassigned && updater.equals( newAssignee ) )
{
return true;
}
return false;
}
public void verify()
{
Assert.isTrue( updater != null );
Assert.isTrue( sendMailService != null );
Assert.isTrue( assignedContent != null );
}
public void setUpdater( UserEntity updater )
{
this.updater = updater;
}
public void setAssignmentDescription( String assignmentDescription )
{
this.assignmentDescription = assignmentDescription;
}
public Date getAssignmentDueDate()
{
return assignmentDueDate;
}
public void setAssignmentDueDate( Date assignmentDueDate )
{
this.assignmentDueDate = assignmentDueDate;
}
public void setAssignedContent( ContentEntity assignedContent )
{
this.assignedContent = assignedContent;
}
public void setOriginalAssignee( UserEntity originalAssignee )
{
this.originalAssignee = originalAssignee;
}
public void setOriginalAssigner( UserEntity originalAssigner )
{
this.originalAssigner = originalAssigner;
}
public void setNewAssignee( UserEntity newAssignee )
{
this.newAssignee = newAssignee;
}
}