private Account generateAccount(final String accountClass, final Map<String, Object> elementMap) { Engine engine = EngineFactory.getEngine(EngineFactory.DEFAULT); CurrencyNode node = decodeCurrency((String) elementMap.get("commodity")); if (accountClass.equals("RootAccount")) { engine.setDefaultCurrency(node); return engine.getRootAccount(); } Account account = null; switch (accountClass) { case "BankAccount": account = new Account(AccountType.BANK, node); break; case "ExpenseAccount": account = new Account(AccountType.EXPENSE, node); break; case "IncomeAccount": account = new Account(AccountType.INCOME, node); break; case "InvestmentAccount": { account = new Account(AccountType.INVEST, node); String[] securities = (String[]) elementMap.get("securities"); if (securities != null) { for (String s : securities) { SecurityNode sNode = decodeSecurity(s); account.addSecurity(sNode); } } break; } case "MutualFundAccount": { account = new Account(AccountType.MUTUAL, node); String[] securities = (String[]) elementMap.get("securities"); if (securities != null) { for (String s : securities) { SecurityNode sNode = decodeSecurity(s); account.addSecurity(sNode); } } break; } case "CreditAccount": account = new Account(AccountType.CREDIT, node); break; case "CashAccount": account = new Account(AccountType.CASH, node); break; case "EquityAccount": account = new Account(AccountType.EQUITY, node); break; case "LiabilityAccount": account = new Account(AccountType.LIABILITY, node); break; case "AssetAccount": account = new Account(AccountType.ASSET, node); break; default: break; } if (account != null) { account.setName((String) elementMap.get("name")); account.setDescription((String) elementMap.get("description")); account.setNotes((String) elementMap.get("notes")); account.setVisible(Boolean.parseBoolean((String) elementMap.get("visible"))); account.setPlaceHolder(Boolean.parseBoolean((String) elementMap.get("placeHolder"))); account.setAccountNumber((String) elementMap.get("code")); } return account; }