package org.limewire.core.impl.download.listener; import java.io.File; import org.limewire.core.impl.itunes.ItunesMediator; import org.limewire.core.settings.iTunesSettings; import org.limewire.listener.EventListener; import org.limewire.util.Objects; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; import com.limegroup.gnutella.Downloader; import com.limegroup.gnutella.Downloader.DownloadState; import com.limegroup.gnutella.downloader.CoreDownloader; import com.limegroup.gnutella.downloader.DownloadStateEvent; /** * Listens for the completion of downloads, adding completed ituens supported downloads to the itunes library. */ public class ItunesDownloadListener implements EventListener<DownloadStateEvent> { private final Downloader downloader; private final ItunesMediator itunesMediator; @Inject public ItunesDownloadListener(@Assisted Downloader downloader, ItunesMediator itunesMediator) { this.downloader = Objects.nonNull(downloader, "downloader"); this.itunesMediator = itunesMediator; if(downloader.getState() == DownloadState.COMPLETE) { if(downloader instanceof CoreDownloader) { handleEvent(new DownloadStateEvent((CoreDownloader)downloader, DownloadState.COMPLETE)); } } } @Override public void handleEvent(DownloadStateEvent event) { DownloadState downloadStatus = event.getType(); if(DownloadState.COMPLETE == downloadStatus) { File saveFile = downloader.getSaveFile(); if(saveFile != null) { if (iTunesSettings.ITUNES_SUPPORT_ENABLED.getValue()) { itunesMediator.addSong(saveFile); } } } } }