package edu.ualberta.med.biobank.treeview.dispatch;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.eclipse.core.runtime.Assert;
import edu.ualberta.med.biobank.common.wrappers.DispatchWrapper;
import edu.ualberta.med.biobank.common.wrappers.OriginInfoWrapper;
import edu.ualberta.med.biobank.treeview.AbstractAdapterBase;
import edu.ualberta.med.biobank.treeview.AbstractSearchedNode;
import edu.ualberta.med.biobank.treeview.AdapterBase;
import edu.ualberta.med.biobank.treeview.DateNode;
import edu.ualberta.med.biobank.treeview.shipment.ShipmentAdapter;
import edu.ualberta.med.biobank.views.SpecimenTransitView;
public class OriginInfoSearchedNode extends AbstractSearchedNode {
public OriginInfoSearchedNode(AdapterBase parent, int id) {
super(parent, id, false);
}
@Override
protected AdapterBase createChildNode(Object child) {
Assert.isTrue(child instanceof DispatchWrapper
|| child instanceof OriginInfoWrapper);
if (child instanceof OriginInfoWrapper)
return new ShipmentAdapter(this, (OriginInfoWrapper) child);
return new DispatchAdapter(this, (DispatchWrapper) child);
}
@Override
protected AdapterBase createChildNode() {
return null;
}
@Override
protected boolean isParentTo(Object parent, Object child) {
if (child instanceof DispatchWrapper) {
return parent.equals(((DispatchWrapper) child).getSenderCenter());
}
return false;
}
@Override
public List<AbstractAdapterBase> search(Class<?> searchedClass,
Integer objectId) {
if (searchedClass.equals(Date.class)) {
List<AbstractAdapterBase> list =
new ArrayList<AbstractAdapterBase>();
for (AbstractAdapterBase child : getChildren()) {
if (child instanceof DateNode
&& ((DateNode) child).getId().equals(objectId))
list.add(child);
}
return list;
}
return searchChildren(searchedClass, objectId);
}
@Override
protected void addNode(Object obj) {
SpecimenTransitView.addToNode(this, obj);
}
@Override
public void rebuild() {
performExpand();
}
@Override
public int compareTo(AbstractAdapterBase o) {
return 0;
}
}