Package com.opengamma.bbg.util

Source Code of com.opengamma.bbg.util.MockReferenceDataProvider

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

import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;

import java.util.Collection;
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang.StringUtils;
import org.fudgemsg.MutableFudgeMsg;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import com.opengamma.bbg.referencedata.ReferenceData;
import com.opengamma.bbg.referencedata.ReferenceDataProviderGetRequest;
import com.opengamma.bbg.referencedata.ReferenceDataProviderGetResult;
import com.opengamma.bbg.referencedata.impl.AbstractReferenceDataProvider;
import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;

/**
* Mock class.
*/
public class MockReferenceDataProvider extends AbstractReferenceDataProvider {

  private Set<String> _expectedFields = Sets.newHashSet();
  private Map<String, Multimap<String, String>> _mockDataMap = Maps.newHashMap();

  @Override
  protected ReferenceDataProviderGetResult doBulkGet(ReferenceDataProviderGetRequest request) {
    if (_expectedFields.size() > 0) {
      for (String field : _expectedFields) {
        assertTrue(request.getFields().contains(field));
      }
    }
    ReferenceDataProviderGetResult result = new ReferenceDataProviderGetResult();
    for (String identifier : request.getIdentifiers()) {
      if (_mockDataMap.containsKey(identifier)) {
        // known security
        ReferenceData refData = new ReferenceData(identifier);
        MutableFudgeMsg msg = OpenGammaFudgeContext.getInstance().newMessage();
       
        Multimap<String, String> fieldMap = _mockDataMap.get(identifier);
        if (fieldMap != null) {
          // security actually has data
          for (String field : request.getFields()) {
            Collection<String> values = fieldMap.get(field);
            assertTrue("Field not found: " + field + " in " + fieldMap.keySet(), values.size() > 0);
            assertNotNull(values);
            for (String value : values) {
              if (value != null) {
                if (value.contains("=")) {
                  MutableFudgeMsg submsg = OpenGammaFudgeContext.getInstance().newMessage();
                  submsg.add(StringUtils.substringBefore(value, "="), StringUtils.substringAfter(value, "="));
                  msg.add(field, submsg);
                } else {
                  msg.add(field, value);
                }
              }
            }
          }
        }
        refData.setFieldValues(msg);
        result.addReferenceData(refData);
       
      } else {
        // security wasn't marked as known
        fail("Security not found: " + identifier + " in " + _mockDataMap.keySet());
      }
    }
    return result;
  }

  public void addExpectedField(String field) {
    _expectedFields.add(field);
  }

  public void addResult(String securityKey, String field, String value) {
    if (field == null) {
      // security is known and normal (empty) result returned
      _mockDataMap.put(securityKey, null);
    } else {
      // security is known and normal data is stored
      Multimap<String, String> baseMap = _mockDataMap.get(securityKey);
      if (baseMap == null) {
        baseMap = ArrayListMultimap.create();
        _mockDataMap.put(securityKey, baseMap);
      }
      baseMap.put(field, value);
    }
  }

}
TOP

Related Classes of com.opengamma.bbg.util.MockReferenceDataProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.