package data;
import java.util.*;
public class StockFromStockCreator extends Object implements StockFromValueCreator {
protected CatalogItemValue m_civEvaluator;
protected Stock m_stSource;
public StockFromStockCreator (Stock stSource,
CatalogItemValue civ) {
super();
m_stSource = stSource;
m_civEvaluator = civ;
}
public Value fillStock (Stock st, Value v, DataBasket db) {
Catalog c = st.getCatalog (db);
if (c != m_stSource.getCatalog (db)) {
throw new CatalogConflictException();
}
List lCI = new LinkedList();
for (Iterator i = c.iterator (db, false); i.hasNext();) {
lCI.add (i.next());
}
if (lCI.size() == 0) {
return v;
}
Collections.sort (lCI,
DefaultCountingStockFromValueCreator.invertedCIValueOrder (m_civEvaluator));
for (Iterator i = lCI.iterator(); i.hasNext();) {
CatalogItem ci = (CatalogItem) i.next();
Value vItemValue = m_civEvaluator.getValue (ci);
for (Iterator j = m_stSource.get (ci.getName(), db, false); j.hasNext();) {
if (vItemValue.compareTo (v) <= 0) {
StockItem si = (StockItem) j.next();
try {
j.remove();
st.add (si, db);
v.subtractAccumulating (vItemValue);
}
catch (UnsupportedOperationException uoe) {}
}
}
}
return v;
}
}