X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/XMLReportHandler.java b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/XMLReportHandler.java new file mode 100644 index 0000000..84ead73 --- /dev/null +++ b/net.sourceforge.phpeclipse.phpunit/src/net/sourceforge/phpeclipse/phpunit/XMLReportHandler.java @@ -0,0 +1,152 @@ +package net.sourceforge.phpeclipse.phpunit; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +public class XMLReportHandler extends DefaultHandler { + + private PHPUnitView view; + + private String currentCommand; + private String currentTestCount; + private String currentTestID; + + public void handle(String report, PHPUnitView view) { + + //TODO : how to parse directly a string? + // now doing it with a stream. + this.view = view; + SAXParser parser; + + System.out.println("handling: " + report); + + try { + + File file = new File("tmp2.xml"); + FileOutputStream out = null; + FileInputStream in = null; + out = new FileOutputStream(file); + //OutputStreamWriter outS = new OutputStreamWriter(out, UTF8); + report += "\n \r"; + out.write(report.getBytes("UTF8")); + out.close(); + in = new FileInputStream(file); + parser = SAXParserFactory.newInstance().newSAXParser(); + parser.parse(in, this); + in.close(); + file.delete(); + + } catch (ParserConfigurationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (SAXException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (FactoryConfigurationError e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (FileNotFoundException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + + } + + /* (non-Javadoc) + * @see org.xml.sax.ContentHandler#endElement(java.lang.String, java.lang.String, java.lang.String) + */ + public void endElement(String arg0, String arg1, String elementName) + throws SAXException { + + // send this current command to view + + } + + /* (non-Javadoc) + * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes) + */ + public void startElement( + String arg0, + String arg1, + String elementName, + Attributes attributes) + throws SAXException { + + System.out.println(arg0 + " - " + arg1 + " - " + elementName); + + + if(elementName == "report") { + + currentCommand = attributes.getValue("command"); + currentTestCount = attributes.getValue("testCount"); + currentTestID = attributes.getValue("testID"); + + //view.handleCommand(currentCommand, currentTestCount, currentTestID); + + if (currentCommand == "testStarted") { + + //view.createNewTest("testName", currentTestID); + //view.markTestStarted(currentTestID); + + } else if (currentCommand == "testFinished") { + + // do nothing wait for verdict + } else if (currentCommand == "endAll") { + + //view.markTestingFinished(); + } + + } else if (elementName == "verdict") { + + String verdict = attributes.getValue("desc"); + +// if( verdict == "passed") +// view.markTestPassed(currentTestID); +// else +// view.markTestFail(currentTestID); + + } else if (elementName == "exceptions") { + + + } else if (elementName == "exception") { + + } + + + } + + public static void main(String[] args) { + + XMLReportHandler handler = new XMLReportHandler(); + String xml = ""; + xml = " "; + handler.handle(xml, null); + + xml = " "; + handler.handle(xml, null); + + xml = " "; + handler.handle(xml, null); + + xml = " "; + handler.handle(xml, null); + } + +} \ No newline at end of file