blob: acf0b177fe65fd1dfc200825e252306e32a11e93 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2006 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - Initial Implementation
*
*****************************************************************************/
package org.eclipse.ptp.remotetools.internal.common;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.ptp.remotetools.core.IRemoteScript;
/**
* Default implementation of <code>IRemoteScript</code>.
*
* @author Richard Maciel <b>Review OK</b>
*/
public class RemoteScript implements IRemoteScript {
private final List<String> environment = new ArrayList<String>();
private boolean willForwardX11;
private InputStream inputStream = null;
private OutputStream outputStream = null;
private OutputStream errorStream = null;
private String[] script;
private boolean fetchProcessErrorStream = false;
private boolean fetchProcessInputStream = false;
private boolean fetchProcessOutputStream = false;
private boolean allocateTerminal = false;
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ptp.remotetools.IRemoteScript#addEnvironment(java.lang.String
* )
*/
public void addEnvironment(String variable) {
environment.add(variable);
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ptp.remotetools.core.IRemoteScript#addEnvironment(java.lang
* .String[])
*/
public void addEnvironment(String[] variables) {
environment.addAll(Arrays.asList(variables));
}
public boolean getAllocateTerminal() {
return allocateTerminal;
}
public OutputStream getErrorStream() {
return errorStream;
}
public boolean getFetchProcessErrorStream() {
return fetchProcessErrorStream;
}
public boolean getFetchProcessInputStream() {
return fetchProcessInputStream;
}
public boolean getFetchProcessOutputStream() {
return fetchProcessOutputStream;
}
public InputStream getInputStream() {
return inputStream;
}
public OutputStream getOutputStream() {
return outputStream;
}
public String getScriptString() {
if (script == null) {
return null;
}
StringBuffer sb = new StringBuffer();
for (String env : environment) {
sb.append("export \"" + env + "\"; "); //$NON-NLS-1$ //$NON-NLS-2$
}
for (int i = 0; i < script.length; i++) {
sb.append(script[i] + "; "); //$NON-NLS-1$
}
return sb.toString();
}
public void setAllocateTerminal(boolean flag) {
this.allocateTerminal = flag;
}
public void setFetchProcessErrorStream(boolean flag) {
this.fetchProcessErrorStream = flag;
this.errorStream = null;
}
public void setFetchProcessInputStream(boolean flag) {
this.fetchProcessInputStream = flag;
this.inputStream = null;
}
public void setFetchProcessOutputStream(boolean flag) {
this.fetchProcessOutputStream = flag;
this.outputStream = null;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ptp.remotetools.IRemoteScript#setForwardX11(boolean)
*/
public void setForwardX11(boolean willForward) {
this.willForwardX11 = willForward;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ptp.remotetools.core.IRemoteScript#setProcessErrorStream(
* java.io.OutputStream)
*/
public void setProcessErrorStream(OutputStream output) {
errorStream = output;
fetchProcessErrorStream = false;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ptp.remotetools.IRemoteScript#setProcessInputStream(java.
* io.InputStream)
*/
public void setProcessInputStream(InputStream input) {
inputStream = input;
fetchProcessInputStream = false;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ptp.remotetools.IRemoteScript#setProcessOutputStream(java
* .io.OutputStream)
*/
public void setProcessOutputStream(OutputStream output) {
outputStream = output;
fetchProcessOutputStream = false;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ptp.remotetools.IRemoteScript#setScript(java.lang.String)
*/
public void setScript(String script) {
this.script = new String[1];
this.script[0] = script;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ptp.remotetools.IRemoteScript#setScript(java.lang.String[])
*/
public void setScript(String[] script) {
this.script = script;
}
public boolean willForwardX11() {
return willForwardX11;
}
}