All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jlot.mailing.generator.DeveloperNotificationMailGeneratorImpl Maven / Gradle / Ivy

There is a newer version: 1.2
Show newest version
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