package org.chartsy.main.managers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import org.chartsy.main.chart.Indicator;
import org.openide.util.Lookup;
/**
*
* @author viorel.gheba
*/
public class IndicatorManager {
private static IndicatorManager instance;
private LinkedHashMap<String, Indicator> indicators;
public static IndicatorManager getDefault() {
if (instance == null) instance = new IndicatorManager();
return instance;
}
private IndicatorManager() {
indicators = new LinkedHashMap<String, Indicator>();
Collection<? extends Indicator> list = Lookup.getDefault().lookupAll(Indicator.class);
for (Indicator i : list) {
indicators.put(i.getName(), i);
}
sort();
}
private void sort()
{
List<String> mapKeys = new ArrayList<String>(indicators.keySet());
Collections.sort(mapKeys);
LinkedHashMap<String, Indicator> someMap = new LinkedHashMap<String, Indicator>();
for (int i = 0; i < mapKeys.size(); i++)
someMap.put(mapKeys.get(i), indicators.get(mapKeys.get(i)));
indicators = someMap;
}
public Indicator getIndicator(String key) {
return indicators.get(key);
}
public List<Indicator> getIndicatorsList() {
List<Indicator> list = new ArrayList<Indicator>();
Iterator<String> it = indicators.keySet().iterator();
while (it.hasNext()) {
list.add(indicators.get(it.next()));
}
return list;
}
public List<String> getIndicators()
{
List<String> list = new ArrayList<String>(indicators.keySet());
Collections.sort(list);
return list;
}
}