package com.kartoflane.common.selfpatch;
import java.io.File;
public class SelfPatcher {
private final SPGetTask getTask;
private final SPPatchTask patchTask;
private final SPRunTask runTask;
public SelfPatcher( SPGetTask get, SPPatchTask patch, SPRunTask run ) {
getTask = get;
patchTask = patch;
runTask = run;
}
public void patch( SPDownloadWindow window ) {
if ( window == null ) {
window = new SPSwingDownloadDialog();
}
getTask.setObserver( window );
SPTaskThread thread = new SPTaskThread( getTask );
window.setTaskThread( thread );
thread.start();
window.spShow();
File downloadedFile = getTask.getResult();
if ( downloadedFile == null ) {
System.err.println( "Get task returned null." );
}
else if ( getTask.isInterrupted() ) {
System.err.println( "Aborted by user." );
}
else if ( getTask.isSuccess() ) {
System.out.println( "Patching..." );
patchTask.patch( downloadedFile );
System.out.println( "Running..." );
runTask.run();
System.out.println( "Exiting..." );
System.exit( 0 );
}
else {
System.err.println( "Download task was not finished successfully." );
}
}
}