package edt.parser; import edt.core.Author; import edt.core.Section; import edt.core.Document; import edt.core.Paragraph; import java.io.*; public class Parser { private Document _document; private Section _curSection; public Parser() { } public static void main(String[] args) throws Exception { String fileName = System.getProperty("import"); Parser parser = new Parser(); Document doc = parser.parse(fileName); System.out.println(doc.getContent()); } public Document parse(String filename) { BufferedReader reader = null; try { reader = new BufferedReader(new FileReader(filename)); _document = new Document(); _curSection = _document; parseTitle(reader.readLine()); parseAuthors(reader.readLine()); String line; while ((line = reader.readLine()) != null) parseLineContent(line); return _document; } finally { if (reader != null) reader.close(); } } private void parseTitle(String title) { _document.setTitle(title); } private void parseAuthors(String authors) { for(String author : authors.split("\\|")) { String[] str = author.split("\\/"); _document.addAuthor(new Author(str[0], str[1])); } } private void parseLineContent(String line) { String[] content = line.split("\\|"); switch(content[0]) { case "SECTION": // create new section _curSection = new Section(content[2]); _document.addSection(-1, _curSection); if (content[1].length() > 0) _document.indexElement(content[1], _curSection); break; case "PARAGRAPH": // create new paragraph Paragraph par = new Paragraph(content[1]); _curSection.addParagraph(-1, par); break; default: System.err.println("Error in parsing content. Invalid Token " + line); } } }