package com.limegroup.gnutella.filters.response; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.limewire.core.settings.FilterSettings; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; import com.limegroup.gnutella.filters.KeywordFilter; import com.limegroup.gnutella.filters.PhraseFilter; import com.limegroup.gnutella.filters.URNFilter; @Singleton class FilterFactoryImpl implements FilterFactory { private final Provider<XMLDocFilter> xmlDocFilter; private final Provider<MandragoreWormFilter> wormFilter; private final Provider<ResponseQueryFilter> queryFilter; private final Provider<ProgramsFilter> programsFilter; private final Provider<SecureResultFilter> secureResultFilter; private final Provider<ResponseTypeFilter> typeFilter; private final Provider<MutableGUIDFilter> mutableGUIDFilter; private final Provider<KeywordFilter> keywordFilter; private final Provider<URNFilter> urnFilter; private final Provider<AltLocFilter> altLocFilter; private final Provider<PhraseFilter> phraseFilter; private final Provider<NoExtensionFilter> noExtensionFilter; @Inject public FilterFactoryImpl(Provider<XMLDocFilter> xmlDocFilter, Provider<MandragoreWormFilter> wormFilter, Provider<ResponseQueryFilter> queryFilter, Provider<ProgramsFilter> programsFilter, Provider<SecureResultFilter> secureResultFilter, Provider<ResponseTypeFilter> typeFilter, Provider<MutableGUIDFilter> mutableGUIDFilter, Provider<KeywordFilter> keywordFilter, Provider<URNFilter> urnFilter, Provider<AltLocFilter> altLocFilter, Provider<PhraseFilter> phraseFilter, Provider<NoExtensionFilter> noExtensionFilter) { this.xmlDocFilter = xmlDocFilter; this.wormFilter = wormFilter; this.queryFilter = queryFilter; this.programsFilter = programsFilter; this.secureResultFilter = secureResultFilter; this.typeFilter = typeFilter; this.mutableGUIDFilter = mutableGUIDFilter; this.keywordFilter = keywordFilter; this.urnFilter = urnFilter; this.altLocFilter = altLocFilter; this.phraseFilter = phraseFilter; this.noExtensionFilter = noExtensionFilter; } @Override public ResponseFilter createResponseFilter() { List<ResponseFilter> filters = new ArrayList<ResponseFilter>(); filters.add(altLocFilter.get()); filters.add(urnFilter.get()); filters.add(keywordFilter.get()); if(FilterSettings.FILTER_ADULT.getValue()) filters.add(mutableGUIDFilter.get()); filters.add(wormFilter.get()); filters.add(queryFilter.get()); filters.add(typeFilter.get()); filters.add(secureResultFilter.get()); filters.add(programsFilter.get()); filters.add(xmlDocFilter.get()); filters.add(phraseFilter.get()); filters.add(noExtensionFilter.get()); return new CompoundFilter(filters, Collections.<ResponseFilter>emptyList(), Collections.<SearchResultFilter>emptyList(), Collections.<SearchResultFilter>emptyList()); } @Override public SearchResultFilter createResultFilter() { List<SearchResultFilter> filters = new ArrayList<SearchResultFilter>(); filters.add(urnFilter.get()); filters.add(keywordFilter.get()); filters.add(programsFilter.get()); filters.add(xmlDocFilter.get()); filters.add(phraseFilter.get()); return new CompoundFilter(Collections.<ResponseFilter>emptyList(), Collections.<ResponseFilter>emptyList(), filters, Collections.<SearchResultFilter>emptyList()); } }