CreditStaticAndMarks.java

  1. package org.drip.feed.loader;

  2. /*
  3.  * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  4.  */

  5. /*!
  6.  * Copyright (C) 2020 Lakshmi Krishnamurthy
  7.  * Copyright (C) 2019 Lakshmi Krishnamurthy
  8.  * Copyright (C) 2018 Lakshmi Krishnamurthy
  9.  * Copyright (C) 2017 Lakshmi Krishnamurthy
  10.  * Copyright (C) 2016 Lakshmi Krishnamurthy
  11.  * Copyright (C) 2015 Lakshmi Krishnamurthy
  12.  * Copyright (C) 2014 Lakshmi Krishnamurthy
  13.  * Copyright (C) 2013 Lakshmi Krishnamurthy
  14.  * Copyright (C) 2012 Lakshmi Krishnamurthy
  15.  * Copyright (C) 2011 Lakshmi Krishnamurthy
  16.  *
  17.  *  This file is part of DROP, an open-source library targeting analytics/risk, transaction cost analytics,
  18.  *      asset liability management analytics, capital, exposure, and margin analytics, valuation adjustment
  19.  *      analytics, and portfolio construction analytics within and across fixed income, credit, commodity,
  20.  *      equity, FX, and structured products. It also includes auxiliary libraries for algorithm support,
  21.  *      numerical analysis, numerical optimization, spline builder, model validation, statistical learning,
  22.  *      and computational support.
  23.  *  
  24.  *      https://lakshmidrip.github.io/DROP/
  25.  *  
  26.  *  DROP is composed of three modules:
  27.  *  
  28.  *  - DROP Product Core - https://lakshmidrip.github.io/DROP-Product-Core/
  29.  *  - DROP Portfolio Core - https://lakshmidrip.github.io/DROP-Portfolio-Core/
  30.  *  - DROP Computational Core - https://lakshmidrip.github.io/DROP-Computational-Core/
  31.  *
  32.  *  DROP Product Core implements libraries for the following:
  33.  *  - Fixed Income Analytics
  34.  *  - Loan Analytics
  35.  *  - Transaction Cost Analytics
  36.  *
  37.  *  DROP Portfolio Core implements libraries for the following:
  38.  *  - Asset Allocation Analytics
  39.  *  - Asset Liability Management Analytics
  40.  *  - Capital Estimation Analytics
  41.  *  - Exposure Analytics
  42.  *  - Margin Analytics
  43.  *  - XVA Analytics
  44.  *
  45.  *  DROP Computational Core implements libraries for the following:
  46.  *  - Algorithm Support
  47.  *  - Computation Support
  48.  *  - Function Analysis
  49.  *  - Model Validation
  50.  *  - Numerical Analysis
  51.  *  - Numerical Optimizer
  52.  *  - Spline Builder
  53.  *  - Statistical Learning
  54.  *
  55.  *  Documentation for DROP is Spread Over:
  56.  *
  57.  *  - Main                     => https://lakshmidrip.github.io/DROP/
  58.  *  - Wiki                     => https://github.com/lakshmiDRIP/DROP/wiki
  59.  *  - GitHub                   => https://github.com/lakshmiDRIP/DROP
  60.  *  - Repo Layout Taxonomy     => https://github.com/lakshmiDRIP/DROP/blob/master/Taxonomy.md
  61.  *  - Javadoc                  => https://lakshmidrip.github.io/DROP/Javadoc/index.html
  62.  *  - Technical Specifications => https://github.com/lakshmiDRIP/DROP/tree/master/Docs/Internal
  63.  *  - Release Versions         => https://lakshmidrip.github.io/DROP/version.html
  64.  *  - Community Credits        => https://lakshmidrip.github.io/DROP/credits.html
  65.  *  - Issues Catalog           => https://github.com/lakshmiDRIP/DROP/issues
  66.  *  - JUnit                    => https://lakshmidrip.github.io/DROP/junit/index.html
  67.  *  - Jacoco                   => https://lakshmidrip.github.io/DROP/jacoco/index.html
  68.  *
  69.  *  Licensed under the Apache License, Version 2.0 (the "License");
  70.  *      you may not use this file except in compliance with the License.
  71.  *  
  72.  *  You may obtain a copy of the License at
  73.  *      http://www.apache.org/licenses/LICENSE-2.0
  74.  *  
  75.  *  Unless required by applicable law or agreed to in writing, software
  76.  *      distributed under the License is distributed on an "AS IS" BASIS,
  77.  *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  78.  *  
  79.  *  See the License for the specific language governing permissions and
  80.  *      limitations under the License.
  81.  */

  82. /**
  83.  * <i>CreditStaticAndMarks</i> contains functionality to load a variety of Credit and Rates Product reference
  84.  * data and closing marks. It exposes the following functionality:
  85.  * <ul>
  86.  *  <li>
  87.  *      Load the bond reference data, static data, amortization schedule and EOS
  88.  *  </li>
  89.  *  <li>
  90.  *      Build the bond instance entities from the reference data
  91.  *  </li>
  92.  *  <li>
  93.  *      Load the bond, CDS, and Rates product Closing Marks
  94.  *  </li>
  95.  *  <li>
  96.  *      Load and build the Holiday Calendars
  97.  *  </li>
  98.  * </ul>
  99.  *  <br>
  100.  *
  101.  * CreditStaticAndMarks assumes the appropriate connections are available to load the data.
  102.  *
  103.  *  <br><br>
  104.  *  <ul>
  105.  *      <li><b>Module </b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ComputationalCore.md">Computational Core Module</a></li>
  106.  *      <li><b>Library</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/ComputationSupportLibrary.md">Computation Support</a></li>
  107.  *      <li><b>Project</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/feed/README.md">Load, Transform, and compute Target Metrics across Feeds</a></li>
  108.  *      <li><b>Package</b> = <a href = "https://github.com/lakshmiDRIP/DROP/tree/master/src/main/java/org/drip/feed/loader/README.md">Reference/Market Data Feed Loader</a></li>
  109.  *  </ul>
  110.  *
  111.  * @author Lakshmi Krishnamurthy
  112.  */

  113. class CreditStaticAndMarks {
  114.     private static final boolean m_bBlog = false;
  115.     private static java.lang.String INVALID_BBG_FIELD_START = "#N/A";

  116.     public static java.lang.String makeSQLClearISINOrCUSIP (
  117.         final java.lang.String[] astrRecord)
  118.     {
  119.         if (null == astrRecord || 0 == astrRecord.length) return null;

  120.         java.lang.String strISIN = astrRecord[1];
  121.         java.lang.String strCUSIP = astrRecord[0];

  122.         if (null == strISIN || strISIN.isEmpty()) return null;

  123.         if (null == strCUSIP || strCUSIP.isEmpty()) return null;

  124.         java.lang.StringBuilder sb = new java.lang.StringBuilder();

  125.         sb.append ("delete from BondRef where ISIN = '").append (strISIN).append ("' or CUSIP = '").append
  126.             (strCUSIP).append ("'");

  127.         return sb.toString();
  128.     }

  129.     private static java.lang.String makeSQLClearMarksForBondDate (
  130.         final java.lang.String[] astrRecord)
  131.     {
  132.         if (null == astrRecord || 0 == astrRecord.length) return null;

  133.         java.lang.String strIDType = astrRecord[6];

  134.         if (null == strIDType || 0 == strIDType.length() || (!"ISIN".equalsIgnoreCase (strIDType) &&
  135.             !"CUSIP".equalsIgnoreCase (strIDType))) {
  136.             System.out.println ("Unknown ID Type: " + strIDType);

  137.             return null;
  138.         }

  139.         java.lang.String strID = astrRecord[1];
  140.         java.lang.String strORAMarkDate = "";

  141.         try {
  142.             strORAMarkDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  143.                 (astrRecord[3].trim());
  144.         } catch (java.lang.Exception e) {
  145.             System.out.println ("Bad mark date " + astrRecord[1] + " for " + strIDType + " " + strID);

  146.             return null;
  147.         }

  148.         java.lang.StringBuilder sb = new java.lang.StringBuilder();

  149.         sb.append ("delete from BondMarks where ID = '").append (strID).append ("' and MarkDate = '").append
  150.             (strORAMarkDate).append ("'");

  151.         return sb.toString();
  152.     }

  153.     private static java.lang.String makeSQLBondMarksInsert (
  154.         final java.lang.String[] astrRecord)
  155.     {
  156.         if (null == astrRecord || 0 == astrRecord.length) return null;

  157.         java.lang.String strIDType = astrRecord[6];

  158.         if (null == strIDType || 0 == strIDType.length() || (!"ISIN".equalsIgnoreCase (strIDType) &&
  159.             !"CUSIP".equalsIgnoreCase (strIDType))) {
  160.             System.out.println ("Unknown ID Type: " + strIDType);

  161.             return null;
  162.         }

  163.         java.lang.String strID = astrRecord[1];
  164.         java.lang.String strORAMarkDate = "";

  165.         try {
  166.             strORAMarkDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate (astrRecord[3].trim());
  167.         } catch (java.lang.Exception e) {
  168.             System.out.println ("Bad mark date " + astrRecord[1] + " for " + strIDType + " " + strID);

  169.             return null;
  170.         }

  171.         double dblMarkValue = java.lang.Double.NaN;

  172.         try {
  173.             dblMarkValue = java.lang.Double.parseDouble (astrRecord[2].trim());
  174.         } catch (java.lang.Exception e) {
  175.             System.out.println ("Bad mark " + astrRecord[2] + " for " + strIDType + " " + strID);

  176.             return null;
  177.         }

  178.         java.lang.StringBuilder sb = new java.lang.StringBuilder();

  179.         sb.append ("insert into BondMarks values('").append (strIDType).append ("', '").append (strID).append
  180.             ("', '").append (strORAMarkDate).append ("', ").append (dblMarkValue).append (")");

  181.         return sb.toString();
  182.     }

  183.     private static java.lang.String makeSQLClear_FODATA (
  184.         final java.lang.String[] astrValRecord)
  185.     {
  186.         if (null == astrValRecord || 0 == astrValRecord.length) return null;

  187.         java.lang.String strISIN = astrValRecord[40];

  188.         if (null == strISIN || strISIN.isEmpty()) return null;

  189.         return "delete from BondRef where ISIN = '" + strISIN + "'";
  190.     }

  191.     private static java.lang.String makeSQLInsert_FODATA (
  192.         final java.lang.String[] astrValRecord)
  193.     {
  194.         if (null == astrValRecord || 0 == astrValRecord.length) return null;

  195.         java.lang.String strCUSIP = astrValRecord[42];

  196.         if (null == strCUSIP || strCUSIP.isEmpty()) return null;

  197.         java.lang.String strISIN = astrValRecord[40];

  198.         if (null == strISIN || strISIN.isEmpty()) return null;

  199.         java.lang.String strName = astrValRecord[59];

  200.         if (null == strName || strName.isEmpty()) return null;

  201.         java.lang.String strDescription = astrValRecord[59];

  202.         if (null == strDescription || strDescription.isEmpty()) return null;

  203.         java.lang.String strTicker = astrValRecord[3];

  204.         if (null == strTicker || strTicker.isEmpty()) return null;

  205.         double dblCoupon = 0.;

  206.         try {
  207.             dblCoupon = java.lang.Double.parseDouble (astrValRecord[4].trim());
  208.         } catch (java.lang.Exception e) {
  209.             if (m_bBlog) System.out.println ("Bad coupon " + astrValRecord[4] + " for ISIN " + strISIN);
  210.         }

  211.         java.lang.String strOracleMaturity = "";

  212.         try {
  213.             strOracleMaturity = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  214.                 (astrValRecord[5].trim());
  215.         } catch (java.lang.Exception e) {
  216.             System.out.println ("Bad maturity " + astrValRecord[5] + " for ISIN " + strISIN);

  217.             return null;
  218.         }

  219.         java.lang.String strOracleAnnounce = "";

  220.         try {
  221.             strOracleAnnounce = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  222.                 (astrValRecord[29].trim());
  223.         } catch (java.lang.Exception e) {
  224.             if (m_bBlog)
  225.                 System.out.println ("Bad announce date " + astrValRecord[29] + " for ISIN " + strISIN);
  226.         }

  227.         java.lang.String strOracleFirstSettle = "";

  228.         try {
  229.             strOracleFirstSettle = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  230.                 (astrValRecord[31].trim());
  231.         } catch (java.lang.Exception e) {
  232.             System.out.println ("Bad first settle " + astrValRecord[31] + " for ISIN " + strISIN);

  233.             return null;
  234.         }

  235.         java.lang.String strOracleFirstCoupon = "";

  236.         try {
  237.             strOracleFirstCoupon = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  238.                 (astrValRecord[33].trim());
  239.         } catch (java.lang.Exception e) {
  240.         }

  241.         if (null == strOracleFirstCoupon || strOracleFirstCoupon.isEmpty())
  242.             strOracleFirstCoupon = strOracleFirstSettle;

  243.         if (null == strOracleAnnounce || strOracleAnnounce.isEmpty())
  244.             strOracleAnnounce = strOracleFirstCoupon;

  245.         java.lang.String strCurrency = astrValRecord[67];

  246.         if (null == strCurrency || strCurrency.isEmpty()) return null;

  247.         int iCouponFreq = 0;

  248.         try {
  249.             iCouponFreq = (int) java.lang.Double.parseDouble (astrValRecord[12].trim());
  250.         } catch (java.lang.Exception e) {
  251.             if (m_bBlog)
  252.                 System.out.println ("Bad coupon freq " + astrValRecord[12] + " for ISIN " + strISIN);
  253.         }

  254.         java.lang.String strDayCount = org.drip.analytics.support.Helper.GetDayCountFromBBGCode
  255.             (astrValRecord[16]);

  256.         if (null == strDayCount || strDayCount.isEmpty()) return null;

  257.         double dblFloatSpread = 0.;

  258.         try {
  259.             dblFloatSpread = java.lang.Double.parseDouble (astrValRecord[78].trim());
  260.         } catch (java.lang.Exception e) {
  261.             if (m_bBlog)
  262.                 System.out.println ("Bad float spread " + astrValRecord[78] + " for ISIN " + strISIN);
  263.         }

  264.         java.lang.String strRateIndex =
  265.             org.drip.analytics.support.Helper.RateIndexFromCcyAndCouponFreq (strCurrency,
  266.                 iCouponFreq);

  267.         java.lang.String strCalendar = astrValRecord[19];

  268.         if (strCalendar.startsWith (INVALID_BBG_FIELD_START)) strCalendar = "";

  269.         java.lang.String strMoodys = "";
  270.         java.lang.String strSnP = "";
  271.         java.lang.String strFitch = "";
  272.         java.lang.String strIndustrySector = astrValRecord[54];
  273.         java.lang.String strIndustryGroup = astrValRecord[55];
  274.         java.lang.String strSnrSub = astrValRecord[20];
  275.         java.lang.String strIssuer = astrValRecord[0];
  276.         double dblAmountIssued = 0.;

  277.         try {
  278.             dblAmountIssued = java.lang.Double.parseDouble (astrValRecord[21].trim());
  279.         } catch (java.lang.Exception e) {
  280.             if (m_bBlog) System.out.println ("Bad issue amt " + astrValRecord[21] + " for ISIN " + strISIN);
  281.         }

  282.         double dblAmountOutstanding = 0.;

  283.         try {
  284.             dblAmountOutstanding = java.lang.Double.parseDouble (astrValRecord[22].trim());
  285.         } catch (java.lang.Exception e) {
  286.             if (m_bBlog)
  287.                 System.out.println ("Bad outstanding amt " + astrValRecord[22] + " for ISIN " + strISIN);
  288.         }

  289.         java.lang.String strOracleIssue = "";

  290.         try {
  291.             strOracleIssue = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  292.                 (astrValRecord[29].trim());
  293.         } catch (java.lang.Exception e) {
  294.             if (m_bBlog) System.out.println ("Bad issue date " + astrValRecord[29] + " for ISIN " + strISIN);
  295.         }

  296.         java.lang.String strCouponDates = "";
  297.         java.lang.String strCouponFactors = "";
  298.         java.lang.String strNotionalDates = "";
  299.         java.lang.String strNotionalFactors = "";
  300.         java.lang.String strIssuerSPN = "";
  301.         java.lang.String strFloatQuote = "FullCoupon";

  302.         java.lang.StringBuilder sb = new java.lang.StringBuilder();

  303.         sb.append ("INSERT INTO BondRef VALUES (");

  304.         sb.append ("'" + strISIN + "',");

  305.         sb.append ("'" + strCUSIP + "',");

  306.         sb.append ("'" + strName + "',");

  307.         sb.append ("'" + strDescription + "',");

  308.         sb.append ("'" + strTicker + "',");

  309.         sb.append (dblCoupon + ",");

  310.         sb.append ("'" + strOracleMaturity + "',");

  311.         sb.append ("'" + strOracleAnnounce + "',");

  312.         sb.append ("'" + strOracleFirstSettle + "',");

  313.         sb.append ("'" + strOracleFirstCoupon + "',");

  314.         sb.append ("'" + strCurrency + "',");

  315.         sb.append (iCouponFreq + ",");

  316.         sb.append ("'" + strDayCount + "',");

  317.         sb.append (dblFloatSpread + ",");

  318.         sb.append ("'" + strRateIndex + "',");

  319.         sb.append ("'" + strCalendar + "',");

  320.         sb.append ("'" + strMoodys + "',");

  321.         sb.append ("'" + strSnP + "',");

  322.         sb.append ("'" + strFitch + "',");

  323.         sb.append ("'" + strIndustrySector + "',");

  324.         sb.append ("'" + strIndustryGroup + "',");

  325.         sb.append ("'" + strSnrSub + "',");

  326.         sb.append ("'" + strIssuer + "',");

  327.         sb.append (dblAmountIssued + ",");

  328.         sb.append (dblAmountOutstanding + ",");

  329.         sb.append ("'" + strOracleIssue + "',");

  330.         sb.append ("'" + strCouponDates + "',");

  331.         sb.append ("'" + strCouponFactors + "',");

  332.         sb.append ("'" + strNotionalDates + "',");

  333.         sb.append ("'" + strNotionalFactors + "',");

  334.         sb.append ("'" + strIssuerSPN + "',");

  335.         sb.append ("'" + strFloatQuote + "')");

  336.         return sb.toString();
  337.     }

  338.     private static final java.lang.String ClearISINDateTypeFromEOS (
  339.         final java.lang.String[] astrEOS)
  340.     {
  341.         java.lang.String strISIN = astrEOS[1].trim();

  342.         java.lang.String strOracleExerciseStartDate = "";

  343.         try {
  344.             strOracleExerciseStartDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  345.                 (astrEOS[2].trim());
  346.         } catch (java.lang.Exception e) {
  347.             System.out.println ("Bad exercise date " + astrEOS[2] + " for ISIN " + strISIN);

  348.             return "";
  349.         }

  350.         java.lang.String strOracleExerciseEndDate = "";

  351.         try {
  352.             strOracleExerciseEndDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  353.                 (astrEOS[4].trim());
  354.         } catch (java.lang.Exception e) {
  355.             System.out.println ("Bad exercise date " + astrEOS[4] + " for ISIN " + strISIN);

  356.             return "";
  357.         }

  358.         java.lang.String strCallOrPut = astrEOS[8].trim();

  359.         java.lang.String strEuroOrAmer = astrEOS[9].trim();

  360.         return "delete from EOS where ISIN = '" + strISIN + "' and ExerciseStartDate = '" +
  361.             strOracleExerciseStartDate + "' and ExerciseEndDate = '" + strOracleExerciseEndDate +
  362.                 "' and CallOrPut = '" + strCallOrPut + "' and EuroAmer = '" + strEuroOrAmer + "'";
  363.     }

  364.     private static final java.lang.String InsertIntoEOS (
  365.         final java.lang.String[] astrEOS)
  366.     {
  367.         java.lang.String strISIN = astrEOS[1].trim();

  368.         java.lang.String strOracleExerciseStartDate = "";

  369.         try {
  370.             strOracleExerciseStartDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  371.                 (astrEOS[2].trim());
  372.         } catch (java.lang.Exception e) {
  373.             System.out.println ("Bad exercise start " + astrEOS[2] + " for ISIN " + strISIN);

  374.             return null;
  375.         }

  376.         java.lang.String strOracleExerciseEndDate = "";

  377.         try {
  378.             strOracleExerciseEndDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  379.                 (astrEOS[4].trim());
  380.         } catch (java.lang.Exception e) {
  381.             System.out.println ("Bad exercise end " + astrEOS[4] + " for ISIN " + strISIN);

  382.             return null;
  383.         }

  384.         double dblExerciseFactor = java.lang.Double.NaN;

  385.         try {
  386.             dblExerciseFactor = java.lang.Double.parseDouble (astrEOS[6].trim());
  387.         } catch (java.lang.Exception e) {
  388.             System.out.println ("Bad exercise factor " + astrEOS[6] + " for ISIN " + strISIN);

  389.             return null;
  390.         }

  391.         java.lang.String strExerciseCallOrPut = astrEOS[8].trim();

  392.         java.lang.String strExerciseEuroOrAmer = astrEOS[9].trim();

  393.         java.lang.String strStrikeType = astrEOS[12].trim();

  394.         int iKnockoutOnDefault = 1;

  395.         try {
  396.             iKnockoutOnDefault = (int) java.lang.Double.parseDouble (astrEOS[13].trim());
  397.         } catch (java.lang.Exception e) {
  398.             System.out.println ("Bad knockout on default " + astrEOS[13] + " for ISIN " + strISIN);

  399.             return null;
  400.         }

  401.         return "insert into EOS values('" + strISIN + "', '" + strOracleExerciseStartDate + "', '" +
  402.             strOracleExerciseEndDate + "', " + dblExerciseFactor + ", '" + strExerciseCallOrPut + "', '" +
  403.                 strExerciseEuroOrAmer + "', '" + strStrikeType + "', " + iKnockoutOnDefault + ", 'N')";
  404.     }

  405.     private static final java.lang.String ClearFromIREOD (
  406.         final java.lang.String[] astrIREOD)
  407.     {
  408.         java.lang.String strType = astrIREOD[3].trim();

  409.         java.lang.String strCurrency = astrIREOD[4].trim();

  410.         java.lang.String strOracleCloseDate = "";

  411.         try {
  412.             strOracleCloseDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  413.                 (astrIREOD[1].trim());
  414.         } catch (java.lang.Exception e) {
  415.             System.out.println ("Bad date " + astrIREOD[1] + " for " + strCurrency);

  416.             return null;
  417.         }

  418.         return "delete from IR_EOD where EOD = '" + strOracleCloseDate + "' and Currency = '" +
  419.             strCurrency + "' and Type = '" + strType + "'";
  420.     }

  421.     private static final java.lang.String InsertIntoIREOD (
  422.         final java.lang.String[] astrIREOD)
  423.     {
  424.         java.lang.String strType = astrIREOD[3].trim();

  425.         java.lang.String strCurrency = astrIREOD[4].trim();

  426.         java.lang.String strOracleCloseDate = "";
  427.         double dbl1D = java.lang.Double.NaN;
  428.         double dbl1M = java.lang.Double.NaN;
  429.         double dbl2M = java.lang.Double.NaN;
  430.         double dbl3M = java.lang.Double.NaN;
  431.         double dbl4M = java.lang.Double.NaN;
  432.         double dbl5M = java.lang.Double.NaN;
  433.         double dbl6M = java.lang.Double.NaN;
  434.         double dbl9M = java.lang.Double.NaN;
  435.         double dbl1Y = java.lang.Double.NaN;
  436.         double dbl18M = java.lang.Double.NaN;
  437.         double dbl2Y = java.lang.Double.NaN;
  438.         double dbl3Y = java.lang.Double.NaN;
  439.         double dbl4Y = java.lang.Double.NaN;
  440.         double dbl5Y = java.lang.Double.NaN;
  441.         double dbl6Y = java.lang.Double.NaN;
  442.         double dbl7Y = java.lang.Double.NaN;
  443.         double dbl8Y = java.lang.Double.NaN;
  444.         double dbl9Y = java.lang.Double.NaN;
  445.         double dbl10Y = java.lang.Double.NaN;
  446.         double dbl12Y = java.lang.Double.NaN;
  447.         double dbl15Y = java.lang.Double.NaN;
  448.         double dbl20Y = java.lang.Double.NaN;
  449.         double dbl25Y = java.lang.Double.NaN;
  450.         double dbl30Y = java.lang.Double.NaN;
  451.         double dbl40Y = java.lang.Double.NaN;

  452.         try {
  453.             strOracleCloseDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  454.                 (astrIREOD[1].trim());

  455.             dbl1D = java.lang.Double.parseDouble (astrIREOD[5].trim());

  456.             dbl1M = java.lang.Double.parseDouble (astrIREOD[6].trim());

  457.             dbl2M = java.lang.Double.parseDouble (astrIREOD[7].trim());

  458.             dbl3M = java.lang.Double.parseDouble (astrIREOD[8].trim());

  459.             dbl4M = java.lang.Double.parseDouble (astrIREOD[9].trim());

  460.             dbl5M = java.lang.Double.parseDouble (astrIREOD[10].trim());

  461.             dbl6M = java.lang.Double.parseDouble (astrIREOD[11].trim());

  462.             dbl9M = java.lang.Double.parseDouble (astrIREOD[12].trim());

  463.             dbl1Y = java.lang.Double.parseDouble (astrIREOD[13].trim());

  464.             dbl18M = java.lang.Double.parseDouble (astrIREOD[14].trim());

  465.             dbl2Y = java.lang.Double.parseDouble (astrIREOD[15].trim());

  466.             dbl3Y = java.lang.Double.parseDouble (astrIREOD[16].trim());

  467.             dbl4Y = java.lang.Double.parseDouble (astrIREOD[17].trim());

  468.             dbl5Y = java.lang.Double.parseDouble (astrIREOD[18].trim());

  469.             dbl6Y = java.lang.Double.parseDouble (astrIREOD[19].trim());

  470.             dbl7Y = java.lang.Double.parseDouble (astrIREOD[20].trim());

  471.             dbl8Y = java.lang.Double.parseDouble (astrIREOD[21].trim());

  472.             dbl9Y = java.lang.Double.parseDouble (astrIREOD[22].trim());

  473.             dbl10Y = java.lang.Double.parseDouble (astrIREOD[23].trim());

  474.             dbl12Y = java.lang.Double.parseDouble (astrIREOD[24].trim());

  475.             dbl15Y = java.lang.Double.parseDouble (astrIREOD[25].trim());

  476.             dbl20Y = java.lang.Double.parseDouble (astrIREOD[26].trim());

  477.             dbl25Y = java.lang.Double.parseDouble (astrIREOD[27].trim());

  478.             dbl30Y = java.lang.Double.parseDouble (astrIREOD[28].trim());

  479.             dbl40Y = java.lang.Double.parseDouble (astrIREOD[29].trim());
  480.         } catch (java.lang.Exception e) {
  481.             System.out.println ("Bad input marks for ccy " + strCurrency);

  482.             return null;
  483.         }

  484.         java.lang.String str1DType = astrIREOD[30].trim();

  485.         java.lang.String str1MType = astrIREOD[31].trim();

  486.         java.lang.String str2MType = astrIREOD[32].trim();

  487.         java.lang.String str3MType = astrIREOD[33].trim();

  488.         java.lang.String str4MType = astrIREOD[34].trim();

  489.         java.lang.String str5MType = astrIREOD[35].trim();

  490.         java.lang.String str6MType = astrIREOD[36].trim();

  491.         java.lang.String str9MType = astrIREOD[37].trim();

  492.         java.lang.String str1YType = astrIREOD[38].trim();

  493.         java.lang.String str18MType = astrIREOD[39].trim();

  494.         java.lang.String str2YType = astrIREOD[40].trim();

  495.         java.lang.String str3YType = astrIREOD[41].trim();

  496.         java.lang.String str4YType = astrIREOD[42].trim();

  497.         java.lang.String str5YType = astrIREOD[43].trim();

  498.         java.lang.String str6YType = astrIREOD[44].trim();

  499.         java.lang.String str7YType = astrIREOD[45].trim();

  500.         java.lang.String str8YType = astrIREOD[46].trim();

  501.         java.lang.String str9YType = astrIREOD[47].trim();

  502.         java.lang.String str10YType = astrIREOD[48].trim();

  503.         java.lang.String str12YType = astrIREOD[49].trim();

  504.         java.lang.String str15YType = astrIREOD[50].trim();

  505.         java.lang.String str20YType = astrIREOD[51].trim();

  506.         java.lang.String str25YType = astrIREOD[52].trim();

  507.         java.lang.String str30YType = astrIREOD[53].trim();

  508.         java.lang.String str40YType = astrIREOD[54].trim();

  509.         java.lang.StringBuilder sbInsertIREOD = new java.lang.StringBuilder();

  510.         sbInsertIREOD.append ("insert into IR_EOD values(");

  511.         sbInsertIREOD.append ("'").append (strOracleCloseDate).append ("', ");

  512.         sbInsertIREOD.append ("'").append (strType).append ("', ");

  513.         sbInsertIREOD.append ("'").append (strCurrency).append ("', ");

  514.         sbInsertIREOD.append (dbl1D).append (", ");

  515.         sbInsertIREOD.append (dbl1M).append (", ");

  516.         sbInsertIREOD.append (dbl2M).append (", ");

  517.         sbInsertIREOD.append (dbl3M).append (", ");

  518.         sbInsertIREOD.append (dbl4M).append (", ");

  519.         sbInsertIREOD.append (dbl5M).append (", ");

  520.         sbInsertIREOD.append (dbl6M).append (", ");

  521.         sbInsertIREOD.append (dbl9M).append (", ");

  522.         sbInsertIREOD.append (dbl1Y).append (", ");

  523.         sbInsertIREOD.append (dbl18M).append (", ");

  524.         sbInsertIREOD.append (dbl2Y).append (", ");

  525.         sbInsertIREOD.append (dbl3Y).append (", ");

  526.         sbInsertIREOD.append (dbl4Y).append (", ");

  527.         sbInsertIREOD.append (dbl5Y).append (", ");

  528.         sbInsertIREOD.append (dbl6Y).append (", ");

  529.         sbInsertIREOD.append (dbl7Y).append (", ");

  530.         sbInsertIREOD.append (dbl8Y).append (", ");

  531.         sbInsertIREOD.append (dbl9Y).append (", ");

  532.         sbInsertIREOD.append (dbl10Y).append (", ");

  533.         sbInsertIREOD.append (dbl12Y).append (", ");

  534.         sbInsertIREOD.append (dbl15Y).append (", ");

  535.         sbInsertIREOD.append (dbl20Y).append (", ");

  536.         sbInsertIREOD.append (dbl25Y).append (", ");

  537.         sbInsertIREOD.append (dbl30Y).append (", ");

  538.         sbInsertIREOD.append (dbl40Y).append (", ");

  539.         sbInsertIREOD.append ("'").append (str1DType).append ("', ");

  540.         sbInsertIREOD.append ("'").append (str1MType).append ("', ");

  541.         sbInsertIREOD.append ("'").append (str2MType).append ("', ");

  542.         sbInsertIREOD.append ("'").append (str3MType).append ("', ");

  543.         sbInsertIREOD.append ("'").append (str4MType).append ("', ");

  544.         sbInsertIREOD.append ("'").append (str5MType).append ("', ");

  545.         sbInsertIREOD.append ("'").append (str6MType).append ("', ");

  546.         sbInsertIREOD.append ("'").append (str9MType).append ("', ");

  547.         sbInsertIREOD.append ("'").append (str1YType).append ("', ");

  548.         sbInsertIREOD.append ("'").append (str18MType).append ("', ");

  549.         sbInsertIREOD.append ("'").append (str2YType).append ("', ");

  550.         sbInsertIREOD.append ("'").append (str3YType).append ("', ");

  551.         sbInsertIREOD.append ("'").append (str4YType).append ("', ");

  552.         sbInsertIREOD.append ("'").append (str5YType).append ("', ");

  553.         sbInsertIREOD.append ("'").append (str6YType).append ("', ");

  554.         sbInsertIREOD.append ("'").append (str7YType).append ("', ");

  555.         sbInsertIREOD.append ("'").append (str8YType).append ("', ");

  556.         sbInsertIREOD.append ("'").append (str9YType).append ("', ");

  557.         sbInsertIREOD.append ("'").append (str10YType).append ("', ");

  558.         sbInsertIREOD.append ("'").append (str12YType).append ("', ");

  559.         sbInsertIREOD.append ("'").append (str15YType).append ("', ");

  560.         sbInsertIREOD.append ("'").append (str20YType).append ("', ");

  561.         sbInsertIREOD.append ("'").append (str25YType).append ("', ");

  562.         sbInsertIREOD.append ("'").append (str30YType).append ("', ");

  563.         sbInsertIREOD.append ("'").append (str40YType).append ("')");

  564.         return sbInsertIREOD.toString();
  565.     }

  566.     private static final java.lang.String ClearFromCREOD (
  567.         final java.lang.String[] astrCREOD)
  568.     {
  569.         java.lang.String strSPN = astrCREOD[6].trim();

  570.         java.lang.String strOracleCloseDate = "";

  571.         try {
  572.             strOracleCloseDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  573.                 (astrCREOD[2].trim());
  574.         } catch (java.lang.Exception e) {
  575.             System.out.println ("Bad date " + astrCREOD[2] + " for " + strSPN);

  576.             return null;
  577.         }

  578.         return "delete from CR_EOD where EOD = '" + strOracleCloseDate + "' and SPN = '" + strSPN + "'";
  579.     }

  580.     private static final java.lang.String InsertIntoCREOD (
  581.         final java.lang.String[] astrCREOD)
  582.     {
  583.         java.lang.String strName = astrCREOD[4].trim();

  584.         java.lang.String strSPN = astrCREOD[6].trim();

  585.         java.lang.String strOracleCloseDate = "";
  586.         double dblRecRate = java.lang.Double.NaN;
  587.         double dblCR3M = java.lang.Double.NaN;
  588.         double dblCR6M = java.lang.Double.NaN;
  589.         double dblCR9M = java.lang.Double.NaN;
  590.         double dblCR1Y = java.lang.Double.NaN;
  591.         double dblCR18M = java.lang.Double.NaN;
  592.         double dblCR2Y = java.lang.Double.NaN;
  593.         double dblCR3Y = java.lang.Double.NaN;
  594.         double dblCR4Y = java.lang.Double.NaN;
  595.         double dblCR5Y = java.lang.Double.NaN;
  596.         double dblCR6Y = java.lang.Double.NaN;
  597.         double dblCR7Y = java.lang.Double.NaN;
  598.         double dblCR8Y = java.lang.Double.NaN;
  599.         double dblCR9Y = java.lang.Double.NaN;
  600.         double dblCR10Y = java.lang.Double.NaN;
  601.         double dblCR11Y = java.lang.Double.NaN;
  602.         double dblCR12Y = java.lang.Double.NaN;
  603.         double dblCR15Y = java.lang.Double.NaN;
  604.         double dblCR20Y = java.lang.Double.NaN;
  605.         double dblCR30Y = java.lang.Double.NaN;
  606.         double dblCR40Y = java.lang.Double.NaN;

  607.         try {
  608.             strOracleCloseDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  609.                 (astrCREOD[2].trim());

  610.             dblRecRate = java.lang.Double.parseDouble (astrCREOD[7].trim());

  611.             dblCR3M = java.lang.Double.parseDouble (astrCREOD[8].trim());

  612.             dblCR6M = java.lang.Double.parseDouble (astrCREOD[9].trim());

  613.             dblCR9M = java.lang.Double.parseDouble (astrCREOD[10].trim());

  614.             dblCR1Y = java.lang.Double.parseDouble (astrCREOD[11].trim());

  615.             dblCR18M = java.lang.Double.parseDouble (astrCREOD[12].trim());

  616.             dblCR2Y = java.lang.Double.parseDouble (astrCREOD[13].trim());

  617.             dblCR3Y = java.lang.Double.parseDouble (astrCREOD[14].trim());

  618.             dblCR4Y = java.lang.Double.parseDouble (astrCREOD[15].trim());

  619.             dblCR5Y = java.lang.Double.parseDouble (astrCREOD[16].trim());

  620.             dblCR6Y = java.lang.Double.parseDouble (astrCREOD[17].trim());

  621.             dblCR7Y = java.lang.Double.parseDouble (astrCREOD[18].trim());

  622.             dblCR8Y = java.lang.Double.parseDouble (astrCREOD[19].trim());

  623.             dblCR9Y = java.lang.Double.parseDouble (astrCREOD[20].trim());

  624.             dblCR10Y = java.lang.Double.parseDouble (astrCREOD[21].trim());

  625.             dblCR11Y = java.lang.Double.parseDouble (astrCREOD[22].trim());

  626.             dblCR12Y = java.lang.Double.parseDouble (astrCREOD[23].trim());

  627.             dblCR15Y = java.lang.Double.parseDouble (astrCREOD[26].trim());

  628.             dblCR20Y = java.lang.Double.parseDouble (astrCREOD[31].trim());

  629.             dblCR30Y = java.lang.Double.parseDouble (astrCREOD[37].trim());

  630.             dblCR40Y = java.lang.Double.parseDouble (astrCREOD[39].trim());
  631.         } catch (java.lang.Exception e) {
  632.             System.out.println ("Bad input marks for SPN " + strSPN);

  633.             e.printStackTrace();

  634.             return null;
  635.         }

  636.         java.lang.StringBuilder sb = new java.lang.StringBuilder();

  637.         sb.append ("insert into CR_EOD values(");

  638.         sb.append ("'" + strOracleCloseDate + "', ");

  639.         sb.append ("'" + strName + "', ");

  640.         sb.append ("'" + strSPN + "', ");

  641.         sb.append (dblRecRate + ", ");

  642.         sb.append (dblCR3M + ", ");

  643.         sb.append (dblCR6M + ", ");

  644.         sb.append (dblCR9M + ", ");

  645.         sb.append (dblCR1Y + ", ");

  646.         sb.append (dblCR18M + ", ");

  647.         sb.append (dblCR2Y + ", ");

  648.         sb.append (dblCR3Y + ", ");

  649.         sb.append (dblCR4Y + ", ");

  650.         sb.append (dblCR5Y + ", ");

  651.         sb.append (dblCR6Y + ", ");

  652.         sb.append (dblCR7Y + ", ");

  653.         sb.append (dblCR8Y + ", ");

  654.         sb.append (dblCR9Y + ", ");

  655.         sb.append (dblCR10Y + ", ");

  656.         sb.append (dblCR11Y + ", ");

  657.         sb.append (dblCR12Y + ", ");

  658.         sb.append (dblCR15Y + ", ");

  659.         sb.append (dblCR20Y + ", ");

  660.         sb.append (dblCR30Y + ", ");

  661.         sb.append (dblCR40Y + ")");

  662.         return sb.toString();
  663.     }

  664.     private static java.lang.String makeSQLClearISIN2 (
  665.         final java.lang.String[] astrBondRef2)
  666.     {
  667.         java.lang.String strISIN = astrBondRef2[0];

  668.         if (null == strISIN || strISIN.isEmpty()) return null;

  669.         return "delete from BondRef where ISIN = '" + strISIN + "'";
  670.     }

  671.     private static java.lang.String makeSQLInsert2 (
  672.         final java.lang.String[] astrBondRef2)
  673.     {
  674.         java.lang.String strCUSIP = astrBondRef2[40];

  675.         if (null == strCUSIP || strCUSIP.isEmpty()) return null;

  676.         java.lang.String strISIN = astrBondRef2[0];

  677.         if (null == strISIN || strISIN.isEmpty()) return null;

  678.         java.lang.String strName = astrBondRef2[2];

  679.         if (null == strName || strName.isEmpty()) return null;

  680.         java.lang.String strDescription = astrBondRef2[2];

  681.         if (null == strDescription || strDescription.isEmpty()) return null;

  682.         System.out.println (astrBondRef2[1]);

  683.         java.lang.String[] astrTicker = astrBondRef2[1].split (" ");

  684.         java.lang.String strTicker = astrTicker[0];
  685.         double dblCoupon = 0.;

  686.         try {
  687.             dblCoupon = java.lang.Double.parseDouble (astrBondRef2[11].trim());
  688.         } catch (java.lang.Exception e) {
  689.             if (m_bBlog) System.out.println ("Bad coupon " + astrBondRef2[11] + " for ISIN " + strISIN);
  690.         }

  691.         java.lang.String strOracleMaturity = "";

  692.         try {
  693.             strOracleMaturity = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  694.                 (astrBondRef2[8].trim());
  695.         } catch (java.lang.Exception e) {
  696.             System.out.println ("Bad maturity " + astrBondRef2[8] + " for ISIN " + strISIN);

  697.             return null;
  698.         }

  699.         java.lang.String strOracleFirstSettle = "";

  700.         try {
  701.             strOracleFirstSettle = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  702.                 (astrBondRef2[6].trim());
  703.         } catch (java.lang.Exception e) {
  704.             System.out.println ("Bad first settle " + astrBondRef2[6] + " for ISIN " + strISIN);

  705.             return null;
  706.         }

  707.         java.lang.String strOracleFirstCoupon = "";

  708.         try {
  709.             strOracleFirstCoupon = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  710.                 (astrBondRef2[6].trim());
  711.         } catch (java.lang.Exception e) {
  712.             System.out.println ("Bad first coupon " + astrBondRef2[6] + " for ISIN " + strISIN);

  713.             return null;
  714.         }

  715.         java.lang.String strOracleAnnounce = strOracleFirstCoupon;

  716.         java.lang.String strCurrency = astrBondRef2[5];

  717.         if (null == strCurrency || strCurrency.isEmpty()) return null;

  718.         int iCouponFreq = 0;

  719.         java.lang.String strCouponFreq = astrBondRef2[13];

  720.         if ("A".equalsIgnoreCase (strCouponFreq))
  721.             iCouponFreq = 1;
  722.         else if ("M".equalsIgnoreCase (strCouponFreq))
  723.             iCouponFreq = 12;
  724.         else if ("Q".equalsIgnoreCase (strCouponFreq))
  725.             iCouponFreq = 4;
  726.         else if ("S".equalsIgnoreCase (strCouponFreq))
  727.             iCouponFreq = 2;

  728.         java.lang.String strDayCount = astrBondRef2[14];

  729.         if (null == strDayCount || strDayCount.isEmpty()) return null;

  730.         double dblFloatSpread = 0.;

  731.         try {
  732.             dblFloatSpread = java.lang.Double.parseDouble (astrBondRef2[12].trim());
  733.         } catch (java.lang.Exception e) {
  734.             if (m_bBlog)
  735.                 System.out.println ("Bad float spread " + astrBondRef2[12] + " for ISIN " + strISIN);
  736.         }

  737.         java.lang.String strRateIndex = "";
  738.         java.lang.String strCalendar = astrBondRef2[5];

  739.         if (strCalendar.startsWith (INVALID_BBG_FIELD_START)) strCalendar = "";

  740.         java.lang.String strMoodys = "";
  741.         java.lang.String strSnP = "";
  742.         java.lang.String strFitch = "";
  743.         java.lang.String strIndustrySector = "";
  744.         java.lang.String strIndustryGroup = "";
  745.         java.lang.String strSnrSub = "";
  746.         java.lang.String strIssuer = astrBondRef2[2];
  747.         double dblAmountIssued = 0.;
  748.         double dblAmountOutstanding = 0.;
  749.         java.lang.String strOracleIssue = "";

  750.         try {
  751.             strOracleIssue = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  752.                 (astrBondRef2[6].trim());
  753.         } catch (java.lang.Exception e) {
  754.             if (m_bBlog) System.out.println ("Bad issue date " + astrBondRef2[6] + " for ISIN " + strISIN);
  755.         }

  756.         java.lang.String strCouponDates = "";
  757.         java.lang.String strCouponFactors = "";
  758.         java.lang.String strNotionalDates = "";
  759.         java.lang.String strNotionalFactors = "";
  760.         java.lang.String strIssuerSPN = astrBondRef2[3];
  761.         java.lang.String strFloatQuote = "";

  762.         java.lang.StringBuilder sb = new java.lang.StringBuilder();

  763.         sb.append ("INSERT INTO BondRef VALUES (");

  764.         sb.append ("'" + strISIN + "',");

  765.         sb.append ("'" + strCUSIP + "',");

  766.         sb.append ("'" + strName + "',");

  767.         sb.append ("'" + strDescription + "',");

  768.         sb.append ("'" + strTicker + "',");

  769.         sb.append (dblCoupon + ",");

  770.         sb.append ("'" + strOracleMaturity + "',");

  771.         sb.append ("'" + strOracleAnnounce + "',");

  772.         sb.append ("'" + strOracleFirstSettle + "',");

  773.         sb.append ("'" + strOracleFirstCoupon + "',");

  774.         sb.append ("'" + strCurrency + "',");

  775.         sb.append (iCouponFreq + ",");

  776.         sb.append ("'" + strDayCount + "',");

  777.         sb.append (dblFloatSpread + ",");

  778.         sb.append ("'" + strRateIndex + "',");

  779.         sb.append ("'" + strCalendar + "',");

  780.         sb.append ("'" + strMoodys + "',");

  781.         sb.append ("'" + strSnP + "',");

  782.         sb.append ("'" + strFitch + "',");

  783.         sb.append ("'" + strIndustrySector + "',");

  784.         sb.append ("'" + strIndustryGroup + "',");

  785.         sb.append ("'" + strSnrSub + "',");

  786.         sb.append ("'" + strIssuer + "',");

  787.         sb.append (dblAmountIssued + ",");

  788.         sb.append (dblAmountOutstanding + ",");

  789.         sb.append ("'" + strOracleIssue + "',");

  790.         sb.append ("'" + strCouponDates + "',");

  791.         sb.append ("'" + strCouponFactors + "',");

  792.         sb.append ("'" + strNotionalDates + "',");

  793.         sb.append ("'" + strNotionalFactors + "',");

  794.         sb.append ("'" + strIssuerSPN + "',");

  795.         sb.append ("'" + strFloatQuote + "')");

  796.         return sb.toString();
  797.     }

  798.     private static java.lang.String makeSQLClearAmortScheduleEntry (
  799.         final java.lang.String[] astrAmortizationSchedule)
  800.     {
  801.         if (null == astrAmortizationSchedule || 5 != astrAmortizationSchedule.length) return null;

  802.         java.lang.String strOracleAmortizationDate = "";

  803.         java.lang.String strCUSIP = astrAmortizationSchedule[1].trim();

  804.         if (null == strCUSIP || strCUSIP.isEmpty()) return null;

  805.         java.lang.StringBuilder sb = new java.lang.StringBuilder();

  806.         try {
  807.             strOracleAmortizationDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  808.                 (astrAmortizationSchedule[2].trim());
  809.         } catch (java.lang.Exception e) {
  810.             System.out.println ("Bad date " + astrAmortizationSchedule[2] + " for CUSIP " + strCUSIP);

  811.             return null;
  812.         }

  813.         sb.append ("delete from AmortizationSchedule where CUSIP = '").append (strCUSIP).append
  814.             ("' and AmortDate = '").append (strOracleAmortizationDate).append ("'");

  815.         return sb.toString();
  816.     }

  817.     private static final java.lang.String InsertIntoAmortizationSchedule (
  818.         final java.lang.String[] astrAmortizationSchedule)
  819.     {
  820.         if (null == astrAmortizationSchedule || 5 != astrAmortizationSchedule.length) return null;

  821.         java.lang.String strCUSIP = astrAmortizationSchedule[1].trim();

  822.         java.lang.String strOracleAmortizationDate = "";
  823.         double dblPrincipalPaydown = java.lang.Double.NaN;

  824.         try {
  825.             strOracleAmortizationDate = org.drip.analytics.date.DateUtil.MakeOracleDateFromBBGDate
  826.                 (astrAmortizationSchedule[2].trim());
  827.         } catch (java.lang.Exception e) {
  828.             System.out.println ("Bad date " + astrAmortizationSchedule[2] + " for CUSIP " + strCUSIP);

  829.             return null;
  830.         }

  831.         try {
  832.             dblPrincipalPaydown = java.lang.Double.parseDouble (astrAmortizationSchedule[4].trim());
  833.         } catch (java.lang.Exception e) {
  834.             System.out.println ("Bad paydown factor " + astrAmortizationSchedule[4] + " for CUSIP " +
  835.                 strCUSIP);

  836.             return null;
  837.         }

  838.         return "insert into AmortizationSchedule values('" + strCUSIP + "', '" + strOracleAmortizationDate +
  839.             "', " + dblPrincipalPaydown + ")";
  840.     }

  841.     private static void LoadBondRef()
  842.         throws java.lang.Exception
  843.     {
  844.         /* int iNumBonds = 0;
  845.         java.lang.String strValDataLine = "";
  846.         java.io.BufferedReader inValData = null;

  847.         System.out.println ("Loading BondRef ...");

  848.         oracle.jdbc.pool.OracleDataSource ds = new oracle.jdbc.pool.OracleDataSource();

  849.         ds.setDriverType ("thin");

  850.         ds.setServerName ("localhost");

  851.         ds.setPortNumber (1521);

  852.         ds.setDatabaseName ("XE");

  853.         ds.setUser ("hr");

  854.         ds.setPassword ("hr");

  855.         java.sql.Connection con = ds.getConnection();

  856.         java.sql.Statement stmt = con.createStatement();

  857.         try {
  858.             inValData = new java.io.BufferedReader (new java.io.FileReader
  859.                 ("c:\\Lakshmi\\java\\BondAnal\\Data\\BondStaticRef\\FullTickers_Base\\RefDataSet.csv"));
  860.         } catch (java.lang.Exception e) {
  861.             System.out.println ("Cannot open Val Data record file");

  862.             return;
  863.         }

  864.         while (null != (strValDataLine = inValData.readLine())) {
  865.             int iNumRecord = 0;
  866.             java.lang.String astrValRecord[] = new java.lang.String[33];

  867.             java.util.StringTokenizer stValData = new java.util.StringTokenizer (strValDataLine, ",");

  868.             while (stValData.hasMoreTokens()) {
  869.                 java.lang.String stValDataField = stValData.nextToken();

  870.                 astrValRecord[iNumRecord++] = stValDataField;
  871.             }

  872.             java.lang.String strSQLClear = makeSQLClearISINOrCUSIP (astrValRecord);

  873.             if (null != strSQLClear) stmt.executeUpdate (strSQLClear);

  874.             java.lang.String strSQLInsert = makeSQLInsert (astrValRecord);

  875.             if (null != strSQLInsert) {
  876.                 if (m_bBlog) System.out.println ("SQL[" + iNumBonds + "]: " + strSQLInsert);

  877.                 stmt.executeUpdate (strSQLInsert);
  878.             }

  879.             ++iNumBonds;
  880.         }

  881.         inValData.close();

  882.         System.out.println ("Loaded " + iNumBonds + " into BondRef."); */
  883.     }

  884.     private static void LoadBondRef2()
  885.         throws java.lang.Exception
  886.     {
  887.         int iNumBonds = 0;
  888.         java.lang.String strBondRef2Line = "";
  889.         java.io.BufferedReader inBondRef2 = null;

  890.         System.out.println ("Loading BondRef2 ...");

  891.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  892.             ("c:\\Lakshmi\\java\\BondAnal\\Config.xml");

  893.         try {
  894.             inBondRef2 = new java.io.BufferedReader (new java.io.FileReader
  895.                 ("C:\\Lakshmi\\RefDataAndMarks\\17Jan2012\\Bond.csv"));
  896.         } catch (java.lang.Exception e) {
  897.             System.out.println ("Cannot open BondRef record file");

  898.             return;
  899.         }

  900.         while (null != (strBondRef2Line = inBondRef2.readLine())) {
  901.             java.lang.String[] astrBondRef2Record = strBondRef2Line.split (",");

  902.             java.lang.String strSQLClear = makeSQLClearISIN2 (astrBondRef2Record);

  903.             if (null != strSQLClear) stmt.executeUpdate (strSQLClear);

  904.             java.lang.String strSQLInsert = makeSQLInsert2 (astrBondRef2Record);

  905.             if (null != strSQLInsert) {
  906.                 if (m_bBlog) System.out.println ("SQL[" + iNumBonds + "]: " + strSQLInsert);

  907.                 stmt.executeUpdate (strSQLInsert);
  908.             }

  909.             ++iNumBonds;
  910.         }

  911.         inBondRef2.close();

  912.         System.out.println ("Loaded " + iNumBonds + " into BondRef2");
  913.     }

  914.     private static void LoadBondRef_FODATA()
  915.         throws java.lang.Exception
  916.     {
  917.         int iNumBonds = 0;
  918.         java.lang.String strBondRefLine = "";
  919.         java.io.BufferedReader inBondRef = null;

  920.         System.out.println ("Loading BondRef_FODATA ...");

  921.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  922.             ("c:\\Lakshmi\\java\\BondAnal\\Config.xml");

  923.         try {
  924.             inBondRef = new java.io.BufferedReader (new java.io.FileReader
  925.                 ("C:\\Lakshmi\\RefDataAndMarks\\17Jan2012\\Bond.csv"));
  926.         } catch (java.lang.Exception e) {
  927.             System.out.println ("Cannot open BondRef record file");

  928.             return;
  929.         }

  930.         while (null != (strBondRefLine = inBondRef.readLine())) {
  931.             java.lang.String[] astrBondRefRecord = strBondRefLine.split (",");

  932.             java.lang.String strSQLClear = makeSQLClear_FODATA (astrBondRefRecord);

  933.             if (null != strSQLClear) stmt.executeUpdate (strSQLClear);

  934.             java.lang.String strSQLInsert = makeSQLInsert_FODATA (astrBondRefRecord);

  935.             if (null != strSQLInsert) {
  936.                 if (m_bBlog) System.out.println ("SQL[" + iNumBonds + "]: " + strSQLInsert);

  937.                 stmt.executeUpdate (strSQLInsert);
  938.             }

  939.             ++iNumBonds;
  940.         }

  941.         inBondRef.close();

  942.         System.out.println ("Loaded " + iNumBonds + " into BondRef_FODATA");
  943.     }

  944.     private static void LoadBondMarks()
  945.         throws java.lang.Exception
  946.     {
  947.         int iNumMarks = 0;
  948.         java.lang.String strMarksLine = "";
  949.         java.io.BufferedReader inMarks = null;

  950.         System.out.println ("Loading BondMark ...");

  951.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  952.             ("c:\\Lakshmi\\java\\BondAnal\\Config.xml");

  953.         try {
  954.             inMarks = new java.io.BufferedReader (new java.io.FileReader
  955.                 ("c:\\Lakshmi\\java\\BondAnal\\Data\\BondStaticRef\\Marks\\MatrixPricer_Prices_0715.csv"));
  956.         } catch (java.lang.Exception e) {
  957.             System.out.println ("Cannot open marks file");

  958.             return;
  959.         }

  960.         while (null != (strMarksLine = inMarks.readLine())) {
  961.             int iNumMarksRecord = 0;
  962.             java.lang.String astrMarks[] = new java.lang.String[9];

  963.             java.util.StringTokenizer stMarks = new java.util.StringTokenizer (strMarksLine, ",");

  964.             while (stMarks.hasMoreTokens()) {
  965.                 java.lang.String strMarks = stMarks.nextToken();

  966.                 astrMarks[iNumMarksRecord++] = strMarks;
  967.             }

  968.             java.lang.String strSQLClearMarks = makeSQLClearMarksForBondDate (astrMarks);

  969.             if (null != strSQLClearMarks) {
  970.                 if (m_bBlog) System.out.println ("SQL[" + iNumMarks + "]: " + strSQLClearMarks);

  971.                 stmt.executeUpdate (strSQLClearMarks);
  972.             }

  973.             java.lang.String strSQLInsertMarks = makeSQLBondMarksInsert (astrMarks);

  974.             if (null != strSQLInsertMarks) {
  975.                 if (m_bBlog) System.out.println ("SQL[" + iNumMarks + "]: " + strSQLInsertMarks);

  976.                 stmt.executeUpdate (strSQLInsertMarks);
  977.             }

  978.             ++iNumMarks;
  979.         }

  980.         inMarks.close();

  981.         System.out.println ("Loaded " + iNumMarks + " into BondMark.");
  982.     }

  983.     private static void LoadHolidayCalendar (
  984.         final java.lang.String strHolLoc,
  985.         final java.lang.String strHolLocFile)
  986.         throws java.lang.Exception
  987.     {
  988.         java.lang.String strHolsLine = "";
  989.         java.io.BufferedReader inHolCal = null;

  990.         System.out.println ("Loading " + strHolLoc + " from " + strHolLocFile);

  991.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  992.             ("c:\\Lakshmi\\java\\BondAnal\\Config.xml");

  993.         try {
  994.             inHolCal = new java.io.BufferedReader (new java.io.FileReader (strHolLocFile));
  995.         } catch (java.lang.Exception e) {
  996.             System.out.println ("Cannot open hol cal file");

  997.             return;
  998.         }

  999.         while (null != (strHolsLine = inHolCal.readLine())) {
  1000.             java.util.StringTokenizer stHolFields = new java.util.StringTokenizer (strHolsLine, "   ");

  1001.             try {
  1002.                 int iFieldNum = 0;
  1003.                 java.lang.String[] astrHolFields = new java.lang.String[2];
  1004.                 astrHolFields[0] = "";
  1005.                 astrHolFields[1] = "";
  1006.                 java.lang.String strORAHoliday = "";

  1007.                 while (stHolFields.hasMoreTokens() && iFieldNum < astrHolFields.length)
  1008.                     astrHolFields[iFieldNum++] = stHolFields.nextToken();

  1009.                 java.lang.String strTextHol = astrHolFields[0].trim();

  1010.                 try {
  1011.                     strORAHoliday = org.drip.analytics.date.DateUtil.MakeOracleDateFromYYYYMMDD (strTextHol);
  1012.                 } catch (java.lang.Exception e) {
  1013.                     java.util.StringTokenizer stTextHol = new java.util.StringTokenizer (strTextHol, " ");

  1014.                     strORAHoliday = org.drip.analytics.date.DateUtil.MakeOracleDateFromYYYYMMDD
  1015.                         (stTextHol.nextToken().trim());
  1016.                 }

  1017.                 java.lang.String strDescription = astrHolFields[1].trim();

  1018.                 if (null != strDescription && !strDescription.isEmpty())
  1019.                     strDescription = strDescription.replaceAll ("'", "");
  1020.                 else
  1021.                     strDescription = "";

  1022.                 stmt.executeUpdate ("delete from Holidays where Location = '" + strHolLoc +
  1023.                     "' and Holiday = '" + strORAHoliday + "'");

  1024.                 stmt.executeUpdate ("insert into Holidays values('" + strHolLoc + "', '" + strORAHoliday +
  1025.                     "', '" + strDescription + "')");
  1026.             } catch (java.lang.Exception e) {
  1027.                 System.out.println (strHolLoc + ": Check line " + strHolsLine);
  1028.             }
  1029.         }

  1030.         inHolCal.close();
  1031.     }

  1032.     private static void LoadHolsToHolderSource (
  1033.         final java.io.BufferedWriter bw,
  1034.         final java.lang.String strHolLoc,
  1035.         final java.lang.String strHolLocFile)
  1036.         throws java.lang.Exception
  1037.     {
  1038.         java.lang.String strHolsLine = "";
  1039.         java.io.BufferedReader inHolCal = null;

  1040.         System.out.println ("Loading " + strHolLoc + " from " + strHolLocFile);

  1041.         try {
  1042.             inHolCal = new java.io.BufferedReader (new java.io.FileReader (strHolLocFile));
  1043.         } catch (java.lang.Exception e) {
  1044.             System.out.println ("Cannot open hol cal file");

  1045.             return;
  1046.         }

  1047.         while (null != (strHolsLine = inHolCal.readLine())) {
  1048.             java.util.StringTokenizer stHolFields = new java.util.StringTokenizer (strHolsLine, "   ");

  1049.             try {
  1050.                 java.lang.String[] astrHolFields = new java.lang.String[2];
  1051.                 java.lang.String strORAHoliday = "";
  1052.                 astrHolFields[0] = "";
  1053.                 astrHolFields[1] = "";
  1054.                 int iFieldNum = 0;

  1055.                 while (stHolFields.hasMoreTokens() && iFieldNum < astrHolFields.length)
  1056.                     astrHolFields[iFieldNum++] = stHolFields.nextToken();

  1057.                 java.lang.String strTextHol = astrHolFields[0].trim();

  1058.                 try {
  1059.                     strORAHoliday = org.drip.analytics.date.DateUtil.MakeOracleDateFromYYYYMMDD (strTextHol);
  1060.                 } catch (java.lang.Exception e) {
  1061.                     java.util.StringTokenizer stTextHol = new java.util.StringTokenizer (strTextHol, " ");

  1062.                     strORAHoliday = org.drip.analytics.date.DateUtil.MakeOracleDateFromYYYYMMDD
  1063.                         (stTextHol.nextToken().trim());
  1064.                 }

  1065.                 java.lang.String strDescription = astrHolFields[1].trim();

  1066.                 if (null != strDescription && !strDescription.isEmpty())
  1067.                     strDescription = strDescription.replaceAll ("'", "");
  1068.                 else
  1069.                     strDescription = "";

  1070.                 java.lang.String strLocHolDates = "lh.addStaticHoliday (\"" + strORAHoliday + "\", \"" +
  1071.                     strDescription + "\");";

  1072.                 if (m_bBlog) System.out.println (strLocHolDates);

  1073.                 bw.write ("\t\t" + strLocHolDates + "\n\n");
  1074.             } catch (java.lang.Exception e) {
  1075.                 System.out.println (strHolLoc + ": Check line " + strHolsLine);
  1076.             }
  1077.         }

  1078.         bw.flush();

  1079.         inHolCal.close();
  1080.     }

  1081.     private static final void LoadHolCals()
  1082.         throws java.lang.Exception
  1083.     {
  1084.         java.lang.String strHolDir = "c:\\Lakshmi\\java\\BondAnal\\Data\\Holidays\\";

  1085.         java.io.File f = new java.io.File (strHolDir);

  1086.         java.lang.String[] astrFile = f.list();

  1087.         for (int i = 0; i < astrFile.length; ++i) {
  1088.             java.util.StringTokenizer stLoc = new java.util.StringTokenizer (astrFile[i], ".");

  1089.             java.lang.String strPrefix = stLoc.nextToken();

  1090.             if (!"holiday".equalsIgnoreCase (strPrefix)) continue;

  1091.             LoadHolidayCalendar (stLoc.nextToken().toUpperCase(), strHolDir + astrFile[i]);
  1092.         }
  1093.     }

  1094.     private static final void AccumulateHolidays()
  1095.         throws java.lang.Exception
  1096.     {
  1097.         java.lang.String strHolDir = "c:\\Lakshmi\\BondAnal\\Data\\Holidays\\";

  1098.         java.io.File f = new java.io.File (strHolDir);

  1099.         java.lang.String[] astrFile = f.list();

  1100.         for (int i = 0; i < astrFile.length; ++i) {
  1101.             java.util.StringTokenizer stLoc = new java.util.StringTokenizer (astrFile[i], ".");

  1102.             java.lang.String strPrefix = stLoc.nextToken();

  1103.             if (!"holiday".equalsIgnoreCase (strPrefix)) continue;

  1104.             java.lang.String strSuffix = stLoc.nextToken().toUpperCase();

  1105.             java.io.BufferedWriter bw = new java.io.BufferedWriter (new java.io.FileWriter
  1106.                 ("c:\\DRIP\\CreditAnalytics\\org\\drip\\analytics\\holset\\" + strSuffix + "Holiday.java"));

  1107.             bw.write ("\npackage org.drip.analytics.holset;\n\n");

  1108.             bw.write
  1109.                 ("/*\n * -*- mode: java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-\n */\n");

  1110.             bw.write ("\n/*\n *    GENERATED on " + new java.util.Date().toString() +
  1111.                 " ---- DO NOT DELETE\n */\n");

  1112.             bw.write ("\n/*!\n * Copyright (C) 2013 Lakshmi Krishnamurthy\n");

  1113.             bw.write (" * Copyright (C) 2012 Lakshmi Krishnamurthy\n");

  1114.             bw.write (" * Copyright (C) 2011 Lakshmi Krishnamurthy\n *\n");

  1115.             bw.write (" * This file is part of CreditAnalytics, a free-software/open-source library for\n");

  1116.             bw.write (" *       fixed income analysts and developers - http://www.credit-trader.org\n *\n");

  1117.             bw.write (" * CreditAnalytics is a free, full featured, fixed income credit analytics library,");

  1118.             bw.write (" developed with a special focus\n");

  1119.             bw.write (" *       towards the needs of the bonds and credit products community.\n *\n");

  1120.             bw.write (" *  Licensed under the Apache License, Version 2.0 (the \"License\");\n");

  1121.             bw.write (" *       you may not use this file except in compliance with the License.\n");

  1122.             bw.write (" *\n *  You may obtain a copy of the License at\n");

  1123.             bw.write (" *   http://www.apache.org/licenses/LICENSE-2.0\n *\n");

  1124.             bw.write (" *  Unless required by applicable law or agreed to in writing, software\n");

  1125.             bw.write (" *   distributed under the License is distributed on an \"AS IS\" BASIS,\n");

  1126.             bw.write (" *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n");

  1127.             bw.write (" *  \n *  See the License for the specific language governing permissions and\n");

  1128.             bw.write (" *   limitations under the License.\n */\n\n");

  1129.             bw.write ("public class " + strSuffix +
  1130.                 "Holiday implements org.drip.analytics.holset.LocationHoliday {\n");

  1131.             bw.write ("\tpublic " + strSuffix + "Holiday()\n\t{\n\t}\n\n");

  1132.             bw.write ("\tpublic java.lang.String getHolidayLoc()\n\t{\n");

  1133.             bw.write ("\t\treturn \"" + strSuffix + "\";\n\t}\n\n");

  1134.             bw.write ("\tpublic org.drip.analytics.holiday.Locale getHolidaySet()\n\t{");

  1135.             bw.write ("\n\t\torg.drip.analytics.holiday.Locale lh = new\n");

  1136.             bw.write ("\t\t\torg.drip.analytics.holiday.Locale();\n\n");

  1137.             LoadHolsToHolderSource (bw, strSuffix, strHolDir + astrFile[i]);

  1138.             bw.write ("\t\tlh.addStandardWeekend();\n\n");

  1139.             bw.write ("\t\treturn lh;\n\t}\n}\n");

  1140.             bw.close();
  1141.         }
  1142.     }

  1143.     private static final void LoadEOS()
  1144.         throws java.lang.Exception
  1145.     {
  1146.         int iNumSchedules = 0;
  1147.         java.lang.String strEOSLine = "";
  1148.         java.io.BufferedReader inEOS = null;

  1149.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  1150.             ("c:\\Lakshmi\\BondAnal\\Config.xml");

  1151.         System.out.println ("Loading EOS ...");

  1152.         try {
  1153.             inEOS = new java.io.BufferedReader (new java.io.FileReader
  1154.                 ("C:\\Lakshmi\\RefDataAndMarks\\17Jan2012\\OptionSchedule.csv"));
  1155.         } catch (java.lang.Exception e) {
  1156.             System.out.println ("Cannot open EOS file");

  1157.             return;
  1158.         }

  1159.         while (null != (strEOSLine = inEOS.readLine())) {
  1160.             int iNumRecord = 0;
  1161.             java.lang.String astrEOS[] = new java.lang.String[14];

  1162.             java.util.StringTokenizer stEOS = new java.util.StringTokenizer (strEOSLine, ",");

  1163.             while (stEOS.hasMoreTokens()) {
  1164.                 java.lang.String strEOS = stEOS.nextToken();

  1165.                 astrEOS[iNumRecord++] = strEOS;
  1166.             }

  1167.             java.lang.String strClearEOS = ClearISINDateTypeFromEOS (astrEOS);

  1168.             if (null != strClearEOS && !strClearEOS.isEmpty()) stmt.executeQuery (strClearEOS);

  1169.             java.lang.String strInsertEOS = InsertIntoEOS (astrEOS);

  1170.             if (null != strInsertEOS && !strInsertEOS.isEmpty())
  1171.                 stmt.executeQuery (strInsertEOS);

  1172.             ++iNumSchedules;
  1173.         }

  1174.         inEOS.close();

  1175.         System.out.println ("Loaded " + iNumSchedules + " into EOS.");
  1176.     }

  1177.     private static final void LoadAmortizationSchedule()
  1178.         throws java.lang.Exception
  1179.     {
  1180.         int iNumSchedules = 0;
  1181.         java.lang.String strAmortizationScheduleLine = "";
  1182.         java.io.BufferedReader inAmortizationSchedule = null;

  1183.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  1184.             ("c:\\Lakshmi\\java\\BondAnal\\Config.xml");

  1185.         System.out.println ("Loading AmortizationSchedule ...");

  1186.         try {
  1187.             inAmortizationSchedule = new java.io.BufferedReader (new java.io.FileReader
  1188.                 ("C:\\Lakshmi\\RefDataAndMarks\\17Jan2012\\AmortizationSchedule.csv"));
  1189.         } catch (java.lang.Exception e) {
  1190.             System.out.println ("Cannot open AmortizationSchedule file");

  1191.             return;
  1192.         }

  1193.         while (null != (strAmortizationScheduleLine = inAmortizationSchedule.readLine())) {
  1194.             int iNumRecord = 0;
  1195.             java.lang.String astrAmortizationSchedule[] = new java.lang.String[5];

  1196.             java.util.StringTokenizer stAmortizationSchedule = new java.util.StringTokenizer
  1197.                 (strAmortizationScheduleLine, ",");

  1198.             while (stAmortizationSchedule.hasMoreTokens()) {
  1199.                 java.lang.String strAmortizationSchedule = stAmortizationSchedule.nextToken();

  1200.                 astrAmortizationSchedule[iNumRecord++] = strAmortizationSchedule;
  1201.             }

  1202.             java.lang.String strClearAmortizationSchedule = makeSQLClearAmortScheduleEntry
  1203.                 (astrAmortizationSchedule);

  1204.             if (null != strClearAmortizationSchedule && !strClearAmortizationSchedule.isEmpty())
  1205.                 stmt.executeQuery (strClearAmortizationSchedule);

  1206.             java.lang.String strInsertAmortizationSchedule = InsertIntoAmortizationSchedule
  1207.                 (astrAmortizationSchedule);

  1208.             if (null != strInsertAmortizationSchedule && !strInsertAmortizationSchedule.isEmpty())
  1209.                 stmt.executeQuery (strInsertAmortizationSchedule);

  1210.             ++iNumSchedules;
  1211.         }

  1212.         inAmortizationSchedule.close();

  1213.         System.out.println ("Loaded " + iNumSchedules + " into AmortizationSchedule.");
  1214.     }

  1215.     private static final void LoadIREOD()
  1216.         throws java.lang.Exception
  1217.     {
  1218.         int iNumIREOD = 0;
  1219.         java.lang.String strIREODLine = "";
  1220.         java.io.BufferedReader inIREOD = null;

  1221.         System.out.println ("Loading IREOD ...");

  1222.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  1223.             ("c:\\Lakshmi\\BondAnal\\Config.xml");

  1224.         try {
  1225.             inIREOD = new java.io.BufferedReader (new java.io.FileReader
  1226.                 ("C:\\Lakshmi\\RefDataAndMarks\\17Jan2012\\EODIRCurves.csv"));
  1227.         } catch (java.lang.Exception e) {
  1228.             System.out.println ("Cannot open IREOD file");

  1229.             return;
  1230.         }

  1231.         while (null != (strIREODLine = inIREOD.readLine())) {
  1232.             int iNumRecord = 0;
  1233.             java.lang.String astrIREOD[] = new java.lang.String[58];

  1234.             java.util.StringTokenizer stIREOD = new java.util.StringTokenizer (strIREODLine, ",");

  1235.             while (stIREOD.hasMoreTokens())
  1236.                 astrIREOD[iNumRecord++] = stIREOD.nextToken();

  1237.             java.lang.String strClearIREOD = ClearFromIREOD (astrIREOD);

  1238.             if (null != strClearIREOD && !strClearIREOD.isEmpty()) stmt.executeQuery (strClearIREOD);

  1239.             java.lang.String strInsertIREOD = InsertIntoIREOD (astrIREOD);

  1240.             if (null != strInsertIREOD && !strInsertIREOD.isEmpty()) stmt.executeQuery (strInsertIREOD);

  1241.             ++iNumIREOD;
  1242.         }

  1243.         inIREOD.close();

  1244.         System.out.println ("Loaded " + iNumIREOD + " into IR_EOD.");
  1245.     }

  1246.     private static final void LoadBondSPN()
  1247.         throws java.lang.Exception
  1248.     {
  1249.         int iNumSPN = 0;
  1250.         java.lang.String strSPNLine = "";
  1251.         java.io.BufferedReader inSPN = null;

  1252.         System.out.println ("Loading SPN ...");

  1253.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  1254.             ("c:\\Lakshmi\\java\\BondAnal\\Config.xml");

  1255.         try {
  1256.             inSPN = new java.io.BufferedReader (new java.io.FileReader
  1257.                 ("c:\\Lakshmi\\BondAnal\\Data\\BondStaticRef\\Closes\\Bond.csv"));
  1258.         } catch (java.lang.Exception e) {
  1259.             System.out.println ("Cannot open SPN file");

  1260.             return;
  1261.         }

  1262.         while (null != (strSPNLine = inSPN.readLine())) {
  1263.             java.lang.String[] astrSPN = strSPNLine.split (",");

  1264.             java.lang.String strISIN = astrSPN[0];
  1265.             java.lang.String strSPN = astrSPN[3];

  1266.             if (null != strSPN && !strSPN.isEmpty() && null != strSPN && !strSPN.isEmpty()) {
  1267.                 stmt.executeQuery ("update BondRef set IssuerSPN = '" + strSPN + "' where ISIN = '" + strISIN
  1268.                     + "'");

  1269.                 ++iNumSPN;
  1270.             }
  1271.         }

  1272.         System.out.println ("Loaded " + iNumSPN + " SPNs into BondRef.");

  1273.         inSPN.close();
  1274.     }

  1275.     private static final void LoadCREOD()
  1276.         throws java.lang.Exception
  1277.     {
  1278.         int iNumCREOD = 0;
  1279.         java.lang.String strCREODLine = "";
  1280.         java.io.BufferedReader inCREOD = null;

  1281.         System.out.println ("Loading CREOD ...");

  1282.         java.sql.Statement stmt = org.drip.param.config.ConfigLoader.OracleInit
  1283.             ("c:\\Lakshmi\\BondAnal\\Config.xml");

  1284.         try {
  1285.             inCREOD = new java.io.BufferedReader (new java.io.FileReader
  1286.                 ("c:\\Lakshmi\\BondAnal\\Data\\BondStaticRef\\Closes\\EODCR_2Q_2011.csv"));
  1287.         } catch (java.lang.Exception e) {
  1288.             System.out.println ("Cannot open CREOD file");

  1289.             return;
  1290.         }

  1291.         while (null != (strCREODLine = inCREOD.readLine())) {
  1292.             java.lang.String[] astrCREOD = strCREODLine.split (",");

  1293.             java.lang.String strClearCREOD = ClearFromCREOD (astrCREOD);

  1294.             if (null != strClearCREOD && !strClearCREOD.isEmpty()) stmt.executeQuery (strClearCREOD);

  1295.             java.lang.String strInsertCREOD = InsertIntoCREOD (astrCREOD);

  1296.             if (null != strInsertCREOD && !strInsertCREOD.isEmpty()) {
  1297.                 System.out.println (strInsertCREOD);

  1298.                 stmt.executeQuery (strInsertCREOD);
  1299.             }

  1300.             ++iNumCREOD;
  1301.         }

  1302.         System.out.println ("Loaded " + iNumCREOD + " into CREOD.");

  1303.         inCREOD.close();
  1304.     }

  1305.     public static void main (
  1306.         final java.lang.String[] astrArgs)
  1307.         throws java.lang.Exception
  1308.     {
  1309.         if (0 < astrArgs.length && "-loadbondref2".equalsIgnoreCase (astrArgs[0])) {
  1310.             LoadBondRef2();

  1311.             return;
  1312.         }

  1313.         if (0 < astrArgs.length && "-loadbondref_fodata".equalsIgnoreCase (astrArgs[0])) {
  1314.             LoadBondRef_FODATA();

  1315.             return;
  1316.         }

  1317.         if (0 < astrArgs.length && "-bondmarks".equalsIgnoreCase (astrArgs[0])) {
  1318.             LoadBondMarks();

  1319.             return;
  1320.         }

  1321.         if (0 < astrArgs.length && "-holcals".equalsIgnoreCase (astrArgs[0])) {
  1322.             LoadHolCals();

  1323.             return;
  1324.         }

  1325.         if (0 < astrArgs.length && "-acchols".equalsIgnoreCase (astrArgs[0])) {
  1326.             AccumulateHolidays();

  1327.             return;
  1328.         }

  1329.         if (0 < astrArgs.length && "-eos".equalsIgnoreCase (astrArgs[0])) {
  1330.             LoadEOS();

  1331.             return;
  1332.         }

  1333.         if (0 < astrArgs.length && "-amortsched".equalsIgnoreCase (astrArgs[0])) {
  1334.             LoadAmortizationSchedule();

  1335.             return;
  1336.         }

  1337.         if (0 < astrArgs.length && "-ireod".equalsIgnoreCase (astrArgs[0])) {
  1338.             LoadIREOD();

  1339.             return;
  1340.         }

  1341.         if (0 < astrArgs.length && "-creod".equalsIgnoreCase (astrArgs[0])) {
  1342.             LoadCREOD();

  1343.             return;
  1344.         }

  1345.         if (0 < astrArgs.length && "-spn".equalsIgnoreCase (astrArgs[0])) {
  1346.             LoadBondSPN();

  1347.             return;
  1348.         }

  1349.         LoadBondRef();

  1350.         LoadEOS();

  1351.         LoadBondSPN();
  1352.     }
  1353. }