/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.mail; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import com.enonic.cms.core.content.ContentEntity; import com.enonic.cms.core.content.ContentKey; import com.enonic.cms.core.content.ContentService; import com.enonic.cms.core.content.query.ContentByContentQuery; import com.enonic.cms.core.content.resultset.ContentResultSet; import com.enonic.cms.core.security.user.UserEntity; public class ApproveAndRejectMailTemplate extends AbstractMailTemplate { @Autowired private ContentService contentService; private String originalBody; private ContentKey contentKey; private UserEntity user; private ContentEntity content; private boolean reject; public ApproveAndRejectMailTemplate( String originalBody, ContentKey contentKey, UserEntity user ) { this.originalBody = originalBody; this.contentKey = contentKey; this.user = user; content = getContent( contentKey, user ); } private ContentEntity getContent( final ContentKey contentKey, final UserEntity user ) { List<ContentKey> keyList = new ArrayList<ContentKey>(); keyList.add( contentKey ); ContentByContentQuery contentByContentQuery = new ContentByContentQuery(); contentByContentQuery.setUser( user ); contentByContentQuery.setContentKeyFilter( keyList ); contentByContentQuery.setCount( keyList.size() ); ContentResultSet resultSet = contentService.queryContent( contentByContentQuery ); if ( resultSet.getLength() < 1 ) { throw new RuntimeException( "Content does not is exist" ); } if ( resultSet.getLength() > 1 ) { throw new RuntimeException( "getContent returned multiple contents for single content key" ); } return resultSet.getContent( 0 ); } @Override public String getBody() { String contentPath = content.getPathAsString(); String body = ""; if ( originalBody != null ) { body = originalBody; } if ( contentPath != null ) { String infoText = getTranslation( "%approveRejectContentMailText%", getLanguageCode() ); if ( infoText != null ) { body = body + "\n\n" + infoText + ":\n" + contentPath; } } String adminUrl = getAdminUrl( contentKey ); if ( adminUrl != null ) { body = body + "\n\n" + adminUrl; } return body; } @Override public String getSubject() { return reject ? createRejectSubject() : createApprovalSubject(); } private String createRejectSubject() { return getTranslation( "%contentRejectedSubject%", getLanguageCode() ) + ": " + content.getMainVersion().getTitle(); } private String createApprovalSubject() { return getTranslation( "%contentWaitingForApprovalSubject%", getLanguageCode() ) + ": " + content.getMainVersion().getTitle(); } private String getLanguageCode() { return content.getLanguage().getCode(); } public boolean isReject() { return reject; } public void setReject( boolean reject ) { this.reject = reject; } }