/** * Most of the code in the Qalingo project is copyrighted Hoteia and licensed * under the Apache License Version 2.0 (release version 0.8.0) * http://www.apache.org/licenses/LICENSE-2.0 * * Copyright (c) Hoteia, 2012-2014 * http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com * */ package org.hoteia.qalingo.core.service.pojo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import org.dozer.Mapper; import org.hoteia.qalingo.core.pojo.ReferentialDataPojo; import org.hoteia.qalingo.core.service.ReferentialDataService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service("referentialDataPojoService") @Transactional(readOnly = true) public class ReferentialDataPojoService { private final Logger logger = LoggerFactory.getLogger(getClass()); @Autowired protected Mapper dozerBeanMapper; @Autowired protected ReferentialDataService referentialDataService; public ReferentialDataPojo getTitleByLocale(final String titleCode, final Locale locale) { final String value = referentialDataService.getTitleByLocale(titleCode, locale); logger.debug("Found {} title value", value); return buildReferentialDataPojo(locale.toString(), titleCode, value); } public List<ReferentialDataPojo> getTitlesByLocale(final Locale locale) { Map<String, String> values = referentialDataService.getTitlesByLocale(locale); logger.debug("Found {} title values", values.size()); return buildReferentialDataPojos(locale.toString(), values); } public ReferentialDataPojo getCountryByLocale(final String countryCode, final Locale locale) { final String value = referentialDataService.getCountryByLocale(countryCode, locale); logger.debug("Found {} country value", value); return buildReferentialDataPojo(locale.toString(), countryCode, value); } public List<ReferentialDataPojo> getCountriesByLocale(final Locale locale) { final Map<String, String> values = referentialDataService.getCountriesByLocale(locale); logger.debug("Found {} countries value", values.size()); return buildReferentialDataPojos(locale.toString(), values); } public ReferentialDataPojo getStateByLocale(final String stateCode, final Locale locale) { final String value = referentialDataService.getStateByLocale(stateCode, locale); logger.debug("Found {} state value", value); return buildReferentialDataPojo(locale.toString(), stateCode, value); } public List<ReferentialDataPojo> getStatesByLocale(final Locale locale) { final Map<String, String> values = referentialDataService.getStatesByLocale(locale); logger.debug("Found {} state values", values.size()); return buildReferentialDataPojos(locale.toString(), values); } public ReferentialDataPojo getAreaByLocale(final String areaCode, final Locale locale) { final String value = referentialDataService.getAreaByLocale(areaCode, locale); logger.debug("Found {} area value ", value); return buildReferentialDataPojo(locale.toString(), areaCode, value); } public List<ReferentialDataPojo> getAreasByLocale(final Locale locale) { final Map<String, String> values = referentialDataService.getAreasByLocale(locale); logger.debug("Found {} area values", values.size()); return buildReferentialDataPojos(locale.toString(), values); } protected List<ReferentialDataPojo> buildReferentialDataPojos(String locale, Map<String, String> values){ List<ReferentialDataPojo> referentialDataPojos = new ArrayList<ReferentialDataPojo>(); for (Iterator<String> iterator = values.keySet().iterator(); iterator.hasNext();) { String code = (String) iterator.next(); String value = (String) values.get(code); referentialDataPojos.add(buildReferentialDataPojo(locale, code, value)); } return referentialDataPojos; } protected ReferentialDataPojo buildReferentialDataPojo(String locale, String code, String value){ ReferentialDataPojo referentialDataPojo = new ReferentialDataPojo(code, locale, value); return referentialDataPojo; } }