1 package com.proalpha.pds.ui.handlers;
4 import java.lang.reflect.InvocationTargetException;
7 import org.eclipse.core.commands.ExecutionEvent;
8 import org.eclipse.core.commands.ExecutionException;
9 import org.eclipse.core.resources.ResourcesPlugin;
10 import org.eclipse.core.runtime.IProgressMonitor;
11 import org.eclipse.core.runtime.jobs.ISchedulingRule;
12 import org.eclipse.jface.operation.IRunnableContext;
13 import org.eclipse.jface.operation.IRunnableWithProgress;
14 import org.eclipse.ui.PlatformUI;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
18 import com.proalpha.pds.exception.ProALPHANotAvailableException;
19 import com.proalpha.pds.generator.GeneratorFactory;
20 import com.proalpha.pds.generator.TriggerFileGenerator;
21 import com.proalpha.pds.jaxb.TtDECMissingTrigger;
22 import com.proalpha.pds.jaxb.TtDECMissingTrigger.TtDECMissingTriggerRow;
23 import com.proalpha.pds.paconnector.Activator;
24 import com.proalpha.pds.paconnector.PaProject;
25 import com.proalpha.pds.paconnector.utils.ExceptionUtils;
26 import com.proalpha.pds.paconnector.utils.JaxbUnmarshallerGeneric;
27 import com.proalpha.pds.templates.data.DataContainerFactory;
28 import com.proalpha.pds.templates.data.IGeneratorDataContainer;
29 import com.proalpha.pds.ui.AbstractProAlphaHandler;
34 public Object execute(ExecutionEvent event)
throws ExecutionException {
39 runProgram(paProject);
47 private static void runProgram(
PaProject paProject) {
48 IRunnableWithProgress runnable =
new IRunnableWithProgress() {
53 public void run(IProgressMonitor monitor) {
56 monitor.beginTask(
"Create missing database triggers", 2);
60 monitor.subTask(
"Fetch list of missing triggers");
62 File file = paProject.getBridge().createMissingTriggersXMLFile();
63 logger.debug(
"Exported missing triggers to file {}", file);
65 List<TtDECMissingTriggerRow> missingTriggers = retrieveMissingTriggers(file);
67 monitor.beginTask(
"Create missing database triggers", missingTriggers.size() + 1);
69 for (TtDECMissingTriggerRow trigger : missingTriggers) {
70 String triggerName = trigger.getTriggerFileName().getValue();
71 logger.debug(
"Create trigger {}", triggerName);
72 monitor.subTask(
"Create trigger " + triggerName);
75 .createDataContainer(paProject);
77 datacontainer.setFileName(trigger.getTriggerFileName().getValue());
78 datacontainer.setTriggerMode(trigger.getTriggerMode().getValue());
79 datacontainer.setTableName(trigger.getTriggerTableName().getValue());
80 datacontainer.setAuthor(System.getProperty(
"user.name"));
81 datacontainer.setVersion(paProject.getVersion());
90 }
catch (Exception exception) {
97 private List<TtDECMissingTriggerRow> retrieveMissingTriggers(File file) {
107 ISchedulingRule rule = ResourcesPlugin.getWorkspace().getRoot();
108 IRunnableContext context = PlatformUI.getWorkbench().getProgressService();
111 PlatformUI.getWorkbench().getProgressService().runInUI(context, runnable, rule);
112 }
catch (InvocationTargetException e) {
114 }
catch (InterruptedException e) {
116 Thread.currentThread().interrupt();
List< TtDECMissingTrigger.TtDECMissingTriggerRow > getTtDECMissingTriggerRow()
static Activator getDefault()
static void showAndLogErrorMessage(AbstractUIPlugin plugin, Throwable exception)
PaProject getPaProjectOfEvent(ExecutionEvent event)