コード例 #1
0
ファイル: Import.java プロジェクト: CptMauli/jgnash
  private CurrencyNode decodeCurrency(final String currency) {

    // Check if the currency is already in the cache.
    if (currencyCache.containsKey(currency)) {
      return currencyCache.get(currency);
    }

    String split[] = CURRENCY_DELIMITER_PATTERN.split(currency);
    String symbol = split[0];

    CurrencyNode node = EngineFactory.getEngine(EngineFactory.DEFAULT).getCurrency(symbol);

    if (node == null) {
      logger.log(Level.INFO, "Converting a commodity into a currency: {0}", symbol);

      Commodity cNode = commodityMap.get(symbol);

      if (cNode != null) {
        node = new CurrencyNode();

        node.setDescription(cNode.description);
        node.setPrefix(cNode.prefix);
        node.setSuffix(cNode.suffix);
        node.setScale(cNode.scale);
        node.setSymbol(cNode.symbol);

        EngineFactory.getEngine(EngineFactory.DEFAULT).addCurrency(node);
      } else {
        // Convert security to currency.  For users who figured out how to push the limits of the
        // jGnash 1.x commodity interface
        SecurityNode sNode = EngineFactory.getEngine(EngineFactory.DEFAULT).getSecurity(symbol);
        if (sNode != null) {
          node = new CurrencyNode();

          node.setDescription(sNode.getDescription());
          node.setPrefix(sNode.getPrefix());
          node.setSuffix(sNode.getSuffix());
          node.setScale(sNode.getScale());
          node.setSymbol(sNode.getSymbol());

          EngineFactory.getEngine(EngineFactory.DEFAULT).addCurrency(node);
        } else {
          logger.log(Level.SEVERE, "Bad file, currency " + symbol + " not mapped", new Exception());
        }
      }
    }

    // Put the currency in the cache.
    currencyCache.put(currency, node);

    return node;
  }