package rtt.ui.handlers.tests;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.IHandler;
import org.eclipse.jface.dialogs.Dialog;
import rtt.ui.content.main.ProjectContent;
import rtt.ui.content.testsuite.TestsuiteContent;
import rtt.ui.handlers.AbstractSelectionHandler;
import rtt.ui.dialogs.JUnitExportDialog;
/**
* @author C. B�rger
*/
public class JUnitExportHandler extends AbstractSelectionHandler implements IHandler {
public static final String ID = "rtt.ui.commands.tests.junitexport";
@Override
public Object doExecute(ExecutionEvent event) throws ExecutionException {
ProjectContent projectContent = getProjectContent(event);
TestsuiteContent suiteContent = getSelectedObject(TestsuiteContent.class, event);
JUnitExportDialog exportDialog = new JUnitExportDialog(getParentShell(event), projectContent);
if (exportDialog.open() == Dialog.OK) {
try {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); // ISO 8601 date format
df.setTimeZone(TimeZone.getTimeZone("UTC")); // ISO 8601 requires UTC time zone!
StringBuilder content = new StringBuilder();
if (!exportDialog.getAdaperPackage().getElementName().isEmpty()) {
content.append("package ");
content.append(exportDialog.getAdaperPackage().getElementName());
content.append(";\n\n");
}
content.append("@javax.annotation.Generated(\n");
content.append("\tvalue = \"");
content.append(this.getClass().getCanonicalName());
content.append("\",\n");
content.append("\tdate = \"");
content.append(df.format(new Date()));
content.append("\",\n");
content.append("\tcomments = \"JUnit adapter executing RTT test suite [");
content.append(suiteContent.getText());
content.append("] of project [");
content.append(projectContent.getText());
content.append("] with configuration [");
content.append(projectContent.getProject().getActiveConfiguration().getName());
content.append("].\")\n");
content.append("public class ");
content.append(exportDialog.getAdapterClass());
content.append(" {\n");
content.append("\t@org.junit.Test\n");
content.append("\tpublic void runRTTTestsuite() {\n");
content.append("\t\t// TODO\n");
content.append("\t}\n");
content.append("}\n");
exportDialog.getAdaperPackage().createCompilationUnit(
exportDialog.getAdapterClass() + ".java",
content.toString(),
true,
null);
} catch (Exception exception) {
throw new ExecutionException("Could not export JUnit adapter.", exception);
}
}
return null;
}
}