/*
* Copyright (c) 2004-2011 Marco Maccaferri 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:
* Marco Maccaferri - initial API and implementation
*/
package org.eclipsetrader.ui.charts;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.eclipse.swt.graphics.RGB;
import org.eclipsetrader.core.charts.repository.IParameter;
import org.eclipsetrader.core.internal.charts.repository.Parameter;
public class ChartParameters implements IChartParameters {
private Map<String, String> map = new HashMap<String, String>();
private NumberFormat nf = NumberFormat.getInstance(Locale.US);
private DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //$NON-NLS-1$
public ChartParameters() {
nf.setMinimumFractionDigits(0);
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#getParameterNames()
*/
@Override
public String[] getParameterNames() {
Set<String> c = map.keySet();
return c.toArray(new String[c.size()]);
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#getString(java.lang.String)
*/
@Override
public String getString(String name) {
return map.get(name);
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#getInteger(java.lang.String)
*/
@Override
public Integer getInteger(String name) {
try {
return map.containsKey(name) ? new Integer(nf.parse(map.get(name)).intValue()) : null;
} catch (ParseException e) {
return null;
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#getDouble(java.lang.String)
*/
@Override
public Double getDouble(String name) {
try {
return map.containsKey(name) ? new Double(nf.parse(map.get(name)).doubleValue()) : null;
} catch (ParseException e) {
return null;
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#getColor(java.lang.String)
*/
@Override
public RGB getColor(String name) {
String value = map.get(name);
if (value != null) {
String[] ar = value.split(","); //$NON-NLS-1$
if (ar.length == 3) {
return new RGB(Integer.parseInt(ar[0]), Integer.parseInt(ar[1]), Integer.parseInt(ar[2]));
}
}
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#hasParameter(java.lang.String)
*/
@Override
public boolean hasParameter(String name) {
return map.containsKey(name);
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#setParameter(java.lang.String, java.lang.String)
*/
@Override
public void setParameter(String name, String value) {
if (value != null) {
map.put(name, value);
}
else {
map.remove(name);
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#setParameter(java.lang.String, java.lang.Number)
*/
@Override
public void setParameter(String name, Number value) {
if (value != null) {
map.put(name, nf.format(value));
}
else {
map.remove(name);
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.model.IChartParameters#setParameter(java.lang.String, org.eclipse.swt.graphics.RGB)
*/
@Override
public void setParameter(String name, RGB value) {
if (value != null) {
map.put(name, value.red + "," + value.green + "," + value.blue); //$NON-NLS-1$ //$NON-NLS-2$
}
else {
map.remove(name);
}
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.IChartParameters#getDate(java.lang.String)
*/
@Override
public Date getDate(String name) {
String s = map.get(name);
if (s != null) {
try {
return dateFormat.parse(s);
} catch (Exception e) {
// Do nothing
}
}
return null;
}
/* (non-Javadoc)
* @see org.eclipsetrader.ui.charts.IChartParameters#setParameter(java.lang.String, java.util.Date)
*/
@Override
public void setParameter(String name, Date value) {
if (value != null) {
map.put(name, dateFormat.format(value));
}
else {
map.remove(name);
}
}
public IParameter[] toParametersArray() {
List<Parameter> params = new ArrayList<Parameter>();
for (String name : map.keySet()) {
params.add(new Parameter(name, map.get(name)));
}
return params.toArray(new IParameter[params.size()]);
}
}