/*
This file is part of jTotus.
jTotus is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
jTotus is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with jTotus. If not, see <http://www.gnu.org/licenses/>.
*/
package org.jtotus.common;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
*
* @author Evgeni Kappinen
*/
public class StockNames {
private Map<String, IndexMarketData> stockMap = new HashMap<String, IndexMarketData>();
private Map<String, IndexMarketData> external = new HashMap<String, IndexMarketData>();
public StockNames() {
//Aliases
//http://en.wikipedia.org/wiki/OMX_Helsinki_25
// Weights are %
stockMap.put("Cargotec Oyj", new IndexMarketData("CGCBV.HSE", 1.0));
stockMap.put("Elisa Oyj", new IndexMarketData("ELI1V.HSE", 3.2));
stockMap.put("Fortum Oyj", new IndexMarketData("FUM1V.HE", 9.8));
stockMap.put("Fortum Oyj", new IndexMarketData("FUM1V.HSE", 9.8));
stockMap.put("Kemira Oyj", new IndexMarketData("KRA1V.HSE", 1.7));
stockMap.put("KONE Oyj", new IndexMarketData("KNEBV.HSE", 7.9));
stockMap.put("Konecranes Oyj", new IndexMarketData("KCR1V.HSE", 2.0));
stockMap.put("Metso Oyj", new IndexMarketData("MEO1V.HSE", 4.4));
stockMap.put("Neste Oil", new IndexMarketData("NES1V.HSE", 2.1));
stockMap.put("Nokia Oyj", new IndexMarketData("NOK1V.HSE", 9.8));
stockMap.put("Nokian Renkaat Oyj", new IndexMarketData("NRE1V.HSE", 3.3));
stockMap.put("Nordea Bank AB", new IndexMarketData("NDA1V.HSE", 4.4));
stockMap.put("Outokumpu Oyj", new IndexMarketData("OUT1V.HSE", 2.4));
stockMap.put("Outotec Oyj", new IndexMarketData("OTE1V.HSE", 1.6));
stockMap.put("Pohjola Bank A", new IndexMarketData("POH1S.HSE", 2.2));
stockMap.put("Rautaruukki Oyj", new IndexMarketData("RTRKS.HSE", 1.8));
stockMap.put("Pohjola Bank A", new IndexMarketData("POH1S.HSE", 2.2));
stockMap.put("Sampo Oyj A", new IndexMarketData("SAMAS.HSE", 10.0));
stockMap.put("Sanoma Oyj", new IndexMarketData("SAA1V.HSE", 2.2));
//FIXME:!! Stora Enso Oyj A -> Stora Enso Oyj R stock!
stockMap.put("Stora Enso Oyj A", new IndexMarketData("STEAV.HSE", 3.9));
stockMap.put("TeliaSonera AB", new IndexMarketData("TLS1V.HSE",6.4));
stockMap.put("Tieto Oyj", new IndexMarketData("TIE1V.HSE", 1.5));
stockMap.put("UPM-Kymmene Oyj", new IndexMarketData("UPM1V.HSE", 6.4));
stockMap.put("Wärtsilä Corporation", new IndexMarketData("WRT1V.HSE", 4.0));
stockMap.put("YIT Oyj", new IndexMarketData("YTY1V.HSE", 2.6));
//TODO:Source -- google.com, op.fi etc... !!!!
external.put("NIKKEI225", new IndexMarketData("INDEXNIKKEI:NI225", 1.0));
// external.put("IP", new IndexMarketData("NYSE:IP", 1.0));
// external.put("GOOGLE", new IndexMarketData("NASDAQ:GOOG", 1.0));
// external.put("Microsoft Corporation", new IndexMarketData("NASDAQ:MSFT", 1.0));
// external.put("LUKOIL CO", new IndexMarketData("PINK:LUKOF", 1.0));
// external.put("RAO GAZPRO", new IndexMarketData("PINK:RGZPF", 1.0));
// external.put("ING Japan TOPIX Index", new IndexMarketData("MUTF:IJIIX", 1.0));
// external.put("FTSE 100", new IndexMarketData("INDEXFTSE:UKX", 1.0));
// external.put("FTSE 250", new IndexMarketData("INDEXFTSE:MCX", 1.0));
//
// //Commodities
// external.put("iPath S&P GSCI Crude Oil Total Return", new IndexMarketData("INDEX%3Aoil", 1.0));
// external.put("iPath Dow Jones-UBS Copper Subindex Total Return ETN", new IndexMarketData("NYSE%3AJJC", 1.0));
// external.put("Dow Jones-UBS Copper Subindex Total Return", new IndexMarketData("INDEXDJX:DJUBHGTR", 1.0));
// external.put("National Aluminium Company Limited", new IndexMarketData("BOM%3A532234", 1.0));
// external.put("Dow Jones U.S. Oil & Gas Index", new IndexMarketData("INDEXDJX%3ADJUSEN", 1.0));
// external.put("Dow Jones Oil & Gas Titans 30 Index", new IndexMarketData("INDEXDJX%3ADJTENG", 1.0));
// external.put("Dow Jones-UBS Heating Oil Subindex", new IndexMarketData("INDEXDJX%3ADJUBSHO", 1.0));
// external.put("Dow Jones U.S. Oil Equipment & Services Index", new IndexMarketData("INDEXDJX%3ADJUSOI", 1.0));
// external.put("Dow Jones Developed Markets Oil & Gas Index", new IndexMarketData("INDEXDJX%3AW3ENE", 1.0));
// external.put("Dow Jones STOXX Americas 600 Financial Services Index", new IndexMarketData("INDEXDJX%3ADJA1FSV", 1.0));
// external.put("Dow Jones-UBS Heating Oil Subindex", new IndexMarketData("INDEXDJX%3ADJUBSHO", 1.0));
// external.put("Dow Jones-UBS Nickel Subindex", new IndexMarketData("INDEXDJX:DJUBSNI", 1.0));
// external.put("Dow Jones-UBS Tin Subindex", new IndexMarketData("INDEXDJX:DJUBSSN", 1.0));
// external.put("Dow Jones-UBS Zinc Subindex", new IndexMarketData("INDEXDJX:DJUBSZS", 1.0));
// external.put("Dow Jones-UBS Corn Subindex", new IndexMarketData("INDEXDJX:DJUBSCN", 1.0));
// external.put("Dow Jones-UBS Soybeans Subindex", new IndexMarketData("INDEXDJX:DJUBSSY", 1.0));
// external.put("Dow Jones-UBS Wheat Subindex", new IndexMarketData("INDEXDJX:DJUBSWH", 1.0));
// external.put("Dow Jones-UBS Cocoa Subindex", new IndexMarketData("INDEXDJX:DJUBSCC", 1.0));
// external.put("Dow Jones-UBS Feeder Cattle Subindex", new IndexMarketData("INDEXDJX:DJUBSFC", 1.0));
// external.put("Dow Jones-UBS Sugar Subindex", new IndexMarketData("INDEXDJX:DJUBSSB", 1.0));
// external.put("Dow Jones Russia Total Stock Market Index (USD)", new IndexMarketData("INDEXDJX:DWRUD", 1.0));
// external.put("Goldman Sachs BRIC A", new IndexMarketData("MUTF:GBRAX", 1.0));
// external.put("Dow Jones BRIC 50 Total Return Index (USD)", new IndexMarketData("INDEXDJX:BRIC50T", 1.0));
// external.put("Dow Jones BRIC 50 Index (USD)", new IndexMarketData("INDEXDJX:BRIC50D", 1.0));
// external.put("ING Euro STOXX 50 Index I", new IndexMarketData("MUTF:IDJIX", 1.0));
}
private class IndexMarketData {
public IndexMarketData(String shortName, double indxWeight) {
this.shortName = shortName;
this.indxWeight = indxWeight;
}
String shortName;
double indxWeight;
}
public Iterator iterator() {
return stockMap.entrySet().iterator();
}
public String getHexName(String name) {
IndexMarketData index = stockMap.get(name);
if (index == null) {
index = external.get(name);
if (index == null) {
System.err.printf("Error: could not locate name for:%s\n", name);
return null;
}
}
return index.shortName;
}
public double getStockWeight(String name) {
IndexMarketData index = stockMap.get(name);
return index.indxWeight;
}
public String[]getNames() {
return stockMap.keySet().toArray(new String [stockMap.keySet().size()]);
}
public String[]getExternals() {
return external.keySet().toArray(new String [external.keySet().size()]);
}
}