package org.molgenis.data.aggregation;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import org.molgenis.data.aggregation.AggregateAnonymizer;
import org.molgenis.data.aggregation.AggregateResult;
import org.molgenis.data.aggregation.AnonymizedAggregateResult;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class AggregateAnonymizerImpl implements AggregateAnonymizer
{
@Override
public AnonymizedAggregateResult anonymize(final AggregateResult result, final int threshold)
{
List<List<Long>> anonymizedmatrix = Lists.newArrayList();
for (List<Long> row : result.getMatrix())
{
List<Long> anonymizedRow = Lists.transform(row, new Function<Long, Long>()
{
@Override
public Long apply(Long input)
{
if (input == null) return null;
return input <= threshold ? AGGREGATE_ANONYMIZATION_VALUE : input;
}
});
anonymizedmatrix.add(anonymizedRow);
}
return new AnonymizedAggregateResult(anonymizedmatrix, result.getxLabels(), result.getyLabels(), threshold);
}
}