]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - eclipse/plugins/org.argeo.slc.ide.ui/src/main/java/org/argeo/slc/ide/ui/launch/script/SlcScriptLaunchDelegate.java
Restructure SLC
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.ide.ui / src / main / java / org / argeo / slc / ide / ui / launch / script / SlcScriptLaunchDelegate.java
diff --git a/eclipse/plugins/org.argeo.slc.ide.ui/src/main/java/org/argeo/slc/ide/ui/launch/script/SlcScriptLaunchDelegate.java b/eclipse/plugins/org.argeo.slc.ide.ui/src/main/java/org/argeo/slc/ide/ui/launch/script/SlcScriptLaunchDelegate.java
deleted file mode 100644 (file)
index 75d8ce7..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-package org.argeo.slc.ide.ui.launch.script;\r
-\r
-import java.io.ByteArrayInputStream;\r
-import java.io.IOException;\r
-import java.util.List;\r
-import java.util.Properties;\r
-import java.util.Vector;\r
-\r
-import org.argeo.slc.ide.ui.DeployedSlcSystem;\r
-import org.argeo.slc.ide.ui.EmbeddedSlcSystem;\r
-import org.argeo.slc.ide.ui.SlcSystem;\r
-import org.argeo.slc.ide.ui.SlcIdeUiPlugin;\r
-import org.argeo.slc.ide.ui.launch.preferences.SlcLaunchPreferencePage;\r
-import org.eclipse.core.resources.IFile;\r
-import org.eclipse.core.resources.IProject;\r
-import org.eclipse.core.resources.ResourcesPlugin;\r
-import org.eclipse.core.runtime.CoreException;\r
-import org.eclipse.core.runtime.IPath;\r
-import org.eclipse.core.runtime.IProgressMonitor;\r
-import org.eclipse.core.runtime.IStatus;\r
-import org.eclipse.core.runtime.Path;\r
-import org.eclipse.core.runtime.Status;\r
-import org.eclipse.core.variables.IStringVariableManager;\r
-import org.eclipse.core.variables.VariablesPlugin;\r
-import org.eclipse.debug.core.DebugPlugin;\r
-import org.eclipse.debug.core.ILaunch;\r
-import org.eclipse.debug.core.ILaunchConfiguration;\r
-import org.eclipse.debug.core.ILaunchManager;\r
-import org.eclipse.jdt.core.IJavaProject;\r
-import org.eclipse.jdt.core.IType;\r
-import org.eclipse.jdt.core.JavaCore;\r
-import org.eclipse.jdt.core.JavaModelException;\r
-import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;\r
-import org.eclipse.jdt.launching.IVMRunner;\r
-import org.eclipse.jdt.launching.VMRunnerConfiguration;\r
-import org.eclipse.jface.dialogs.ErrorDialog;\r
-import org.eclipse.swt.widgets.Shell;\r
-\r
-public class SlcScriptLaunchDelegate extends\r
-               AbstractJavaLaunchConfigurationDelegate {\r
-       public static final String ID = "org.argeo.slc.launch.slcScriptLaunchType";\r
-\r
-       public final static String ANT_MAIN = "org.apache.tools.ant.Main";\r
-       public final static String SLC_MAIN = "org.argeo.slc.cli.SlcMain";\r
-\r
-       @SuppressWarnings("deprecation")\r
-       public void launch(ILaunchConfiguration configuration, String mode,\r
-                       ILaunch launch, IProgressMonitor monitor) throws CoreException {\r
-               if (!saveBeforeLaunch(configuration, mode, monitor))\r
-                       return;\r
-\r
-               String scriptLocation = configuration.getAttribute(\r
-                               SlcScriptUtils.ATTR_SCRIPT, "");\r
-               if (scriptLocation.equals(""))\r
-                       abort("Script has to be provided", null, 1);\r
-\r
-               IStringVariableManager manager = VariablesPlugin.getDefault()\r
-                               .getStringVariableManager();\r
-               scriptLocation = manager.performStringSubstitution(scriptLocation);\r
-               IPath path = new Path(scriptLocation);\r
-               IFile[] files = ResourcesPlugin.getWorkspace().getRoot()\r
-                               .findFilesForLocation(path);\r
-\r
-               if (files.length == 0)\r
-                       abort("Coulkd not find related file", null, 1);\r
-\r
-               IFile file = (IFile) files[0];\r
-               DebugPlugin\r
-                               .logMessage("Launching " + file.getLocation().toFile(), null);\r
-\r
-               boolean pre093 = configuration.getAttribute(SlcScriptUtils.ATTR_PRE093,\r
-                               false);\r
-\r
-               // Retrieve SLC Runtime\r
-               SlcSystem slcSystem = findSlcSystem(file, pre093);\r
-               if (slcSystem == null)\r
-                       return;\r
-\r
-               IVMRunner vmRunner = slcSystem.getVmInstall().getVMRunner(mode);\r
-               final VMRunnerConfiguration vmConfig;\r
-               if (pre093) {\r
-                       vmConfig = createPre093Config(slcSystem, file, mode);\r
-               } else {\r
-                       vmConfig = createConfig(slcSystem, file, mode, configuration);\r
-               }\r
-               vmRunner.run(vmConfig, launch, monitor);\r
-       }\r
-\r
-       protected SlcSystem findSlcSystem(IFile file, boolean pre093)\r
-                       throws CoreException {\r
-               SlcSystem slcSystem = null;\r
-\r
-               IProject project = file.getProject();\r
-               if (project.getNature("org.eclipse.jdt.core.javanature") != null) {\r
-                       IJavaProject javaProject = JavaCore.create(project);\r
-                       if (checkProjectForEmbedded(javaProject, pre093)) {\r
-                               slcSystem = new EmbeddedSlcSystem(javaProject);\r
-                       }\r
-               }\r
-\r
-               if (slcSystem == null) {\r
-                       String slcRuntimePath = SlcIdeUiPlugin.getDefault()\r
-                                       .getPreferenceStore().getString(\r
-                                                       SlcLaunchPreferencePage.PREF_SLC_RUNTIME_LOCATION);\r
-                       if (slcRuntimePath == null || slcRuntimePath.equals("")) {\r
-                               showError("SLC Runtime path is not set. Set it in Windows > Preferences > SLC");\r
-                               return null;\r
-                       }\r
-\r
-                       slcSystem = new DeployedSlcSystem(slcRuntimePath);\r
-               }\r
-\r
-               return slcSystem;\r
-       }\r
-\r
-       protected boolean checkProjectForEmbedded(IJavaProject project,\r
-                       boolean pre093) {\r
-               try {\r
-                       IType mainType = null;\r
-                       if (pre093)\r
-                               mainType = project.findType(ANT_MAIN);\r
-                       else\r
-                               mainType = project.findType(SLC_MAIN);\r
-\r
-                       if (mainType == null)\r
-                               return false;\r
-                       else\r
-                               return true;\r
-               } catch (JavaModelException e) {\r
-                       e.printStackTrace();\r
-                       return false;\r
-               }\r
-       }\r
-\r
-       // Regular SLC\r
-       protected VMRunnerConfiguration createConfig(SlcSystem deployedSlc,\r
-                       IFile file, String mode, ILaunchConfiguration configuration)\r
-                       throws CoreException {\r
-               VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(SLC_MAIN,\r
-                               deployedSlc.getClasspath());\r
-               vmConfig.setVMArguments(getVmArguments(deployedSlc));\r
-               vmConfig.setWorkingDirectory(file.getLocation().toFile().getParent());\r
-               vmConfig.setProgramArguments(getProgramArguments(deployedSlc, file,\r
-                               mode, configuration));\r
-               return vmConfig;\r
-       }\r
-\r
-       protected String[] getVmArguments(SlcSystem deployedSlc) {\r
-               List<String> list = new Vector<String>();\r
-               if (deployedSlc.getJavaLibraryPath() != null)\r
-                       list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
-               return list.toArray(new String[list.size()]);\r
-       }\r
-\r
-       protected String[] getProgramArguments(SlcSystem deployedSlc, IFile file,\r
-                       String mode, ILaunchConfiguration configuration)\r
-                       throws CoreException {\r
-               List<String> list = new Vector<String>();\r
-\r
-               list.add("--mode");\r
-               list.add("single");\r
-\r
-               // Script\r
-               list.add("--script");\r
-               list.add(file.getLocation().toFile().getAbsolutePath());\r
-\r
-               // Runtime\r
-               String runtime = configuration.getAttribute(\r
-                               SlcScriptUtils.ATTR_RUNTIME, "");\r
-               if (!runtime.equals("")) {\r
-                       list.add("--runtime");\r
-                       list.add(runtime);\r
-               }\r
-\r
-               // Targets\r
-               String targets = configuration.getAttribute(\r
-                               SlcScriptUtils.ATTR_TARGETS, "");\r
-               if (!targets.equals("")) {\r
-                       list.add("--targets");\r
-                       list.add(targets);\r
-               }\r
-\r
-               // Properties\r
-               Properties properties = new Properties();\r
-               String str = configuration.getAttribute(SlcScriptUtils.ATTR_PROPERTIES,\r
-                               "");\r
-               ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes());\r
-               try {\r
-                       properties.load(in);\r
-               } catch (IOException e) {\r
-                       throw new RuntimeException("Cannot read properties", e);\r
-               } finally {\r
-                       if (in != null)\r
-                               try {\r
-                                       in.close();\r
-                               } catch (IOException e) {\r
-                                       // silent\r
-                               }\r
-               }\r
-\r
-               for (Object key : properties.keySet()) {\r
-                       list.add("-p");\r
-                       StringBuffer buf = new StringBuffer("");\r
-                       buf.append(key).append('=').append(properties.get(key));\r
-                       list.add(buf.toString());\r
-               }\r
-\r
-               // Debug mode\r
-               if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
-                       list.add("--property");\r
-                       list.add("log4j.logger.org.argeo.slc=DEBUG");\r
-               }\r
-               return list.toArray(new String[list.size()]);\r
-       }\r
-\r
-       // Pre SLC v0.9.3\r
-       protected VMRunnerConfiguration createPre093Config(SlcSystem deployedSlc,\r
-                       IFile file, String mode) throws CoreException {\r
-               VMRunnerConfiguration vmConfig = new VMRunnerConfiguration(ANT_MAIN,\r
-                               deployedSlc.getClasspath());\r
-               vmConfig.setVMArguments(getPre093VmArguments(deployedSlc));\r
-               vmConfig.setWorkingDirectory(file.getLocation().toFile().getParent());\r
-               vmConfig.setProgramArguments(getPre093ProgramArguments(deployedSlc,\r
-                               file, mode));\r
-               return vmConfig;\r
-       }\r
-\r
-       protected String[] getPre093VmArguments(SlcSystem deployedSlc) {\r
-               List<String> list = new Vector<String>();\r
-               // list.add("-Dant.home=" + deployedSlc.getAntHome());\r
-               if (deployedSlc.getJavaLibraryPath() != null)\r
-                       list.add("-Djava.library.path=" + deployedSlc.getJavaLibraryPath());\r
-               return list.toArray(new String[list.size()]);\r
-       }\r
-\r
-       protected String[] getPre093ProgramArguments(SlcSystem deployedSlc,\r
-                       IFile file, String mode) {\r
-               List<String> list = new Vector<String>();\r
-               list.add("-f");\r
-               list.add(file.getLocation().toFile().getAbsolutePath());\r
-               if (mode.equals(ILaunchManager.DEBUG_MODE)) {\r
-                       list.add("-d");\r
-               }\r
-               return list.toArray(new String[list.size()]);\r
-       }\r
-\r
-       // Utilities\r
-       private static void showError(String message) {\r
-               Shell shell = SlcIdeUiPlugin.getDefault().getWorkbench()\r
-                               .getActiveWorkbenchWindow().getShell();\r
-\r
-               IStatus status = new Status(IStatus.ERROR, SlcIdeUiPlugin.ID,\r
-                               message);\r
-               ErrorDialog.openError(shell, "Error", "Cannot launch SLC script",\r
-                               status);\r
-       }\r
-\r
-}\r