Eclipseplugins
PdsLaunchConfigurator.java
1 package com.proalpha.pds.projconf.configure;
2 
3 import java.util.Arrays;
4 
5 import org.eclipse.core.runtime.CoreException;
6 import org.eclipse.debug.core.DebugPlugin;
7 import org.eclipse.debug.core.ILaunchConfigurationType;
8 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
9 import org.eclipse.debug.core.ILaunchManager;
10 import org.slf4j.Logger;
11 import org.slf4j.LoggerFactory;
12 
13 import com.openedge.pdt.project.launch.ABLLaunchConstants;
14 
19 public class PdsLaunchConfigurator {
20 
21  private static final Logger logger = LoggerFactory.getLogger(PdsLaunchConfigurator.class);
22 
24  private String projectVersion;
25 
27  private String progressVersion;
28 
30  private String startupProgram;
31 
33  private String workingDirectory;
34 
36  private String clientLogDirectory;
37 
39  private String startupParameters;
40 
42  private static final String STREAM_CODE_PAGE = "ISO8859-1";
43 
45  private static final String INTERNAL_CODE_PAGE = "ISO8859-1";
46 
48  private static final String NUM_SEP = "46";
49 
51  private static final String NUM_DEC = "44";
52 
54  private static final String DATE_FORMAT = "dmy";
55 
57  private static final String COLLATION_TABLE = "German-Library";
58 
60  private static final String CASE_TABLE = "Basic";
61 
71  public PdsLaunchConfigurator(String project, String version, String startupProgram, String workingDirectory,
72  String clientLogDirectory, String startupParameters) {
73  this.projectVersion = project;
74  this.progressVersion = version;
75  this.startupProgram = startupProgram;
76  this.workingDirectory = workingDirectory;
77  this.clientLogDirectory = clientLogDirectory;
78  this.startupParameters = startupParameters;
79  }
80 
85 
86  ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
87  ILaunchConfigurationType type = manager.getLaunchConfigurationType(ABLLaunchConstants.ABL_LAUNCH_TYPE);
88 
89  ILaunchConfigurationWorkingCopy configuration;
90  try {
91  configuration = type.newInstance(null, projectVersion);
92 
93  // Main tab settings
94  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_PROJECT_NAME, projectVersion);
95  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_PROGRAM, startupProgram);
96  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_WORKING_DIRECTORY, workingDirectory);
97  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_PROVERSION, progressVersion);
98  // PROPATH tab settings
99  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_PROPATH_USE_DEFAULT, true);
100  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_PROPATH, (String) null);
101 
102  // database tab settings
103  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_USE_PROJECT_DATABASES, true);
104  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_DATABASES, (String) null);
105 
106  // logging tab settings
107  configuration.setAttribute(ABLLaunchConstants.ATTR_LOGGING_APPEND_LOG, true);
108  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_LOGGING_CLIENT_LOG, clientLogDirectory);
109 
110  // culture tab settings
111  configuration.setAttribute(ABLLaunchConstants.ATTR_I18N_CASE_TABLE, CASE_TABLE);
112  configuration.setAttribute(ABLLaunchConstants.ATTR_I18N_COLLATION_TABLE, COLLATION_TABLE);
113  configuration.setAttribute(ABLLaunchConstants.ATTR_I18N_DATE_FORMAT, DATE_FORMAT);
114  configuration.setAttribute(ABLLaunchConstants.ATTR_I18N_FRACTIONAL_SEP, NUM_DEC);
115  configuration.setAttribute(ABLLaunchConstants.ATTR_I18N_THOUSANDS_SEP, NUM_SEP);
116  configuration.setAttribute(ABLLaunchConstants.ATTR_I18N_INTERNAL_CODE_PAGE, INTERNAL_CODE_PAGE);
117  configuration.setAttribute(ABLLaunchConstants.ATTR_I18N_STREAM_CODE_PAGE, STREAM_CODE_PAGE);
118 
119  // Without INWB central functions are missing -> e.g. Connect INWB
120  configuration.setAttribute(ABLLaunchConstants.ATTR_ABL_STARTUP_PARAMETERS,
121  startupParameters.replace(",INWBConnect=no", ""));
122 
123  configuration.setAttribute("org.eclipse.debug.core.MAPPED_RESOURCE_PATHS",
124  Arrays.asList("/" + projectVersion));
125  configuration.setAttribute("org.eclipse.debug.core.MAPPED_RESOURCE_TYPES", Arrays.asList("4"));
126  configuration.setAttribute("org.eclipse.debug.core.capture_output", false);
127  configuration.setAttribute("org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON", false);
128 
129  configuration.doSave();
130  } catch (CoreException e) {
131  logger.error(e.getMessage(), e);
132  }
133  }
134 }
PdsLaunchConfigurator(String project, String version, String startupProgram, String workingDirectory, String clientLogDirectory, String startupParameters)