private void init(ACTAccountDao _actAccountDao, AXYSSymbolDao _symbolDao) {

    gatherAccount = new GatherAccounts(_actAccountDao);
    gatherAccount.getGCOAccount();

    gatherSymbol = new GatherAxysSymbol(_symbolDao);
    txBlotterList = new ArrayList<AxysBlotter>();

    formatter = new SimpleDateFormat("MM/dd/yyyy");
  }
  // -- private function :
  private void translatePos(SWposition _swpos)
      throws AccountNotFoundException, SymbolNotFoundException, PriceNotFoundException {

    // -- the following objects already populated with full list
    // --accountHandler.getGCOAccount();
    // --symbolHandler.getAxysSymbols();
    // --priceHandler.getAllFIprice4Date(_workingdate);
    Account workingAccount;
    SWprice aprice;
    AxysSymbol asymbol;

    // -- https://gcosite.atlassian.net/browse/BREADY-93
    // -- Filter out CASH?? positions except CASH01 CASH03 CASH07
    // -- This also will filter out the accounts which are not funded
    if (String.valueOf(_swpos.getSECURITY_SYMBOL()).trim().toUpperCase().length() >= 6
        && String.valueOf(_swpos.getSECURITY_SYMBOL())
            .trim()
            .toUpperCase()
            .substring(0, 4)
            .equals("CASH")
        && !(String.valueOf(_swpos.getSECURITY_SYMBOL())
                .trim()
                .toUpperCase()
                .substring(0, 6)
                .equals("CASH01")
            || String.valueOf(_swpos.getSECURITY_SYMBOL())
                .trim()
                .toUpperCase()
                .substring(0, 6)
                .equals("CASH03")
            || String.valueOf(_swpos.getSECURITY_SYMBOL())
                .trim()
                .toUpperCase()
                .substring(0, 6)
                .equals("CASH07"))) {

      return;

    } else {

      // -- Filter out CASH01 CASH03 CASH07 with Zero quantity
      if (String.valueOf(_swpos.getSECURITY_SYMBOL()).trim().toUpperCase().length() >= 6
          && (String.valueOf(_swpos.getSECURITY_SYMBOL())
                  .trim()
                  .toUpperCase()
                  .substring(0, 6)
                  .equals("CASH01")
              || String.valueOf(_swpos.getSECURITY_SYMBOL())
                  .trim()
                  .toUpperCase()
                  .substring(0, 6)
                  .equals("CASH03")
              || String.valueOf(_swpos.getSECURITY_SYMBOL())
                  .trim()
                  .toUpperCase()
                  .substring(0, 6)
                  .equals("CASH07"))
          && Double.valueOf(String.valueOf(_swpos.getUNITS_HELD()).trim()) == 0.0) {

        return;
      }

      // -- get the short name for the associating account number
      workingAccount =
          gatherAccount.getGCOAccountUSingAccountNumberCache(
              String.valueOf(_swpos.getACCOUNT_NUMBER()).trim().toUpperCase());

      // -- get the symbol and its type throws  SymbolNotFoundException
      asymbol =
          this.gatherSymbol.getAxysSymbolcache(
              String.valueOf(
                      gatherSWsymtranlate
                          .getSWsymtranslationcache(
                              String.valueOf(_swpos.getSECURITY_SYMBOL()).trim().toUpperCase())
                          .getSYMBOL())
                  .trim()
                  .toUpperCase());

      // -- get the price
      if (String.valueOf(_swpos.getSECURITY_SYMBOL()).trim().toUpperCase().equals("CASH01")
          || String.valueOf(_swpos.getSECURITY_SYMBOL()).trim().toUpperCase().equals("CASH03")
          || String.valueOf(_swpos.getSECURITY_SYMBOL()).trim().toUpperCase().equals("CASH07")) {
        // -- for CASH01 CASH03 CASH07 are NOT in price file so create one manually with price of 1
        aprice =
            new SWprice(
                "ca".toCharArray(),
                "fcash".toCharArray(),
                "1".toCharArray(),
                _swpos.getSOURCE_DATE(),
                _swpos.getMASTER_ACCOUNT_NUMBER(),
                _swpos.getSOURCE_DATE());
      } else {

        AxysPrice axysprice =
            this.gatherPrice.getAxysPricecache(
                String.valueOf(_swpos.getSECURITY_SYMBOL()).trim().toUpperCase(),
                _swpos.getDATE_SOURCE_DATE());
        aprice = new SWprice(); // -- only close price is currently used in PositionRule4SW class
        aprice.setSECURITY_SYMBOL(axysprice.getCHAR_SYMBOL());
        aprice.setCLOSING_PRICE(axysprice.getCHAR_PRICE());
      }

      PositionRule4SW buyRule = new PositionRule4SW(workingAccount, _swpos, asymbol, aprice);
      txBlotterList = buyRule.appendAxysBlotter(txBlotterList);
    }
  }