package com.nvarghese.beowulf.scs.categorizers;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import com.google.code.morphia.Datastore;
import com.nvarghese.beowulf.common.scan.model.WebScanDocument;
import com.nvarghese.beowulf.common.webtest.WebTestType;
import com.nvarghese.beowulf.common.webtest.dao.TestModuleMetaDataDAO;
import com.nvarghese.beowulf.common.webtest.model.TestModuleMetaDataDocument;
import com.nvarghese.beowulf.scs.ScsManager;
public abstract class MultiSetCategorizer extends Categorizer {
protected WebTestType webTestType;
protected Map<String, HashSet<Long>> modulesNumbersByType;
Logger logger = Logger.getLogger(MultiSetCategorizer.class);
public MultiSetCategorizer(Datastore ds, WebScanDocument webScanDocument, WebTestType webTestType) {
super(ds, webScanDocument);
this.webTestType = webTestType;
this.modulesNumbersByType = new HashMap<String, HashSet<Long>>();
}
@Override
public void initialize() {
TestModuleMetaDataDAO testModuleMetaDataDAO = new TestModuleMetaDataDAO(ScsManager.getInstance().getDataStore());
List<TestModuleMetaDataDocument> testModuleMetaDataDocs = testModuleMetaDataDAO.findByTestType(webTestType);
for (TestModuleMetaDataDocument metaDoc : testModuleMetaDataDocs) {
if (getEnabledTestModuleNumbers().contains(metaDoc.getModuleNumber())) {
for (String attr : metaDoc.getTestAttributes()) {
if (modulesNumbersByType.containsKey(attr)) {
modulesNumbersByType.get(attr).add(metaDoc.getModuleNumber());
} else {
HashSet<Long> moduleNumbers = new HashSet<Long>();
moduleNumbers.add(metaDoc.getModuleNumber());
modulesNumbersByType.put(attr, moduleNumbers);
}
}
}
}
}
}