/** | |
* Copyright (c) 2005, 2022, Werner Keil, Ikayzo 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: | |
* Werner Keil - initial API and implementation | |
*/ | |
package org.eclipse.uomo.business.types.impl; | |
import static org.eclipse.uomo.business.types.impl.DataHelper.BDT_DELIM; | |
import org.eclipse.uomo.business.internal.Messages; | |
import org.eclipse.uomo.business.types.BDTHelper; | |
import org.eclipse.uomo.business.types.IBDType; | |
import org.eclipse.uomo.business.types.IMarket; | |
import org.eclipse.uomo.core.ISymbol; | |
import org.eclipse.uomo.core.UOMoRuntimeException; | |
/** | |
* Stock Ticker - composed of market, symbol and country codes - at least one of | |
* market and country will usually be present - if both are missing, we use the | |
* default country | |
* | |
* @author <a href="mailto:uomo@catmedia.us">Werner Keil</a> | |
*/ | |
public class StockTicker implements IBDType, ISymbol { | |
IMarket m_market = null; | |
final String m_sym; | |
String m_country = ""; //$NON-NLS-1$ | |
/** | |
* Stock Ticker constructor using market;sym;country, where at least one of market | |
* and country will usually be present - if both are missing, we use the | |
* default country | |
* | |
* @throws UOMoRuntimeException | |
*/ | |
public StockTicker(String s) throws UOMoRuntimeException { | |
super(); | |
int sp = s.indexOf(BDT_DELIM); | |
if (sp == -1) | |
throw new UOMoRuntimeException(Messages.StockTicker_invalid_symbol + s); | |
else { | |
String tmpMarket = s.substring(0, sp); | |
if (sp > 0) { | |
try { | |
m_market = Market.get(tmpMarket); | |
} // verify market is valid (added Oct. 3) | |
catch (RuntimeException e) { | |
throw new UOMoRuntimeException(Messages.StockTicker_invalid_market | |
+ s); | |
} | |
} | |
String s2 = s.substring(sp + 1); | |
sp = s2.indexOf(BDT_DELIM); | |
if (sp == -1) | |
m_sym = s2; | |
else { | |
m_sym = s2.substring(0, sp); | |
m_country = s2.substring(sp + 1); | |
if (!m_country.equals("") //$NON-NLS-1$ | |
&& !(BDTHelper.getCountries().containsKey(m_country))) | |
throw new UOMoRuntimeException( | |
Messages.StockTicker_invalid_country + s); | |
} | |
} | |
if (m_sym.equals("")) //$NON-NLS-1$ | |
throw new UOMoRuntimeException(Messages.StockTicker_missing_symbol | |
+ s); | |
if (m_market.equals("") && m_country.equals("")) //$NON-NLS-1$ //$NON-NLS-2$ | |
m_country = BDTHelper.DEFAULT_COUNTRY; | |
} | |
/** | |
* Get country String from object | |
*/ | |
public String getCountry() { | |
return m_country; | |
} | |
/** | |
* Get market String from object | |
*/ | |
public IMarket getMarket() { | |
return m_market; | |
} | |
/** | |
* Get symbol String from object | |
*/ | |
public String getSymbol() { | |
return m_sym; | |
} | |
/** | |
* Convert object to String | |
* | |
* @return java.lang.String | |
*/ | |
public String serialize() { | |
String s1 = ""; //$NON-NLS-1$ | |
if (m_market != null && !m_market.equals("")) //$NON-NLS-1$ | |
s1 = m_market.getName(); | |
s1 = s1 + BDT_DELIM + m_sym; | |
if (!m_country.equals("")) //$NON-NLS-1$ | |
s1 = s1 + BDT_DELIM + m_country; | |
return s1; | |
} | |
/** | |
* Create a String from this object | |
* | |
* @return java.lang.String | |
*/ | |
public String toString() { | |
return serialize(); | |
} | |
} |