blob: 75decc6d59bc48c400d83fe02ff1b16bcead2c28 [file] [log] [blame]
/*******************************************************************************
* 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;
}
}