package openeye.logic; import com.google.common.collect.Sets; import java.io.File; import java.util.Set; import openeye.protocol.reports.IReport; import openeye.struct.TypedCollections.ReportsList; class ReportContext implements IContext { private final ModMetaCollector collector; private final ReportsList result = new ReportsList(); private final Set<String> addedFileInfos = Sets.newHashSet(); private final Set<String> addedFileContents = Sets.newHashSet(); private final Set<String> unwantedSignatures = Sets.newHashSet(); public ReportContext(ModMetaCollector collector) { this.collector = collector; } @Override public Set<String> getModsForSignature(String signature) { return collector.getModsForSignature(signature); } @Override public File getFileForSignature(String signature) { return collector.getContainerForSignature(signature); } @Override public void queueReport(IReport report) { result.add(report); } @Override public void queueFileReport(String signature) { if (!signature.startsWith("special:")) { if (!addedFileInfos.contains(signature)) { result.add(collector.generateFileReport(signature)); addedFileInfos.add(signature); } } } @Override public void queueFileContents(String signature) { // special files allowed - it may be useful to get minecraft.jar contents if (!addedFileContents.contains(signature)) { result.add(collector.generateFileContentsReport(signature)); addedFileContents.add(signature); } } @Override public void markUnwantedSignature(String signature) { unwantedSignatures.add(signature); } public Set<String> dangerousSignatures() { return unwantedSignatures; } public ReportsList reports() { return result; } }