package fr.mch.mdo.restaurant.services.business.managers.assembler;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import fr.mch.mdo.logs.ILogger;
import fr.mch.mdo.restaurant.beans.IMdoBean;
import fr.mch.mdo.restaurant.beans.IMdoDaoBean;
import fr.mch.mdo.restaurant.beans.IMdoDtoBean;
import fr.mch.mdo.restaurant.dao.beans.Locale;
import fr.mch.mdo.restaurant.dto.beans.LocaleDto;
import fr.mch.mdo.restaurant.dto.beans.MdoUserContext;
import fr.mch.mdo.restaurant.services.logs.LoggerServiceImpl;
import fr.mch.mdo.utils.ILocalesAssembler;
import fr.mch.mdo.utils.IManagerAssembler;
public class DefaultLocalesAssembler extends AbstractAssembler implements ILocalesAssembler
{
private ILogger logger;
private static class LazyHolder {
private static IManagerAssembler instance = new DefaultLocalesAssembler(LoggerServiceImpl.getInstance().getLogger(DefaultLocalesAssembler.class.getName()));
}
private DefaultLocalesAssembler(ILogger logger) {
this.setLogger(logger);
}
public static IManagerAssembler getInstance() {
return LazyHolder.instance;
}
public DefaultLocalesAssembler() {
}
private void marshal(Collection<IMdoDtoBean> collections, Collection<? extends IMdoBean> collection, String defaultLanguageCode) {
if (collection != null) {
for (IMdoBean iMdoBean : collection) {
collections.add(marshal((IMdoDaoBean) iMdoBean, defaultLanguageCode));
}
}
}
@Override
public List<IMdoDtoBean> marshal(List<? extends IMdoBean> list, String defaultLanguageCode) {
List<IMdoDtoBean> result = new ArrayList<IMdoDtoBean>();
this.marshal(result, list, defaultLanguageCode);
return result;
}
@Override
public IMdoDtoBean marshal(IMdoDaoBean daoBean, String defaultLanguageCode) {
LocaleDto dto = null;
if (daoBean != null) {
Locale bean = (Locale) daoBean;
dto = new LocaleDto();
dto.setId(bean.getId());
dto.setLanguageCode(bean.getLanguage());
if (defaultLanguageCode != null
&& bean.getLanguage() != null) {
java.util.Locale currentUserLocale = new java.util.Locale(defaultLanguageCode);
java.util.Locale currentLocale = new java.util.Locale(bean.getLanguage());
String displayLanguage = currentLocale.getDisplayLanguage(currentUserLocale);
dto.setDisplayLanguage(displayLanguage);
} else {
logger.warn("message.error.generic.field.null", new Object[] { MdoUserContext.class });
}
}
return dto;
}
@Override
public IMdoDaoBean unmarshal(IMdoDtoBean dtoBean, IMdoDaoBean... parents) {
if (dtoBean == null) {
return null;
}
Locale bean = new Locale();
LocaleDto dto = (LocaleDto) dtoBean;
bean.setId(dto.getId());
bean.setLanguage(dto.getLanguageCode());
return bean;
}
@Override
public ILogger getLogger() {
return logger;
}
@Override
public void setLogger(ILogger logger) {
this.logger = logger;
}
@Override
public IMdoDtoBean marshal(IMdoDaoBean daoBean) {
return this.marshal(daoBean, null);
}
}