+++ /dev/null
-package net.sourceforge.phpdt.internal.launching;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.Writer;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.parsers.SAXParserFactory;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-
-public class PHPRuntime {
- protected static PHPRuntime runtime;
-
- protected List installedInterpreters;
- protected PHPInterpreter selectedInterpreter;
- protected PHPRuntime() {
- super();
- }
-
- public static PHPRuntime getDefault() {
- if (runtime == null) {
- runtime = new PHPRuntime();
- }
- return runtime;
- }
-
- public PHPInterpreter getSelectedInterpreter() {
- if (selectedInterpreter == null) {
- loadRuntimeConfiguration();
- }
- return selectedInterpreter;
- }
-
- public PHPInterpreter getInterpreter(String name) {
- Iterator interpreters = getInstalledInterpreters().iterator();
- while(interpreters.hasNext()) {
- PHPInterpreter each = (PHPInterpreter) interpreters.next();
- if (each.getName().equals(name))
- return each;
- }
-
- return getSelectedInterpreter();
- }
-
- public void setSelectedInterpreter(PHPInterpreter anInterpreter) {
- selectedInterpreter = anInterpreter;
- saveRuntimeConfiguration();
- }
-
- public void addInstalledInterpreter(PHPInterpreter anInterpreter) {
- getInstalledInterpreters().add(anInterpreter);
- if (getInstalledInterpreters().size() == 1)
- setSelectedInterpreter((PHPInterpreter) getInstalledInterpreters().get(0));
-
- saveRuntimeConfiguration();
- }
-
- public List getInstalledInterpreters() {
- if (installedInterpreters == null)
- loadRuntimeConfiguration();
- return installedInterpreters;
- }
-
- public void setInstalledInterpreters(List newInstalledInterpreters) {
- installedInterpreters = newInstalledInterpreters;
- if (installedInterpreters.size() > 0)
- setSelectedInterpreter((PHPInterpreter)installedInterpreters.get(0));
- else
- setSelectedInterpreter(null);
- }
-
- protected void saveRuntimeConfiguration() {
- writeXML(getRuntimeConfigurationWriter());
- }
-
- protected Writer getRuntimeConfigurationWriter() {
- try {
- OutputStream stream = new BufferedOutputStream(new FileOutputStream(getRuntimeConfigurationFile()));
- return new OutputStreamWriter(stream);
- } catch (FileNotFoundException e) {}
-
- return null;
- }
-
- protected void loadRuntimeConfiguration() {
- installedInterpreters = new ArrayList();
- try {
- XMLReader reader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
- reader.setContentHandler(getRuntimeConfigurationContentHandler());
- reader.parse(new InputSource(getRuntimeConfigurationReader()));
- } catch(Exception e) {
- PHPLaunchingPlugin.getDefault().log(e);
- }
- }
-
- protected Reader getRuntimeConfigurationReader() {
- try {
- return new FileReader(getRuntimeConfigurationFile());
- } catch(FileNotFoundException e) {}
- return new StringReader("");
- }
-
- protected void writeXML(Writer writer) {
- try {
- writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig>");
- Iterator interpretersIterator = installedInterpreters.iterator();
- while (interpretersIterator.hasNext()) {
- writer.write("<interpreter name=\"");
-
- PHPInterpreter entry = (PHPInterpreter) interpretersIterator.next();
- writer.write(entry.getName());
- writer.write("\" path=\"");
- writer.write(entry.getInstallLocation().toString());
- writer.write("\"");
- if (entry.equals(selectedInterpreter))
- writer.write(" selected=\"true\"");
-
- writer.write("/>");
- }
- writer.write("</runtimeconfig>");
- writer.flush();
- } catch(IOException e) {
- PHPLaunchingPlugin.log(e);
- }
- }
-
- protected ContentHandler getRuntimeConfigurationContentHandler() {
- return new ContentHandler() {
- public void setDocumentLocator(Locator locator) {}
- public void startDocument() throws SAXException {}
- public void endDocument() throws SAXException {}
- public void startPrefixMapping(String prefix, String uri) throws SAXException {}
- public void endPrefixMapping(String prefix) throws SAXException {}
- public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
- if ("interpreter".equals(qName)) {
- String interpreterName = atts.getValue("name");
- IPath installLocation = new Path(atts.getValue("path"));
- PHPInterpreter interpreter = new PHPInterpreter(interpreterName, installLocation);
- installedInterpreters.add(interpreter);
- if (atts.getValue("selected") != null)
- selectedInterpreter = interpreter;
- }
- }
- public void endElement(String namespaceURI, String localName, String qName) throws SAXException {}
- public void characters(char[] ch, int start, int length) throws SAXException {}
- public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {}
- public void processingInstruction(String target, String data) throws SAXException {}
- public void skippedEntity(String name) throws SAXException {}
- };
- }
-
- protected File getRuntimeConfigurationFile() {
- IPath stateLocation = PHPLaunchingPlugin.getDefault().getStateLocation();
- IPath fileLocation = stateLocation.append("runtimeConfiguration.xml");
- return new File(fileLocation.toOSString());
- }
-}