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;
public class PHPRuntime {
protected static PHPRuntime runtime;
-
+
protected List installedInterpreters;
+
protected PHPInterpreter selectedInterpreter;
+
protected PHPRuntime() {
super();
}
}
return runtime;
}
-
+
public PHPInterpreter getSelectedInterpreter() {
if (selectedInterpreter == null) {
loadRuntimeConfiguration();
return selectedInterpreter;
}
- public PHPInterpreter getInterpreter(String name) {
+ public PHPInterpreter getInterpreter(String installLocation) {
Iterator interpreters = getInstalledInterpreters().iterator();
- while(interpreters.hasNext()) {
+ while (interpreters.hasNext()) {
PHPInterpreter each = (PHPInterpreter) interpreters.next();
- if (each.getName().equals(name))
+ if (each.getInstallLocation().toString().equals(installLocation))
return each;
}
-
+
return getSelectedInterpreter();
}
public void addInstalledInterpreter(PHPInterpreter anInterpreter) {
getInstalledInterpreters().add(anInterpreter);
if (getInstalledInterpreters().size() == 1)
- setSelectedInterpreter((PHPInterpreter) getInstalledInterpreters().get(0));
+ setSelectedInterpreter((PHPInterpreter) getInstalledInterpreters()
+ .get(0));
saveRuntimeConfiguration();
}
loadRuntimeConfiguration();
return installedInterpreters;
}
-
+
public void setInstalledInterpreters(List newInstalledInterpreters) {
installedInterpreters = newInstalledInterpreters;
if (installedInterpreters.size() > 0)
- setSelectedInterpreter((PHPInterpreter)installedInterpreters.get(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()));
+ OutputStream stream = new BufferedOutputStream(
+ new FileOutputStream(getRuntimeConfigurationFile()));
return new OutputStreamWriter(stream);
- } catch (FileNotFoundException e) {}
+ } 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) {
+ File file = getRuntimeConfigurationFile();
+ if (file.exists()) {
+ XMLReader reader = SAXParserFactory.newInstance()
+ .newSAXParser().getXMLReader();
+ reader
+ .setContentHandler(getRuntimeConfigurationContentHandler());
+ reader.parse(new InputSource(
+ getRuntimeConfigurationReader(file)));
+ }
+ } catch (Exception e) {
PHPLaunchingPlugin.log(e);
}
}
- protected Reader getRuntimeConfigurationReader() {
+ protected Reader getRuntimeConfigurationReader(File file) {
try {
- return new FileReader(getRuntimeConfigurationFile());
- } catch(FileNotFoundException e) {}
+ return new FileReader(file);
+ } catch (FileNotFoundException e) {
+ }
return new StringReader("");
}
-
+
protected void writeXML(Writer writer) {
try {
- writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><runtimeconfig>");
+ 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());
+
+ 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) {
+ } 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 {
+ 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);
+ java.io.File installLocation;
+ if (interpreterName != null) {
+ installLocation = new File(atts.getValue("path")
+ + File.separatorChar + interpreterName);
+ } else {
+ installLocation = new File(atts.getValue("path"));
+ }
+ PHPInterpreter interpreter = new PHPInterpreter(
+ 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 {}
+
+ 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 stateLocation = PHPLaunchingPlugin.getDefault()
+ .getStateLocation();
IPath fileLocation = stateLocation.append("runtimeConfiguration.xml");
return new File(fileLocation.toOSString());
}