package com.qubling.sidekick.search; import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import com.qubling.sidekick.instance.Instance; public interface ResultSet<SomeInstance extends Instance<SomeInstance>> extends Collection<SomeInstance>, Iterable<SomeInstance> { public interface Remap<FromInstance extends Instance<FromInstance>, ToInstance extends Instance<ToInstance>> { public Collection<ToInstance> map(FromInstance instance); } public interface OnChangeListener<SomeInstance extends Instance<SomeInstance>> { public void onAdd(SomeInstance instance); public void onRemove(SomeInstance instance); } public <OtherInstance extends Instance<OtherInstance>> void addRemap( ResultSet<OtherInstance> others, Remap<OtherInstance, SomeInstance> map); public SomeInstance get(String key); public SomeInstance get(int index); public int getTotalSize(); public void setTotalSize(int totalSize) throws UnsupportedOperationException; public ArrayList<SomeInstance> toArrayList(); public void addOnChangeListener(OnChangeListener<SomeInstance> listener); public void removeOnChangeListener(OnChangeListener<SomeInstance> listener); public void sort(Comparator<SomeInstance> comparator); public int indexOf(SomeInstance needle); }