package topasin.processor;
import java.io.BufferedReader;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import topasin.calculate.AsinDetailAnalysisFields;
import topasin.describer.TopAsinDescriber;
import topasin.filter.AsinDetailFilter;
import topasin.util.AsinDetail;
/**
* fill details to describer
*
* @author mengzang
*
*/
public final class AsinDetailFiller extends AbstractAsinDetailFileProcessor {
private final Map<String, Map<String, AsinDetailAnalysisFields>> group2TopAsins;
private final int source;
public AsinDetailFiller(final BufferedReader asinDetailReader, final int source, final AsinDetailFilter filter,
final Map<String, Map<String, AsinDetailAnalysisFields>> group2TopAsins, final AtomicInteger totalCounter) {
super(asinDetailReader, filter, totalCounter);
this.group2TopAsins = group2TopAsins;
this.source = source;
}
@Override
public void processAsinDetailLine(String asinDetailLine, AsinDetail asinDetail) {
AsinDetailAnalysisFields asin = AsinDetailAnalysisFields.getInstance(asinDetail);
String groupKey = asin.getGroupKey();
Map<String, AsinDetailAnalysisFields> topAsins = group2TopAsins.get(groupKey);
if (topAsins == null) {
return;
}
AsinDetailAnalysisFields topAsin = topAsins.get(asin.getAsin());
if (topAsin != null) {
TopAsinDescriber[] describers = topAsin.getDescribers();
for (TopAsinDescriber describer : describers) {
describer.fillDataForOutput(source, asinDetailLine, asinDetail, topAsin);
}
}
}
}