
org.jlot.mailing.generator.DeveloperNotificationMailGeneratorImpl Maven / Gradle / Ivy
package org.jlot.mailing.generator;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.inject.Inject;
import org.apache.commons.lang.StringUtils;
import org.jlot.core.dto.LocalizationDTO;
import org.jlot.core.dto.ProjectDTO;
import org.jlot.core.dto.RatioCollection;
import org.jlot.core.dto.UserDTO;
import org.jlot.core.dto.VersionDTO;
import org.jlot.core.service.api.LocalizationPermissionService;
import org.jlot.core.service.api.TranslationRatioService;
import org.jlot.mailing.domain.Mail;
import org.jlot.mailing.domain.MailImpl;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.stereotype.Component;
@Component
public class DeveloperNotificationMailGeneratorImpl implements DeveloperNotificationMailGenerator
{
@Inject
private TranslationRatioService translationRatioService;
@Inject
private MessageSourceAccessor messageSourceAccessor;
@Inject
private LocalizationPermissionService localizationPermissionService;
private static final String FROM = "mail.developerNotification.from";
private static final String TEXT = "mail.developerNotification.text";
private static final String SUBJECT = "mail.developerNotification.subject";
@Override
public Mail generate ( UserDTO userDTO, ProjectDTO projectDTO, VersionDTO versionDTO, List listChangedLocalizations )
{
String subject = getSubject(projectDTO);
String text = getText(userDTO, projectDTO, versionDTO, listChangedLocalizations);
String email = getEmail(userDTO);
String from = messageSourceAccessor.getMessage(FROM);
return new MailImpl(email, from, subject, text);
}
private String getSubject ( ProjectDTO projectDTO )
{
Object[] args = { projectDTO.getName() };
String subject = messageSourceAccessor.getMessage(SUBJECT, args);
return subject;
}
private String getText ( UserDTO userDTO, ProjectDTO projectDTO, VersionDTO versionDTO, List listChangedLocalizations )
{
Map ratioCollectionMap = translationRatioService.getRatioCollectionsByLocaleMap(projectDTO.getName(), versionDTO.getName());
String ratioLocaleList = "";
List listLocalizationDTOs = localizationPermissionService.getProjectLocalizationsFromUser(projectDTO.getName(), userDTO.getId());
for (LocalizationDTO localizationDTO : listLocalizationDTOs)
{
Locale locale = localizationDTO.getLocale();
String countryString = locale.getLanguage();
ratioLocaleList += ( countryString + " | " + padString(ratioCollectionMap.get(locale).getTranslateRatio().toString(), 4, " ") + " | "
+ padString(ratioCollectionMap.get(locale).getReviewRatio().toString(), 4, " ") + " | " + getDate(localizationDTO.getLastChangesDate())
+ checkLocaleChanged(localizationDTO, listChangedLocalizations) + " \r\n" );
}
Object[] args = { userDTO.getName(), projectDTO.getName(), ratioLocaleList };
return messageSourceAccessor.getMessage(TEXT, args);
}
private String padString ( String string, int padSize, String padChar )
{
String paddedRatio = StringUtils.leftPad(string, padSize, padChar);
return paddedRatio;
}
private String checkLocaleChanged ( LocalizationDTO localizationDTO, List listChangedLocalizations )
{
if (listChangedLocalizations.contains(localizationDTO))
{
return " *";
}
return "";
}
private String getDate ( Date date )
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(date);
}
private String getEmail ( UserDTO userDTO )
{
return userDTO.getEmailAddress();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy