private LinkedList<Product> getProductsFromBiobricks(LinkedList<BioBrick> list)
{
Logger.Log("Device::getProductsFromBioBricks([list: "+Logger.ToString(list)+"])", Logger.Level.DEBUG);
LinkedList<Product> products = new LinkedList<Product>();
Product prod;
RBSBrick rbs;
GeneBrick gene;
float RBSf = 0f;
string molName = "Unknown";
int i = 0;
foreach (BioBrick b in list)
{
Logger.Log("Device::getProductsFromBioBricks: starting treatment of "+b.ToString(), Logger.Level.TRACE);
rbs = b as RBSBrick;
if (rbs != null) {
Logger.Log("Device::getProductsFromBioBricks: rbs spotted", Logger.Level.TRACE);
RBSf = rbs.getRBSFactor();
}
else
{
Logger.Log("Device::getProductsFromBioBricks: not an rbs", Logger.Level.TRACE);
gene = b as GeneBrick;
if (gene != null)
{
molName = gene.getProteinName();
prod = new Product();
prod.setName(molName);
prod.setQuantityFactor(RBSf);
products.AddLast(prod);
}
else
{
if (b as TerminatorBrick == null)
Logger.Log("Device::getProductsFromBioBricks This case should never happen. Bad Biobrick in operon.", Logger.Level.WARN);
else {
break;
}
}
}
i++;
}
while (i > 0) {
list.RemoveFirst();
i--;
}
return products;
}