package de.uni_luebeck.inb.krabbenhoeft.eQTL.server.processors;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.entities.Category;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.entities.ColumnForDataSetLayer;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.entities.HajoEntity;
import de.uni_luebeck.inb.krabbenhoeft.eQTL.server.helpers.persistence.CreateAndModifyEntities;
public class FilterByCategoryProcessor extends BaseProcessorImplementation {
private final String column;
private final Category value;
public FilterByCategoryProcessor(String column, String value) {
this.column = column;
this.value = Category.wrap(value);
}
@Override
public void addNewColumns(List<ColumnForDataSetLayer> columns) {
Set<String> retain = new HashSet<String>();
retain.add(value.getCategory());
for (ColumnForDataSetLayer cur : columns) {
if (cur.getName().equals(column))
cur.getValues().retainAll(retain);
}
}
@Override
public int doWork(CreateAndModifyEntities modifier, Iterator<HajoEntity> iter) {
int count = 0;
while (iter.hasNext()) {
final HajoEntity target = iter.next();
if (!target.getCategory(column).equals(value))
continue;
modifier.put(target);
count++;
}
return count;
}
}