/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
/**
*
*/
package org.ebayopensource.turmeric.eclipse.ui.actions;
import java.lang.reflect.InvocationTargetException;
import org.ebayopensource.turmeric.eclipse.utils.plugin.EclipseMessageUtils;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.operation.IRunnableWithProgress;
/**
* An implementation of IRunnableWithProgress which could report result.
* @author yayu
* @since 1.0.0
*/
public abstract class SOAStatusReportingRunnable implements IRunnableWithProgress {
private IStatus status = Status.OK_STATUS;
/**
* Instantiates a new sOA status reporting runnable.
*/
public SOAStatusReportingRunnable() {
super();
}
/**
* {@inheritDoc}
*/
@Override
public final void run(IProgressMonitor monitor) throws InvocationTargetException,
InterruptedException {
try {
status = execute(monitor);
} catch (InvocationTargetException e) {
status = EclipseMessageUtils.createErrorStatus(e);
throw e;
} catch (InterruptedException e) {
status = EclipseMessageUtils.createErrorStatus(e);
throw e;
} catch (CoreException e) {
status = e.getStatus();
throw new InvocationTargetException(e);
} catch (Exception e) {
status = EclipseMessageUtils.createErrorStatus(e);
throw new InvocationTargetException(e);
}
}
/**
* no need to try catch.
*
* @param monitor the monitor
* @return the i status
* @throws Exception the exception
*/
public abstract IStatus execute(IProgressMonitor monitor) throws Exception;
/**
* Gets the status.
*
* @return the status
*/
public IStatus getStatus() {
return status;
}
}