import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import uk.ac.imperial.lsds.seep.api.API;
import uk.ac.imperial.lsds.seep.api.SeepChooseTask;
import uk.ac.imperial.lsds.seep.api.data.ITuple;
public class Choose implements SeepChooseTask {
private boolean incremental;
public Choose() { }
public Choose(boolean incremental) {
this.incremental = incremental;
}
@Override
public void close() {
// TODO Auto-generated method stub
}
@Override
public void processData(ITuple arg0, API arg1) {
// TODO Auto-generated method stub
}
@Override
public void processDataGroup(List<ITuple> arg0, API arg1) {
// TODO Auto-generated method stub
}
@Override
public void setUp() {
// TODO Auto-generated method stub
}
@Override
public Set<Integer> choose(Map<Integer, List<Object>> arg0) {
Set<Integer> chosenOne = new HashSet<>();
// Non incremental execution
if(!incremental) {
System.out.println("NON-INCREMENTAL CHOOSE");
for(Entry<Integer, List<Object>> obj : arg0.entrySet()) {
chosenOne.add(obj.getKey());
}
return chosenOne;
}
System.out.println("INCREMENTAL CHOOSE");
System.out.println("CHOOSE btw:");
for(Entry<Integer, List<Object>> obj : arg0.entrySet()) {
System.out.print(obj.getKey() + " or ");
}
long highestQuality = -666;
for(Entry<Integer, List<Object>> obj : arg0.entrySet()) {
for(Object o : obj.getValue()) {
// I know the type, as I wrote the evaluators
long quality = (long)o;
System.out.println("is " +quality+ " > " +highestQuality + " ?");
if(quality > highestQuality) {
highestQuality = quality;
chosenOne.add(obj.getKey());
}
}
}
System.out.println("CHOSEN one: " + chosenOne);
return chosenOne;
}
}