package org.chartsy.main.favorites.nodes;
import java.util.LinkedList;
/**
*
* @author Viorel
*/
public class RootAPI
{
private LinkedList<StockAPI> stocks;
private LinkedList<FolderAPI> folders;
public RootAPI()
{
this.stocks = new LinkedList<StockAPI>();
this.folders = new LinkedList<FolderAPI>();
}
public void addStock(StockAPI stock)
{
this.stocks.add(stock);
}
public void addStock(StockAPI stock, int index)
{
this.stocks.add(index, stock);
}
public void removeStock(int index)
{
this.stocks.remove(index);
}
public void removeStock(StockAPI stock)
{
this.stocks.remove(stock);
}
public LinkedList<StockAPI> getStocks()
{
return this.stocks;
}
public boolean findStock(StockAPI search)
{
for (StockAPI stock : stocks)
if (stock.hashCode() == search.hashCode())
return true;
for (FolderAPI folder : folders)
{
for (StockAPI stock : folder.getStocks())
if (stock.hashCode() == search.hashCode())
return true;
}
return false;
}
public void addFolder(FolderAPI folder)
{
this.folders.add(folder);
}
public void addFolder(FolderAPI folder, int index)
{
this.folders.add(index, folder);
}
public void removeFolder(int index)
{
this.folders.remove(index);
}
public void removeFolder(FolderAPI folder)
{
this.folders.remove(folder);
}
public LinkedList<FolderAPI> getFolders()
{
return this.folders;
}
public boolean folderExists(FolderAPI folder)
{
return this.folders.contains(folder);
}
public boolean folderNameExists(String folderName)
{
for (FolderAPI folder : folders)
if (folder.getDisplayName().hashCode() == folderName.hashCode())
return true;
return false;
}
public @Override String toString()
{
String newline = System.getProperty("line.separator");
StringBuilder builder = new StringBuilder();
builder.append("--- Stocks ---").append(newline);
for (StockAPI stock : stocks)
builder.append(stock.toString()).append(newline);
builder.append("--- Folders ---").append(newline);
for (FolderAPI folder : folders)
builder.append(folder.toString()).append(newline);
return builder.toString();
}
public @Override boolean equals(Object obj)
{
if (obj == this)
return true;
if (!(obj instanceof RootAPI))
return false;
RootAPI that = (RootAPI) obj;
if (that.hashCode() != hashCode())
return false;
return true;
}
public @Override int hashCode()
{
int hash = 5;
hash = 37 * hash + (this.stocks != null ? this.stocks.hashCode() : 0);
hash = 37 * hash + (this.folders != null ? this.folders.hashCode() : 0);
return hash;
}
}