package org.chartsy.main.data;
import java.io.Serializable;
import java.util.AbstractSet;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.chartsy.main.utils.SerialVersion;
/**
*
* @author viorel.gheba
*/
public class StockSet extends AbstractSet<StockNode> implements Serializable, Cloneable
{
private static final long serialVersionUID = SerialVersion.APPVERSION;
private ArrayList<StockNode> stocks;
public StockSet()
{ stocks = new ArrayList<StockNode>(); }
public StockSet(StockNode[] stocks)
{
this();
for (StockNode stock : stocks)
this.stocks.add(stock);
}
public StockSet(List<StockNode> stocks)
{
this();
for (StockNode stock : stocks)
this.stocks.add(stock);
}
public StockSet(ArrayList<StockNode> stocks)
{
this();
this.stocks = stocks;
}
public StockNode[] stocks()
{
return stocks.toArray(new StockNode[stocks.size()]);
}
public String[] getWords()
{
String[] result = new String[stocks.size()];
for (int i = 0; i < stocks.size(); i++)
result[i] = stocks.get(i).toString();
return result;
}
public @Override Iterator<StockNode> iterator()
{ return stocks.iterator(); }
public @Override int size()
{ return stocks.size(); }
public @Override boolean add(StockNode stock)
{
boolean modified;
if (modified = !stocks.contains(stock))
{
stocks.add(stock);
}
return modified;
}
public @Override boolean remove(Object o)
{
if (o instanceof StockNode)
{
StockNode stock = (StockNode) o;
return stocks.remove(stock);
}
return false;
}
public @Override boolean isEmpty()
{ return stocks.isEmpty(); }
public @Override boolean contains(Object o)
{
if (o instanceof StockNode)
{
StockNode stock = (StockNode) o;
return stocks.contains(stock);
}
return false;
}
public @Override void clear()
{ stocks.clear(); }
@SuppressWarnings({"unchecked"})
public @Override Object clone()
{
try
{
StockSet newSet = (StockSet) super.clone();
newSet.stocks = (ArrayList<StockNode>) stocks.clone();
return newSet;
}
catch (CloneNotSupportedException ex)
{
throw new InternalError();
}
}
}