/**
* This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details.
*/
package edu.illinois.codingspectator.monitor.ui;
import java.text.MessageFormat;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.ui.PlatformUI;
import edu.illinois.codingspectator.monitor.ui.prefs.PrefsFacade;
import edu.illinois.codingspectator.monitor.ui.submission.Submitter;
import edu.illinois.codingspectator.monitor.ui.submission.Submitter.SubmitterException;
/**
*
* @author Mohsen Vakilian
* @author nchen
*
*/
public class Uploader {
private static IStatus reportUploadFailure(SubmitterException exception) {
String errorMessage= Activator.populateMessageWithPluginName(Messages.Uploader_FailedToUploadMessage);
Status errorStatus= Activator.getDefault().createErrorStatus(errorMessage, exception);
Activator.getDefault().log(errorStatus);
return errorStatus;
}
/**
*
* @param submitter
* @return if the method completed successfully.
*/
public static boolean promptUntilValidCredentialsOrCanceled(final Submitter submitter) {
try {
return submitter.promptUntilValidCredentialsOrCanceled();
} catch (SubmitterException subEx) {
reportUploadFailure(subEx);
return false;
}
}
public static void submit(final Submitter submitter) {
if (PlatformUI.getWorkbench().isClosing())
return;
Job job= new Job(MessageFormat.format(Messages.Uploader_UploadingMessage, Messages.PluginName)) {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
submitter.submit();
PrefsFacade.getInstance().updateLastUploadTime();
} catch (SubmitterException exception) {
return reportUploadFailure(exception);
}
return Status.OK_STATUS;
}
};
job.setPriority(Job.LONG);
job.schedule();
}
}