/* * CREDIT SUISSE IS WILLING TO LICENSE THIS SPECIFICATION TO YOU ONLY UPON THE * CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS AGREEMENT. * PLEASE READ THE TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY. BY * DOWNLOADING THIS SPECIFICATION, YOU ACCEPT THE TERMS AND CONDITIONS OF THE * AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY IT, SELECT THE "DECLINE" * BUTTON AT THE BOTTOM OF THIS PAGE. Specification: JSR-354 Money and Currency * API ("Specification") Copyright (c) 2012-2013, Credit Suisse All rights * reserved. */ package org.javamoney.regions.internal.data; import java.util.Locale; import java.util.Map; import javax.inject.Singleton; import org.javamoney.regions.Region; import org.javamoney.regions.RegionTreeNode; import org.javamoney.regions.RegionType; import org.javamoney.regions.spi.BuildableRegionNode; import org.javamoney.regions.spi.RegionProviderSpi; import org.javamoney.regions.spi.RegionTreeProviderSpi; import org.javamoney.regions.spi.BuildableRegionNode.Builder; /** * Region Tree provider that provides all ISO countries, defined by * {@link java.util.Locale#getISOCountries()} using their 2-letter ISO country code under * {@code ISO}. * * @author Anatole Tresch */ @Singleton public class ISORegionTreeProvider implements RegionTreeProviderSpi { private BuildableRegionNode regionTree; // ISO/... @Override public String getTreeId() { return "ISO"; } @Override public void init(Map<Class, RegionProviderSpi> providers) { Builder treeBuilder = new BuildableRegionNode.Builder(new SimpleRegion( "ISO")); ISORegionProvider regionProvider = (ISORegionProvider) providers .get(ISORegionProvider.class); for (String country : Locale.getISOCountries()) { Region region = regionProvider.getRegion(RegionType.of("ISO"), country); Builder nodeBuilder = new BuildableRegionNode.Builder(region); treeBuilder.addChildRegions(nodeBuilder.build()); } regionTree = treeBuilder.build(); } @Override public RegionTreeNode getRegionTree() { return regionTree; } }