package org.limewire.core.impl.spam; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.limewire.core.api.search.SearchResult; import org.limewire.core.api.spam.SpamManager; import org.limewire.core.impl.search.RemoteFileDescAdapter; import org.limewire.core.settings.FilterSettings; import com.google.inject.Inject; import com.google.inject.Singleton; import com.limegroup.gnutella.RemoteFileDesc; import com.limegroup.gnutella.SpamServices; @Singleton public class SpamManagerImpl implements SpamManager { private final com.limegroup.gnutella.spam.SpamManager spamManager; private final SpamServices spamServices; @Inject public SpamManagerImpl(com.limegroup.gnutella.spam.SpamManager spamManager, SpamServices spamServices) { this.spamManager = spamManager; this.spamServices = spamServices; } @Override public void clearFilterData() { spamManager.clearFilterData(); } @Override public void handleUserMarkedGood(List<? extends SearchResult> searchResults) { RemoteFileDesc[] remoteFileDescs = buildArray(searchResults); spamManager.handleUserMarkedGood(remoteFileDescs); } @Override public void handleUserMarkedSpam(List<? extends SearchResult> searchResults) { RemoteFileDesc[] remoteFileDescs = buildArray(searchResults); spamManager.handleUserMarkedSpam(remoteFileDescs); } private RemoteFileDesc[] buildArray(List<? extends SearchResult> searchResults) { RemoteFileDesc[] remoteFileDescs = new RemoteFileDesc[searchResults.size()]; int index = 0; for (SearchResult searchResult : searchResults) { RemoteFileDescAdapter remoteFileDescAdapter = (RemoteFileDescAdapter) searchResult; RemoteFileDesc remoteFileDesc = remoteFileDescAdapter.getRfd(); remoteFileDescs[index++] = remoteFileDesc; } return remoteFileDescs; } @Override public void reloadIPFilter() { spamServices.reloadIPFilter(); } @Override public void adjustSpamFilters() { spamServices.adjustSpamFilters(); } @Override public void addToBlackList(String ipAddress) { List<String> blackList = new ArrayList<String>(Arrays.asList(FilterSettings.BLACK_LISTED_IP_ADDRESSES.get())); blackList.add(ipAddress); FilterSettings.USE_NETWORK_FILTER.setValue(true); FilterSettings.BLACK_LISTED_IP_ADDRESSES.set(blackList.toArray(new String[blackList.size()])); reloadIPFilter(); } }