package org.celllife.idart.update;
import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
import org.apache.log4j.Logger;
import org.celllife.idart.commonobjects.iDartProperties;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.gnu.amSpacks.ILogger;
import org.gnu.amSpacks.app.update.AbstractUpdateJob;
import org.gnu.amSpacks.app.update.UpdateFacade;
public class AutoUpdate {
public class Log4JLogger implements ILogger {
@Override
public void log(String arg0) {
log.info(arg0);
}
}
private static Logger log = Logger.getLogger(AutoUpdate.class);
private final UpdateFacade facade;
public AutoUpdate() {
java.net.URL updateUrl = null;
try {
updateUrl = new java.net.URL(iDartProperties.updateUrl);
} catch (MalformedURLException e) {
log.error(e);
}
facade = new UpdateFacade();
facade.setTargetDirectory(new File("."));
facade.setUrl(updateUrl);
facade.setLog(new Log4JLogger());
}
public boolean updatesAvailable() {
int numUpdates = 0;
try {
numUpdates = facade.getUpdates().size();
} catch (Exception e) {
log.error("Error fetching update list.", e);
}
return numUpdates > 0;
}
public void excecuteUpdate() {
final AbstractUpdateJob updateJob = facade.getUpdateJob(facade
.getUpdates());
updateJob.setLogger(new Log4JLogger());
new Thread(new Runnable() {
@Override
public void run() {
try {
updateJob.run(new NullProgressMonitor());
} catch (InvocationTargetException e) {
log.error("Error occurred during update.", e);
} catch (InterruptedException e) {
log.error("Update aborted.");
}
}
}).start();
}
}