com.opengamma.core.region.RegionUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.opengamma.core.region.RegionUtils.java

Source

/**
 * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
 *
 * Please see distribution for license.
 */
package com.opengamma.core.region;

import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang.Validate;

import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.id.ExternalId;
import com.opengamma.util.PublicAPI;

/**
 * Utilities and constants for {@code Region}.
 * <p>
 * This is a thread-safe static utility class.
 */
@PublicAPI
public class RegionUtils {

    /**
     * Restricted constructor.
     */
    protected RegionUtils() {
    }

    /**
     * Creates a set of regions from a region id.
     * This is useful in the case where the region is compound (e.g. NY+LON).
     * 
     * @param regionSource The region source, not null
     * @param regionId The region id, not null
     * @return a set of the region(s)
     */
    public static Set<Region> getRegions(RegionSource regionSource, final ExternalId regionId) {
        Validate.notNull(regionSource, "region source");
        Validate.notNull(regionId, "region id");
        if (regionId.isScheme(ExternalSchemes.FINANCIAL) && regionId.getValue().contains("+")) {
            final String[] regions = regionId.getValue().split("\\+");
            final Set<Region> resultRegions = new HashSet<Region>();
            for (final String region : regions) {
                resultRegions.add(regionSource.getHighestLevelRegion(ExternalSchemes.financialRegionId(region)));
            }
            return resultRegions;
        }
        return Collections.singleton(regionSource.getHighestLevelRegion(regionId));
    }

}