Package com.opengamma.integration.tool

Source Code of com.opengamma.integration.tool.SecurityFieldMappingTemplateGenerator

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

import java.io.FileWriter;

import org.joda.beans.MetaProperty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import au.com.bytecode.opencsv.CSVWriter;

import com.opengamma.component.tool.AbstractTool;
import com.opengamma.financial.tool.ToolContext;
import com.opengamma.master.security.ManageableSecurity;
import com.opengamma.master.security.SecurityMaster;
import com.opengamma.master.security.SecurityMetaDataRequest;
import com.opengamma.master.security.SecurityMetaDataResult;
import com.opengamma.master.security.SecuritySearchRequest;
import com.opengamma.master.security.SecuritySearchResult;
import com.opengamma.scripts.Scriptable;
import com.opengamma.util.paging.PagingRequest;

/**
* Tool to generate a template for doing field mapping tasks
*/
@Scriptable
public class SecurityFieldMappingTemplateGenerator extends AbstractTool<ToolContext> {
  private static final Logger s_logger = LoggerFactory.getLogger(SecurityFieldMappingTemplateGenerator.class);
  @Override
  protected void doRun() throws Exception {
    CSVWriter csvWriter = new CSVWriter(new FileWriter(getCommandLine().getArgs()[0]));
    SecurityMaster securityMaster = getToolContext().getSecurityMaster();
    SecurityMetaDataRequest metaRequest = new SecurityMetaDataRequest();
    SecurityMetaDataResult metaData = securityMaster.metaData(metaRequest);
    for (String securityType : metaData.getSecurityTypes()) {
      s_logger.info("Processing security type " + securityType);
      SecuritySearchRequest searchRequest = new SecuritySearchRequest();
      searchRequest.setName("*");
      searchRequest.setSecurityType(securityType);
      searchRequest.setPagingRequest(PagingRequest.ONE);
      SecuritySearchResult search = securityMaster.search(searchRequest);
      s_logger.info("Search returned " + search.getPaging().getTotalItems() + " securities");
      dumpSecurityStructure(csvWriter, securityType, search.getFirstSecurity());
    }
    csvWriter.close();
  }

  private void dumpSecurityStructure(CSVWriter csvWriter, String securityType, ManageableSecurity firstSecurity) {
    if (firstSecurity == null) {
      s_logger.error("null security passed to dumpSecurityStructure");
      return;
    }
    s_logger.info("Processing security " + firstSecurity);
    csvWriter.writeNext(new String[] {securityType });
    csvWriter.writeNext(new String[] {firstSecurity.metaBean().beanName() });
    csvWriter.writeNext(new String[] {"Type", "Name", "Example"});
    Iterable<MetaProperty<?>> metaPropertyIterable = firstSecurity.metaBean().metaPropertyIterable();
    for (MetaProperty<?> metaProperty : metaPropertyIterable) {
      s_logger.info("Field" + metaProperty.name());
      String strValue;
      try {
        strValue = metaProperty.getString(firstSecurity);
      } catch (IllegalStateException ise) {
        strValue = metaProperty.get(firstSecurity).toString();
      }
      csvWriter.writeNext(new String[] {metaProperty.propertyType().getSimpleName(), metaProperty.name(), strValue });
    }
    csvWriter.writeNext(new String[] {});
  }
 
  /**
   * Main method to run the tool.
   */
  public static void main(String[] args) {  // CSIGNORE
    new SecurityFieldMappingTemplateGenerator().initAndRun(args, ToolContext.class);
    System.exit(0);
  }
}
TOP

Related Classes of com.opengamma.integration.tool.SecurityFieldMappingTemplateGenerator

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.