1.1 --- a/java/alt2xml-bin/nbproject/project.properties Thu Jun 05 14:45:15 2014 +0200
1.2 +++ b/java/alt2xml-bin/nbproject/project.properties Thu Jun 05 15:03:50 2014 +0200
1.3 @@ -30,7 +30,6 @@
1.4 includes=**
1.5 jar.compress=false
1.6 javac.classpath=\
1.7 - ${libs.json-simple.classpath}:\
1.8 ${reference.alt2xml-lib.jar}
1.9 # Space-separated list of extra javac options
1.10 javac.compilerargs=
2.1 --- a/java/alt2xml-bin/src/cz/frantovo/alt2xml/vstup/JsonSimpleContentHandler.java Thu Jun 05 14:45:15 2014 +0200
2.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2.3 @@ -1,135 +0,0 @@
2.4 -package cz.frantovo.alt2xml.vstup;
2.5 -
2.6 -import java.io.IOException;
2.7 -import java.util.Stack;
2.8 -import org.json.simple.parser.ParseException;
2.9 -import org.xml.sax.ContentHandler;
2.10 -import org.xml.sax.SAXException;
2.11 -
2.12 -/**
2.13 - *
2.14 - * @author fiki
2.15 - */
2.16 -public class JsonSimpleContentHandler implements org.json.simple.parser.ContentHandler {
2.17 -
2.18 - /** Sem vypisujeme XML události */
2.19 - private ContentHandler saxVýstup;
2.20 - /** Musíme si pamatovat polohu v XML stromu, abychom věděli, kterou značku kdy uzavřít */
2.21 - private Stack<String> poloha = new Stack<>();
2.22 - /**
2.23 - * Po textových uzlech vkládáme konce elementů rovnou,
2.24 - * ale pokud jeden element končí hned po jiném,
2.25 - * vložíme mezi ně ještě konec řádku a odsazení.
2.26 - */
2.27 - private boolean zalomitŘádek = false;
2.28 -
2.29 - public JsonSimpleContentHandler(ContentHandler saxVýstup) {
2.30 - this.saxVýstup = saxVýstup;
2.31 - }
2.32 -
2.33 - private void začniElement(String název) throws IOException {
2.34 - try {
2.35 - vložOdsazení();
2.36 - saxVýstup.startElement(null, null, název, null);
2.37 - poloha.push(název);
2.38 - } catch (SAXException e) {
2.39 - throw new IOException("Chyba při začátku elementu.", e);
2.40 - }
2.41 - }
2.42 -
2.43 - private void ukončiElement() throws IOException {
2.44 - try {
2.45 - String značka = poloha.pop();
2.46 - if (zalomitŘádek) {
2.47 - vložOdsazení();
2.48 - }
2.49 - zalomitŘádek = true;
2.50 - saxVýstup.endElement(null, null, značka);
2.51 - } catch (SAXException e) {
2.52 - throw new IOException("Chyba při ukončování elementu.", e);
2.53 - }
2.54 - }
2.55 -
2.56 - private void vložOdsazení() throws IOException {
2.57 - /**
2.58 - * TODO: ignorableWhitespace() ?
2.59 - */
2.60 - vložText("\n");
2.61 - for (int i = 0; i < poloha.size(); i++) {
2.62 - vložText("\t");
2.63 - }
2.64 - }
2.65 -
2.66 - private void vložText(String text) throws IOException {
2.67 - try {
2.68 - saxVýstup.characters(text.toCharArray(), 0, text.length());
2.69 - } catch (SAXException e) {
2.70 - throw new IOException("Chyba při vkládání textu.", e);
2.71 - }
2.72 - }
2.73 -
2.74 - @Override
2.75 - public void startJSON() throws ParseException, IOException {
2.76 - try {
2.77 - saxVýstup.startDocument();
2.78 - začniElement("objekt");
2.79 - } catch (SAXException e) {
2.80 - throw new IOException("Chyba při začátku dokumentu.", e);
2.81 - }
2.82 - }
2.83 -
2.84 - @Override
2.85 - public void endJSON() throws ParseException, IOException {
2.86 - try {
2.87 - ukončiElement();
2.88 - vložText("\n");
2.89 - saxVýstup.endDocument();
2.90 - } catch (SAXException e) {
2.91 - throw new IOException(e);
2.92 - }
2.93 - }
2.94 -
2.95 - @Override
2.96 - public boolean startObject() throws ParseException, IOException {
2.97 - // System.err.println("startObject");
2.98 - return true;
2.99 - }
2.100 -
2.101 - @Override
2.102 - public boolean endObject() throws ParseException, IOException {
2.103 - // System.err.println("endObject");
2.104 - return true;
2.105 - }
2.106 -
2.107 - @Override
2.108 - public boolean startObjectEntry(String key) throws ParseException, IOException {
2.109 - začniElement(key);
2.110 - return true;
2.111 - }
2.112 -
2.113 - @Override
2.114 - public boolean endObjectEntry() throws ParseException, IOException {
2.115 - ukončiElement();
2.116 - // System.err.println("endObjectEntry");
2.117 - return true;
2.118 - }
2.119 -
2.120 - @Override
2.121 - public boolean startArray() throws ParseException, IOException {
2.122 - // System.err.println("startArray");
2.123 - return true;
2.124 - }
2.125 -
2.126 - @Override
2.127 - public boolean endArray() throws ParseException, IOException {
2.128 - // System.err.println("endArray");
2.129 - return true;
2.130 - }
2.131 -
2.132 - @Override
2.133 - public boolean primitive(Object value) throws ParseException, IOException {
2.134 - vložText(String.valueOf(value));
2.135 - zalomitŘádek = false;
2.136 - return true;
2.137 - }
2.138 -}
3.1 --- a/java/alt2xml-bin/src/cz/frantovo/alt2xml/vstup/SuperReader.java Thu Jun 05 14:45:15 2014 +0200
3.2 +++ b/java/alt2xml-bin/src/cz/frantovo/alt2xml/vstup/SuperReader.java Thu Jun 05 15:03:50 2014 +0200
3.3 @@ -4,8 +4,8 @@
3.4 import java.io.InputStreamReader;
3.5 import java.util.HashMap;
3.6 import java.util.Map;
3.7 -import org.json.simple.parser.JSONParser;
3.8 -import org.json.simple.parser.ParseException;
3.9 +//import org.json.simple.parser.JSONParser;
3.10 +//import org.json.simple.parser.ParseException;
3.11 import org.xml.sax.ContentHandler;
3.12 import org.xml.sax.DTDHandler;
3.13 import org.xml.sax.EntityResolver;
3.14 @@ -33,15 +33,17 @@
3.15 /**
3.16 * TODO: rozpornat formát vstupu a podle toho delegovat
3.17 */
3.18 - JSONParser p = new JSONParser();
3.19 + //JSONParser p = new JSONParser();
3.20 InputStreamReader vstup = new InputStreamReader(input.getByteStream());
3.21 - JsonSimpleContentHandler handler = new JsonSimpleContentHandler(contentHandler);
3.22 + //JsonSimpleContentHandler handler = new JsonSimpleContentHandler(contentHandler);
3.23
3.24 + /*
3.25 try {
3.26 p.parse(vstup, handler);
3.27 } catch (ParseException e) {
3.28 throw new SAXException("Chyba při načítání JSONu", e);
3.29 }
3.30 + */
3.31 }
3.32
3.33 @Override
4.1 --- a/java/alt2xml-in-json/nbproject/project.properties Thu Jun 05 14:45:15 2014 +0200
4.2 +++ b/java/alt2xml-in-json/nbproject/project.properties Thu Jun 05 15:03:50 2014 +0200
4.3 @@ -30,7 +30,8 @@
4.4 includes=**
4.5 jar.compress=false
4.6 javac.classpath=\
4.7 - ${reference.alt2xml-lib.jar}
4.8 + ${reference.alt2xml-lib.jar}:\
4.9 + ${libs.json-simple.classpath}
4.10 # Space-separated list of extra javac options
4.11 javac.compilerargs=
4.12 javac.deprecation=false
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2 +++ b/java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/JsonSimpleContentHandler.java Thu Jun 05 15:03:50 2014 +0200
5.3 @@ -0,0 +1,135 @@
5.4 +package cz.frantovo.alt2xml.vstup;
5.5 +
5.6 +import java.io.IOException;
5.7 +import java.util.Stack;
5.8 +import org.json.simple.parser.ParseException;
5.9 +import org.xml.sax.ContentHandler;
5.10 +import org.xml.sax.SAXException;
5.11 +
5.12 +/**
5.13 + *
5.14 + * @author fiki
5.15 + */
5.16 +public class JsonSimpleContentHandler implements org.json.simple.parser.ContentHandler {
5.17 +
5.18 + /** Sem vypisujeme XML události */
5.19 + private ContentHandler saxVýstup;
5.20 + /** Musíme si pamatovat polohu v XML stromu, abychom věděli, kterou značku kdy uzavřít */
5.21 + private Stack<String> poloha = new Stack<>();
5.22 + /**
5.23 + * Po textových uzlech vkládáme konce elementů rovnou,
5.24 + * ale pokud jeden element končí hned po jiném,
5.25 + * vložíme mezi ně ještě konec řádku a odsazení.
5.26 + */
5.27 + private boolean zalomitŘádek = false;
5.28 +
5.29 + public JsonSimpleContentHandler(ContentHandler saxVýstup) {
5.30 + this.saxVýstup = saxVýstup;
5.31 + }
5.32 +
5.33 + private void začniElement(String název) throws IOException {
5.34 + try {
5.35 + vložOdsazení();
5.36 + saxVýstup.startElement(null, null, název, null);
5.37 + poloha.push(název);
5.38 + } catch (SAXException e) {
5.39 + throw new IOException("Chyba při začátku elementu.", e);
5.40 + }
5.41 + }
5.42 +
5.43 + private void ukončiElement() throws IOException {
5.44 + try {
5.45 + String značka = poloha.pop();
5.46 + if (zalomitŘádek) {
5.47 + vložOdsazení();
5.48 + }
5.49 + zalomitŘádek = true;
5.50 + saxVýstup.endElement(null, null, značka);
5.51 + } catch (SAXException e) {
5.52 + throw new IOException("Chyba při ukončování elementu.", e);
5.53 + }
5.54 + }
5.55 +
5.56 + private void vložOdsazení() throws IOException {
5.57 + /**
5.58 + * TODO: ignorableWhitespace() ?
5.59 + */
5.60 + vložText("\n");
5.61 + for (int i = 0; i < poloha.size(); i++) {
5.62 + vložText("\t");
5.63 + }
5.64 + }
5.65 +
5.66 + private void vložText(String text) throws IOException {
5.67 + try {
5.68 + saxVýstup.characters(text.toCharArray(), 0, text.length());
5.69 + } catch (SAXException e) {
5.70 + throw new IOException("Chyba při vkládání textu.", e);
5.71 + }
5.72 + }
5.73 +
5.74 + @Override
5.75 + public void startJSON() throws ParseException, IOException {
5.76 + try {
5.77 + saxVýstup.startDocument();
5.78 + začniElement("objekt");
5.79 + } catch (SAXException e) {
5.80 + throw new IOException("Chyba při začátku dokumentu.", e);
5.81 + }
5.82 + }
5.83 +
5.84 + @Override
5.85 + public void endJSON() throws ParseException, IOException {
5.86 + try {
5.87 + ukončiElement();
5.88 + vložText("\n");
5.89 + saxVýstup.endDocument();
5.90 + } catch (SAXException e) {
5.91 + throw new IOException(e);
5.92 + }
5.93 + }
5.94 +
5.95 + @Override
5.96 + public boolean startObject() throws ParseException, IOException {
5.97 + // System.err.println("startObject");
5.98 + return true;
5.99 + }
5.100 +
5.101 + @Override
5.102 + public boolean endObject() throws ParseException, IOException {
5.103 + // System.err.println("endObject");
5.104 + return true;
5.105 + }
5.106 +
5.107 + @Override
5.108 + public boolean startObjectEntry(String key) throws ParseException, IOException {
5.109 + začniElement(key);
5.110 + return true;
5.111 + }
5.112 +
5.113 + @Override
5.114 + public boolean endObjectEntry() throws ParseException, IOException {
5.115 + ukončiElement();
5.116 + // System.err.println("endObjectEntry");
5.117 + return true;
5.118 + }
5.119 +
5.120 + @Override
5.121 + public boolean startArray() throws ParseException, IOException {
5.122 + // System.err.println("startArray");
5.123 + return true;
5.124 + }
5.125 +
5.126 + @Override
5.127 + public boolean endArray() throws ParseException, IOException {
5.128 + // System.err.println("endArray");
5.129 + return true;
5.130 + }
5.131 +
5.132 + @Override
5.133 + public boolean primitive(Object value) throws ParseException, IOException {
5.134 + vložText(String.valueOf(value));
5.135 + zalomitŘádek = false;
5.136 + return true;
5.137 + }
5.138 +}
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/SuperReader.java Thu Jun 05 15:03:50 2014 +0200
6.3 @@ -0,0 +1,117 @@
6.4 +package cz.frantovo.alt2xml.vstup;
6.5 +
6.6 +import java.io.IOException;
6.7 +import java.io.InputStreamReader;
6.8 +import java.util.HashMap;
6.9 +import java.util.Map;
6.10 +import org.json.simple.parser.JSONParser;
6.11 +import org.json.simple.parser.ParseException;
6.12 +import org.xml.sax.ContentHandler;
6.13 +import org.xml.sax.DTDHandler;
6.14 +import org.xml.sax.EntityResolver;
6.15 +import org.xml.sax.ErrorHandler;
6.16 +import org.xml.sax.InputSource;
6.17 +import org.xml.sax.SAXException;
6.18 +import org.xml.sax.SAXNotRecognizedException;
6.19 +import org.xml.sax.SAXNotSupportedException;
6.20 +import org.xml.sax.XMLReader;
6.21 +
6.22 +/**
6.23 + *
6.24 + * @author fiki
6.25 + */
6.26 +public class SuperReader implements XMLReader {
6.27 +
6.28 + private ContentHandler contentHandler;
6.29 + private ErrorHandler errorHandler;
6.30 + private DTDHandler dtdHandler;
6.31 + private EntityResolver entityResolver;
6.32 + private Map<String, Object> konfigurace = new HashMap<>();
6.33 +
6.34 + @Override
6.35 + public void parse(InputSource input) throws IOException, SAXException {
6.36 + /**
6.37 + * TODO: rozpornat formát vstupu a podle toho delegovat
6.38 + */
6.39 + JSONParser p = new JSONParser();
6.40 + InputStreamReader vstup = new InputStreamReader(input.getByteStream());
6.41 + JsonSimpleContentHandler handler = new JsonSimpleContentHandler(contentHandler);
6.42 +
6.43 + try {
6.44 + p.parse(vstup, handler);
6.45 + } catch (ParseException e) {
6.46 + throw new SAXException("Chyba při načítání JSONu", e);
6.47 + }
6.48 + }
6.49 +
6.50 + @Override
6.51 + public void parse(String systemId) throws IOException, SAXException {
6.52 + parse(new InputSource(systemId));
6.53 + }
6.54 +
6.55 + @Override
6.56 + public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
6.57 + /**
6.58 + * TODO:
6.59 + * All XMLReaders are required to recognize
6.60 + * the http://xml.org/sax/features/namespaces
6.61 + * and the http://xml.org/sax/features/namespace-prefixes feature names.
6.62 + */
6.63 + throw new SAXNotSupportedException("Zatím není podporováno.");
6.64 + }
6.65 +
6.66 + @Override
6.67 + public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
6.68 + throw new SAXNotSupportedException("Zatím není podporováno.");
6.69 + }
6.70 +
6.71 + @Override
6.72 + public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
6.73 + return konfigurace.get(name);
6.74 + }
6.75 +
6.76 + @Override
6.77 + public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
6.78 + konfigurace.put(name, value);
6.79 + }
6.80 +
6.81 + @Override
6.82 + public void setEntityResolver(EntityResolver entityResolver) {
6.83 + this.entityResolver = entityResolver;
6.84 + }
6.85 +
6.86 + @Override
6.87 + public EntityResolver getEntityResolver() {
6.88 + return entityResolver;
6.89 + }
6.90 +
6.91 + @Override
6.92 + public void setDTDHandler(DTDHandler dtdHandler) {
6.93 + this.dtdHandler = dtdHandler;
6.94 + }
6.95 +
6.96 + @Override
6.97 + public DTDHandler getDTDHandler() {
6.98 + return dtdHandler;
6.99 + }
6.100 +
6.101 + @Override
6.102 + public void setContentHandler(ContentHandler contentHandler) {
6.103 + this.contentHandler = contentHandler;
6.104 + }
6.105 +
6.106 + @Override
6.107 + public ContentHandler getContentHandler() {
6.108 + return contentHandler;
6.109 + }
6.110 +
6.111 + @Override
6.112 + public void setErrorHandler(ErrorHandler errorHandler) {
6.113 + this.errorHandler = errorHandler;
6.114 + }
6.115 +
6.116 + @Override
6.117 + public ErrorHandler getErrorHandler() {
6.118 + return errorHandler;
6.119 + }
6.120 +}