package org.sinrel.engine.actions; import java.util.ArrayList; import org.sinrel.engine.Engine; import org.sinrel.engine.listeners.DownloadListener; public abstract class Downloader { private ArrayList<DownloadListener> listeners = new ArrayList<DownloadListener>(); protected ArrayList< String > additionalFiles = new ArrayList< String >(), additionalArchives = new ArrayList< String >(); public void addDownloadListener( DownloadListener listener ){ listeners.add( listener ); } public void removeDownloadListener( DownloadListener listener ){ listeners.remove( listener ); } public void addAdditionalFile( String filename ) { additionalFiles.add( filename ); } public void removeAdditionalFile( String filename ) { additionalFiles.remove( filename ); } public void addAdditionalArchive( String filename ) { additionalArchives.add( filename ); } public void removeAdditionalArchive( String filename ) { additionalArchives.remove( filename ); } protected void onStartDownload( DownloadEvent e ){ for( DownloadListener dl : listeners ) dl.onStartDownload(e); } protected void onFileChange( DownloadEvent e ){ for( DownloadListener dl : listeners ) dl.onFileChange(e); } protected void onPercentChange( DownloadEvent e ){ for( DownloadListener dl : listeners ) dl.onPercentChange(e); } public abstract DownloadResult downloadClient( Engine e , String clientName ); }