Eclipseplugins
ContentGenerator.java
1 package com.proalpha.pds.generator;
2 
3 import java.io.File;
4 
5 import org.eclipse.core.resources.IFile;
6 import org.eclipse.core.runtime.IProgressMonitor;
7 import org.eclipse.core.runtime.IStatus;
8 import org.eclipse.core.runtime.Status;
9 import org.eclipse.core.runtime.jobs.Job;
10 import org.eclipse.jface.dialogs.MessageDialog;
11 import org.eclipse.ui.PlatformUI;
12 import org.eclipse.ui.progress.UIJob;
13 
14 import com.openedge.pdt.core.template.TemplateGenerationException;
15 import com.proalpha.pds.templates.data.IGeneratorDataContainer;
16 import com.proalpha.pds.templates.helper.IDEUtils;
17 import com.proalpha.pds.templates.jet.IpaTemplateGenerator;
18 import com.proalpha.pds.templates.jet.JetTemplateFactory;
19 
34 public class ContentGenerator extends UIJob {
35 
36  public static final String JOB_FAMILY = "com.proalpha.java.oea.plugins.generator.AbstractGenerator";
37 
38  private final IpaTemplateGenerator templateGenerator;
39 
40  private final IGeneratorDataContainer dataContainer;
41 
42  private Boolean isOpenFileInEditor = Boolean.TRUE;
43 
57  public ContentGenerator(String name, IGeneratorDataContainer dataContainer, String templateGeneratorName)
58  throws Exception {
59 
60  this(name, dataContainer,
61  JetTemplateFactory.getFactoryInstance(dataContainer.getVersion()).getTemplate(templateGeneratorName));
62 
63  }
64 
76  public ContentGenerator(String name, IGeneratorDataContainer dataContainer, IpaTemplateGenerator templateGenerator)
77  throws Exception {
78  super(name);
79 
80  this.dataContainer = dataContainer;
81  this.templateGenerator = templateGenerator;
82  setUser(true);
83  setPriority(Job.SHORT);
84 
85  }
86 
87  private void generate(IProgressMonitor monitor) throws Exception {
88 
89  IFile outputFile = dataContainer.getOutputFile();
90 
91  if (templateGenerator == null) {
92  throw new TemplateGenerationException("Template generator is not set.");
93  }
94 
95  String outputContent = templateGenerator.generate(dataContainer.getDataAsMap());
96 
97  File file = outputFile.getLocation().toFile();
98  ContentWriter contentWriter = new ContentWriter(file, outputContent);
99 
100  contentWriter.writeContentToHarddisk();
101 
102  if (isOpenFileInEditor) {
103  IDEUtils.openFileInEditor(monitor, outputFile);
104  }
105  }
106 
111  @Override
112  public IStatus runInUIThread(IProgressMonitor monitor) {
113  monitor.beginTask("User Exit Include File", 2);
114  monitor.worked(1);
115 
116  try {
117 
118  if (!dataContainer.isGenerationConfirmed()) {
119  return Status.CANCEL_STATUS;
120  }
121 
122  generate(monitor);
123 
124  monitor.done();
125 
126  return Status.OK_STATUS;
127 
128  } catch (Exception e) {
129  MessageDialog.openInformation(PlatformUI.getWorkbench().getDisplay().getActiveShell(), "NO USER EXITS",
130  e.getMessage());
131  return Status.CANCEL_STATUS;
132  }
133  }
134 
135  @Override
136  public boolean belongsTo(Object family) {
137  if (family instanceof String) {
138  return ((String) family).equals(JOB_FAMILY);
139  } else {
140  return false;
141  }
142  }
143 
147  public void disableOpenFileInEditor() {
148 
149  isOpenFileInEditor = Boolean.FALSE;
150 
151  }
152 
157  public void enableOpenFileInEditro() {
158 
159  isOpenFileInEditor = Boolean.TRUE;
160 
161  }
162 
163 }
IStatus runInUIThread(IProgressMonitor monitor)
ContentGenerator(String name, IGeneratorDataContainer dataContainer, String templateGeneratorName)
ContentGenerator(String name, IGeneratorDataContainer dataContainer, IpaTemplateGenerator templateGenerator)
IpaTemplateGenerator getTemplate(String instanceName)
static JetTemplateFactory getFactoryInstance(String proALPHAVersion)