/******************************************************************************* * Copyright (c) 2012 Original authors and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Original authors and others - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.dataset.pricing; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class PricingDataFileLoader<T> { public List<T> loadDataFromFile() throws IOException { List<T> data = new ArrayList<T>(); DelimitedFileReader reader = null; try { reader = new DelimitedFileReader( new BufferedReader(new InputStreamReader( PricingDataFileLoader.class .getResourceAsStream("pricing_data.txt"))), '\t'); if (reader.ready() && reader.markSupported()) { while (reader.read() > 0) { parseTabDelimitedLine(reader.getTabbedLineRead(), data); } } } finally { if (reader != null) { reader.close(); } } return data; } @SuppressWarnings("unchecked") public void parseTabDelimitedLine(StringTokenizer tabs, List<T> data) { while (tabs.hasMoreElements()) { PricingDataBean bean = new PricingDataBean(); bean.setIsin(extractStringFromToken(tabs.nextToken())); bean.setBid(extractDoubleFromToken(tabs.nextToken())); bean.setAsk(extractDoubleFromToken(tabs.nextToken())); bean.setBidYield(extractDoubleFromToken(tabs.nextToken())); bean.setAskYield(extractDoubleFromToken(tabs.nextToken())); bean.setBidSpread(extractDoubleFromToken(tabs.nextToken())); bean.setAskSpread(extractDoubleFromToken(tabs.nextToken())); bean.setBidOverAsk(extractDoubleFromToken(tabs.nextToken())); bean.setBidOverAskP(extractDoubleFromToken(tabs.nextToken())); bean.setBidAskType(extractStringFromToken(tabs.nextToken())); bean.setPricingModel(extractStringFromToken(tabs.nextToken())); bean.setBaseIssue(extractStringFromToken(tabs.nextToken())); /* * bean.setClosingPrice(extractDoubleFromToken(tabs.nextToken())); * bean.setClosingYield(extractDoubleFromToken(tabs.nextToken())); * bean.setClosingSpread(extractDoubleFromToken(tabs.nextToken())); * bean.setPriceChange(extractDoubleFromToken(tabs.nextToken())); * bean.setYieldChange(extractDoubleFromToken(tabs.nextToken())); * bean.setSpreadChange(extractDoubleFromToken(tabs.nextToken())); * * bean.setBasisPointValue(extractDoubleFromToken(tabs.nextToken())) * ; bean.setModDuration(extractDoubleFromToken(tabs.nextToken())); * bean.setConvexity(extractDoubleFromToken(tabs.nextToken())); * bean.setComments(extractStringFromToken(tabs.nextToken())); * bean.setNativeTradingGroup * (extractStringFromToken(tabs.nextToken())); * * bean.setTgPosition(extractDoubleFromToken(tabs.nextToken())); * bean.setTgPL(extractDoubleFromToken(tabs.nextToken())); * bean.setTgClosingPL(extractDoubleFromToken(tabs.nextToken())); * bean * .setTgCostOfInventory(extractDoubleFromToken(tabs.nextToken())); * bean.setTgAverageCost(extractDoubleFromToken(tabs.nextToken())); * bean.setTgUnrealizedPL(extractDoubleFromToken(tabs.nextToken())); * bean.setTgNetPL(extractDoubleFromToken(tabs.nextToken())); */ // new file does not contain these columns /* * bean.setIdnAskYield(extractDoubleFromToken(tabs.nextToken())); * bean.setIdnBid(extractDoubleFromToken(tabs.nextToken())); * bean.setIdnBidSize(extractDoubleFromToken(tabs.nextToken())); * bean.setIdnBidSpread(extractDoubleFromToken(tabs.nextToken())); * bean.setIdnBidYield(extractDoubleFromToken(tabs.nextToken())); * bean.setTdPosition(extractDoubleFromToken(tabs.nextToken())); * bean.setTdTradingPL(extractDoubleFromToken(tabs.nextToken())); * bean.setTdClosingPL(extractDoubleFromToken(tabs.nextToken())); * bean * .setTdCostOfInventory(extractDoubleFromToken(tabs.nextToken())); * bean.setTdAvgCost(extractDoubleFromToken(tabs.nextToken())); * bean.setTdUnrealizedPL(extractDoubleFromToken(tabs.nextToken())); * bean.setTdNetPL(extractDoubleFromToken(tabs.nextToken())); */ bean.setAlias(extractStringFromToken(tabs.nextToken())); bean.setErrorMessage(extractStringFromToken(tabs.nextToken())); bean.setErrorSeverity(extractIntFromToken(tabs.nextToken())); bean.setPricingSource(extractStringFromToken(tabs.nextToken())); bean.setSecurityType(extractStringFromToken(tabs.nextToken())); bean.setComments(extractStringFromToken(tabs.nextToken())); data.add((T) bean); } } private int extractIntFromToken(String token) { System.out.println("int: " + token); return token.trim().equals("") || token.trim().equals("\t") ? 0 : Integer.parseInt(token); } private double extractDoubleFromToken(String token) { System.out.println("double: " + token); return token.trim().equals("") || token.trim().equals("\t") ? 0 : Double.parseDouble(token); } private String extractStringFromToken(String token) { System.out.println("string: " + token); return token == null || (token.trim().equals("") || token.trim().equals("\t")) ? null : token; } }