/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.datasource.handler.util; import java.util.List; import org.jdom.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.google.common.collect.Lists; import com.enonic.cms.core.country.Country; import com.enonic.cms.core.country.CountryCode; import com.enonic.cms.core.country.CountryService; import com.enonic.cms.core.country.CountryXmlCreator; import com.enonic.cms.core.portal.datasource.handler.DataSourceRequest; import com.enonic.cms.core.portal.datasource.handler.base.ParamsDataSourceHandler; @Component("ds.GetCountriesHandler") public final class GetCountriesHandler extends ParamsDataSourceHandler<GetCountriesParams> { private CountryService countryService; public GetCountriesHandler() { super( "getCountries", GetCountriesParams.class ); } @Override protected Document handle( final DataSourceRequest req, final GetCountriesParams params ) throws Exception { final List<Country> countriesList = Lists.newArrayList(); if ( params.countryCodes == null ) { countriesList.addAll( this.countryService.getCountries() ); } else { for ( final String countryCodeStr : params.countryCodes ) { final Country country = this.countryService.getCountry( new CountryCode( countryCodeStr ) ); if ( country != null ) { countriesList.add( country ); } } } final CountryXmlCreator countryXmlCreator = new CountryXmlCreator(); countryXmlCreator.setIncludeRegionsInfo( params.includeRegions ); return countryXmlCreator.createCountriesDocument( countriesList ); } @Autowired public void setCountryService( final CountryService countryService ) { this.countryService = countryService; } }