001 /******************************************************************************
002 * Copyright (C) MActor Developers. All rights reserved. *
003 * ---------------------------------------------------------------------------*
004 * This file is part of MActor. *
005 * *
006 * MActor is free software; you can redistribute it and/or modify *
007 * it under the terms of the GNU General Public License as published by *
008 * the Free Software Foundation; either version 2 of the License, or *
009 * (at your option) any later version. *
010 * *
011 * MActor is distributed in the hope that it will be useful, *
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
014 * GNU General Public License for more details. *
015 * *
016 * You should have received a copy of the GNU General Public License *
017 * along with MActor; if not, write to the Free Software *
018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA *
019 ******************************************************************************/
020 package org.mactor.framework.spec;
021
022 public class TestDataBundleHtmlParser {
023 /*
024 * List<TestData> dataList = new LinkedList<TestData>(); public void
025 * add(TestData data) { dataList.add(data); } public void insertTable(int
026 * index, TestData data) { dataList.add(index, data); } public void
027 * removeTable(int index) { dataList.remove(index); } public void
028 * removeTable(TestData table) { dataList.remove(table); } public static
029 * TestDataBundleHtmlParser parseFile(File file) throws MactorException {
030 * try { HtmlFileParserCallback parserCallback = new
031 * HtmlFileParserCallback(); Reader reader = new FileReader(file); new
032 * ParserDelegator().parse(reader, parserCallback, true); return
033 * parserCallback.bundle; } catch (Exception e) { throw new
034 * MactorException("Failed to parse the file '" + file.getAbsolutePath() +
035 * "'. Error: " + e, e); } } public static TestDataBundleHtmlParser
036 * parseString(String content) throws MactorException { try {
037 * HtmlFileParserCallback parserCallback = new HtmlFileParserCallback();
038 * Reader reader = new StringReader(content); new
039 * ParserDelegator().parse(reader, parserCallback, true); return
040 * parserCallback.bundle; } catch (Exception e) { throw new
041 * MactorException("Failed to parse the string. Error: " + e, e); } }
042 * private static class HtmlFileParserCallback extends
043 * HTMLEditorKit.ParserCallback { TestDataBundleHtmlParser bundle = new
044 * TestDataBundleHtmlParser(); TestData data = null; List<String> row =
045 * null; boolean inCell = false; int rowIndex = 0; String cellValue = null;
046 * public void handleText(char[] data, int pos) { if (inCell) { cellValue =
047 * new String(data); } } public void handleStartTag(Tag t,
048 * MutableAttributeSet a, int pos) { if (HTML.Tag.TABLE.equals(t)) { data =
049 * new TestData(); rowIndex = -1; } else if (HTML.Tag.TR.equals(t)) {
050 * rowIndex++; if (rowIndex > 1) row = new LinkedList<String>(); } else if
051 * (HTML.Tag.TD.equals(t)) { inCell = true; } } public void handleEndTag(Tag
052 * t, int pos) { if (HTML.Tag.TABLE.equals(t)) { if (data != null) {
053 * bundle.add(data); data = null; } } else if (HTML.Tag.TR.equals(t)) { if
054 * (row != null && data != null) { data.addRow(row); row = null; } } else if
055 * (HTML.Tag.TD.equals(t)) { if (cellValue != null) { if (rowIndex == 0) {
056 * data.setTestSpecPath(cellValue); } else if (rowIndex == 1 && data !=
057 * null) { data.addColumn(cellValue); } else if (data != null && row !=
058 * null) { row.add(cellValue); } } cellValue = null; inCell = false; } } }
059 * public void write(Writer out) throws IOException { for (TestData data :
060 * dataList) { out.write("<html><body>"); data.write(out); out.write("</body></html>"); } }
061 * @Override public String toString() { try { StringWriter sw = new
062 * StringWriter(); write(sw); return sw.toString(); } catch (IOException e) {
063 * throw new RuntimeException(e); // unexpected } } public List<TestData>
064 * getDataList() { return dataList; }
065 *
066 */
067 }