001: /*******************************************************************************
002: * Copyright (c) 2005 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.pde.internal.core.product;
011:
012: import org.eclipse.core.runtime.Platform;
013: import org.eclipse.pde.internal.core.iproduct.IArgumentsInfo;
014: import org.eclipse.pde.internal.core.iproduct.IProductModel;
015: import org.w3c.dom.Node;
016: import org.w3c.dom.NodeList;
017:
018: public class ArgumentsInfo extends ProductObject implements
019: IArgumentsInfo {
020:
021: private static final long serialVersionUID = 1L;
022: private String fProgramArgs = ""; //$NON-NLS-1$
023: private String fProgramArgsLin = ""; //$NON-NLS-1$
024: private String fProgramArgsMac = ""; //$NON-NLS-1$
025: private String fProgramArgsSol = ""; //$NON-NLS-1$
026: private String fProgramArgsWin = ""; //$NON-NLS-1$
027:
028: private String fVMArgs = ""; //$NON-NLS-1$
029: private String fVMArgsLin = ""; //$NON-NLS-1$
030: private String fVMArgsMac = ""; //$NON-NLS-1$
031: private String fVMArgsSol = ""; //$NON-NLS-1$
032: private String fVMArgsWin = ""; //$NON-NLS-1$
033:
034: public ArgumentsInfo(IProductModel model) {
035: super (model);
036: }
037:
038: public void setProgramArguments(String args, int platform) {
039: String old;
040: if (args == null)
041: args = ""; //$NON-NLS-1$
042: switch (platform) {
043: case L_ARGS_ALL:
044: old = fProgramArgs;
045: fProgramArgs = args;
046: if (isEditable())
047: firePropertyChanged(P_PROG_ARGS, old, fProgramArgs);
048: break;
049: case L_ARGS_LINUX:
050: old = fProgramArgsLin;
051: fProgramArgsLin = args;
052: if (isEditable())
053: firePropertyChanged(P_PROG_ARGS_LIN, old,
054: fProgramArgsLin);
055: break;
056: case L_ARGS_MACOS:
057: old = fProgramArgsMac;
058: fProgramArgsMac = args;
059: if (isEditable())
060: firePropertyChanged(P_PROG_ARGS_MAC, old,
061: fProgramArgsMac);
062: break;
063: case L_ARGS_SOLAR:
064: old = fProgramArgsSol;
065: fProgramArgsSol = args;
066: if (isEditable())
067: firePropertyChanged(P_PROG_ARGS_SOL, old,
068: fProgramArgsSol);
069: break;
070: case L_ARGS_WIN32:
071: old = fProgramArgsWin;
072: fProgramArgsWin = args;
073: if (isEditable())
074: firePropertyChanged(P_PROG_ARGS_WIN, old,
075: fProgramArgsWin);
076: break;
077: }
078: }
079:
080: public String getProgramArguments(int platform) {
081: switch (platform) {
082: case L_ARGS_ALL:
083: return fProgramArgs;
084: case L_ARGS_LINUX:
085: return fProgramArgsLin;
086: case L_ARGS_MACOS:
087: return fProgramArgsMac;
088: case L_ARGS_SOLAR:
089: return fProgramArgsSol;
090: case L_ARGS_WIN32:
091: return fProgramArgsWin;
092: }
093: return ""; //$NON-NLS-1$
094: }
095:
096: public String getCompleteProgramArguments(String os) {
097: if (Platform.OS_WIN32.equals(os)) {
098: return getCompleteArgs(getProgramArguments(L_ARGS_WIN32),
099: fProgramArgs);
100: } else if (Platform.OS_LINUX.equals(os)) {
101: return getCompleteArgs(getProgramArguments(L_ARGS_LINUX),
102: fProgramArgs);
103: } else if (Platform.OS_MACOSX.equals(os)) {
104: return getCompleteArgs(getProgramArguments(L_ARGS_MACOS),
105: fProgramArgs);
106: } else if (Platform.OS_SOLARIS.equals(os)) {
107: return getCompleteArgs(getProgramArguments(L_ARGS_SOLAR),
108: fProgramArgs);
109: } else {
110: return getProgramArguments(L_ARGS_ALL);
111: }
112: }
113:
114: public void setVMArguments(String args, int platform) {
115: String old;
116: if (args == null)
117: args = ""; //$NON-NLS-1$
118: switch (platform) {
119: case L_ARGS_ALL:
120: old = fVMArgs;
121: fVMArgs = args;
122: if (isEditable())
123: firePropertyChanged(P_VM_ARGS, old, fVMArgs);
124: break;
125: case L_ARGS_LINUX:
126: old = fVMArgsLin;
127: fVMArgsLin = args;
128: if (isEditable())
129: firePropertyChanged(P_VM_ARGS_LIN, old, fVMArgsLin);
130: break;
131: case L_ARGS_MACOS:
132: old = fVMArgsMac;
133: fVMArgsMac = args;
134: if (isEditable())
135: firePropertyChanged(P_VM_ARGS_MAC, old, fVMArgsMac);
136: break;
137: case L_ARGS_SOLAR:
138: old = fVMArgsSol;
139: fVMArgsSol = args;
140: if (isEditable())
141: firePropertyChanged(P_VM_ARGS_SOL, old, fVMArgsSol);
142: break;
143: case L_ARGS_WIN32:
144: old = fVMArgsWin;
145: fVMArgsWin = args;
146: if (isEditable())
147: firePropertyChanged(P_VM_ARGS_WIN, old, fVMArgsWin);
148: break;
149: }
150: }
151:
152: public String getVMArguments(int platform) {
153: switch (platform) {
154: case L_ARGS_ALL:
155: return fVMArgs;
156: case L_ARGS_LINUX:
157: return fVMArgsLin;
158: case L_ARGS_MACOS:
159: return fVMArgsMac;
160: case L_ARGS_SOLAR:
161: return fVMArgsSol;
162: case L_ARGS_WIN32:
163: return fVMArgsWin;
164: }
165: return ""; //$NON-NLS-1$
166: }
167:
168: public String getCompleteVMArguments(String os) {
169: if (Platform.OS_WIN32.equals(os)) {
170: return getCompleteArgs(getVMArguments(L_ARGS_WIN32),
171: fVMArgs);
172: } else if (Platform.OS_LINUX.equals(os)) {
173: return getCompleteArgs(getVMArguments(L_ARGS_LINUX),
174: fVMArgs);
175: } else if (Platform.OS_MACOSX.equals(os)) {
176: return getCompleteArgs(getVMArguments(L_ARGS_MACOS),
177: fVMArgs);
178: } else if (Platform.OS_SOLARIS.equals(os)) {
179: return getCompleteArgs(getVMArguments(L_ARGS_SOLAR),
180: fVMArgs);
181: } else {
182: return getVMArguments(L_ARGS_ALL);
183: }
184: }
185:
186: private String getCompleteArgs(String platformArgs, String univArgs) {
187: String args = platformArgs;
188: if (univArgs.length() > 0)
189: args = univArgs + " " + args; //$NON-NLS-1$
190: return args.trim();
191: }
192:
193: public void parse(Node node) {
194: NodeList list = node.getChildNodes();
195: for (int i = 0; i < list.getLength(); i++) {
196: Node child = list.item(i);
197: if (child.getNodeType() == Node.ELEMENT_NODE) {
198: if (child.getNodeName().equals(P_PROG_ARGS)) {
199: fProgramArgs = getText(child);
200: } else if (child.getNodeName().equals(P_PROG_ARGS_LIN)) {
201: fProgramArgsLin = getText(child);
202: } else if (child.getNodeName().equals(P_PROG_ARGS_MAC)) {
203: fProgramArgsMac = getText(child);
204: } else if (child.getNodeName().equals(P_PROG_ARGS_SOL)) {
205: fProgramArgsSol = getText(child);
206: } else if (child.getNodeName().equals(P_PROG_ARGS_WIN)) {
207: fProgramArgsWin = getText(child);
208: } else if (child.getNodeName().equals(P_VM_ARGS)) {
209: fVMArgs = getText(child);
210: } else if (child.getNodeName().equals(P_VM_ARGS_LIN)) {
211: fVMArgsLin = getText(child);
212: } else if (child.getNodeName().equals(P_VM_ARGS_MAC)) {
213: fVMArgsMac = getText(child);
214: } else if (child.getNodeName().equals(P_VM_ARGS_SOL)) {
215: fVMArgsSol = getText(child);
216: } else if (child.getNodeName().equals(P_VM_ARGS_WIN)) {
217: fVMArgsWin = getText(child);
218: }
219: }
220: }
221: }
222:
223: private String getText(Node node) {
224: node.normalize();
225: Node text = node.getFirstChild();
226: if (text != null && text.getNodeType() == Node.TEXT_NODE) {
227: return text.getNodeValue();
228: }
229: return ""; //$NON-NLS-1$
230: }
231:
232: public void write(String indent, java.io.PrintWriter writer) {
233: writer.println(indent + "<launcherArgs>"); //$NON-NLS-1$
234: if (fProgramArgs.length() > 0) {
235: writer
236: .println(indent
237: + " " + "<" + P_PROG_ARGS + ">" + getWritableString(fProgramArgs) + "</" + P_PROG_ARGS + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
238: }
239: if (fProgramArgsLin.length() > 0) {
240: writer
241: .println(indent
242: + " " + "<" + P_PROG_ARGS_LIN + ">" + getWritableString(fProgramArgsLin) + "</" + P_PROG_ARGS_LIN + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
243: }
244: if (fProgramArgsMac.length() > 0) {
245: writer
246: .println(indent
247: + " " + "<" + P_PROG_ARGS_MAC + ">" + getWritableString(fProgramArgsMac) + "</" + P_PROG_ARGS_MAC + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
248: }
249: if (fProgramArgsSol.length() > 0) {
250: writer
251: .println(indent
252: + " " + "<" + P_PROG_ARGS_SOL + ">" + getWritableString(fProgramArgsSol) + "</" + P_PROG_ARGS_SOL + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
253: }
254: if (fProgramArgsWin.length() > 0) {
255: writer
256: .println(indent
257: + " " + "<" + P_PROG_ARGS_WIN + ">" + getWritableString(fProgramArgsWin) + "</" + P_PROG_ARGS_WIN + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
258: }
259: if (fVMArgs.length() > 0) {
260: writer
261: .println(indent
262: + " " + "<" + P_VM_ARGS + ">" + getWritableString(fVMArgs) + "</" + P_VM_ARGS + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
263: }
264: if (fVMArgsLin.length() > 0) {
265: writer
266: .println(indent
267: + " " + "<" + P_VM_ARGS_LIN + ">" + getWritableString(fVMArgsLin) + "</" + P_VM_ARGS_LIN + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
268: }
269: if (fVMArgsMac.length() > 0) {
270: writer
271: .println(indent
272: + " " + "<" + P_VM_ARGS_MAC + ">" + getWritableString(fVMArgsMac) + "</" + P_VM_ARGS_MAC + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
273: }
274: if (fVMArgsSol.length() > 0) {
275: writer
276: .println(indent
277: + " " + "<" + P_VM_ARGS_SOL + ">" + getWritableString(fVMArgsSol) + "</" + P_VM_ARGS_SOL + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
278: }
279: if (fVMArgsWin.length() > 0) {
280: writer
281: .println(indent
282: + " " + "<" + P_VM_ARGS_WIN + ">" + getWritableString(fVMArgsWin) + "</" + P_VM_ARGS_WIN + ">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
283: }
284: writer.println(indent + "</launcherArgs>"); //$NON-NLS-1$
285: }
286:
287: }
|