# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1402004724 -7200
# Node ID 471c0cda94c309f00756a5082d616e2cb3f34b96
# Parent  a598b9d90144dc04e6eb66dd9e0598a34941e1f2
balíček pro JSON

diff -r a598b9d90144 -r 471c0cda94c3 java/alt2xml-in-json/src/cz/frantovo/alt2xml/in/json/JsonSimpleContentHandler.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/alt2xml-in-json/src/cz/frantovo/alt2xml/in/json/JsonSimpleContentHandler.java	Thu Jun 05 23:45:24 2014 +0200
@@ -0,0 +1,152 @@
+/**
+ * Alt2XML
+ * Copyright © 2014 František Kučera (frantovo.cz)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package cz.frantovo.alt2xml.in.json;
+
+import java.io.IOException;
+import java.util.Stack;
+import org.json.simple.parser.ParseException;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.SAXException;
+
+/**
+ *
+ * @author fiki
+ */
+public class JsonSimpleContentHandler implements org.json.simple.parser.ContentHandler {
+
+	/** Sem vypisujeme XML události */
+	private ContentHandler saxVýstup;
+	/** Musíme si pamatovat polohu v XML stromu, abychom věděli, kterou značku kdy uzavřít */
+	private Stack<String> poloha = new Stack<>();
+	/**
+	 * Po textových uzlech vkládáme konce elementů rovnou,
+	 * ale pokud jeden element končí hned po jiném, 
+	 * vložíme mezi ně ještě konec řádku a odsazení.
+	 */
+	private boolean zalomitŘádek = false;
+
+	public JsonSimpleContentHandler(ContentHandler saxVýstup) {
+		this.saxVýstup = saxVýstup;
+	}
+
+	private void začniElement(String název) throws IOException {
+		try {
+			vložOdsazení();
+			saxVýstup.startElement(null, null, název, null);
+			poloha.push(název);
+		} catch (SAXException e) {
+			throw new IOException("Chyba při začátku elementu.", e);
+		}
+	}
+
+	private void ukončiElement() throws IOException {
+		try {
+			String značka = poloha.pop();
+			if (zalomitŘádek) {
+				vložOdsazení();
+			}
+			zalomitŘádek = true;
+			saxVýstup.endElement(null, null, značka);
+		} catch (SAXException e) {
+			throw new IOException("Chyba při ukončování elementu.", e);
+		}
+	}
+
+	private void vložOdsazení() throws IOException {
+		/**
+		 * TODO: ignorableWhitespace() ?
+		 */
+		vložText("\n");
+		for (int i = 0; i < poloha.size(); i++) {
+			vložText("\t");
+		}
+	}
+
+	private void vložText(String text) throws IOException {
+		try {
+			saxVýstup.characters(text.toCharArray(), 0, text.length());
+		} catch (SAXException e) {
+			throw new IOException("Chyba při vkládání textu.", e);
+		}
+	}
+
+	@Override
+	public void startJSON() throws ParseException, IOException {
+		try {
+			saxVýstup.startDocument();
+			začniElement("objekt");
+		} catch (SAXException e) {
+			throw new IOException("Chyba při začátku dokumentu.", e);
+		}
+	}
+
+	@Override
+	public void endJSON() throws ParseException, IOException {
+		try {
+			ukončiElement();
+			vložText("\n");
+			saxVýstup.endDocument();
+		} catch (SAXException e) {
+			throw new IOException(e);
+		}
+	}
+
+	@Override
+	public boolean startObject() throws ParseException, IOException {
+		// System.err.println("startObject");
+		return true;
+	}
+
+	@Override
+	public boolean endObject() throws ParseException, IOException {
+		// System.err.println("endObject");
+		return true;
+	}
+
+	@Override
+	public boolean startObjectEntry(String key) throws ParseException, IOException {
+		začniElement(key);
+		return true;
+	}
+
+	@Override
+	public boolean endObjectEntry() throws ParseException, IOException {
+		ukončiElement();
+		// System.err.println("endObjectEntry");
+		return true;
+	}
+
+	@Override
+	public boolean startArray() throws ParseException, IOException {
+		// System.err.println("startArray");
+		return true;
+	}
+
+	@Override
+	public boolean endArray() throws ParseException, IOException {
+		// System.err.println("endArray");
+		return true;
+	}
+
+	@Override
+	public boolean primitive(Object value) throws ParseException, IOException {
+		vložText(String.valueOf(value));
+		zalomitŘádek = false;
+		return true;
+	}
+}
diff -r a598b9d90144 -r 471c0cda94c3 java/alt2xml-in-json/src/cz/frantovo/alt2xml/in/json/Reader.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/alt2xml-in-json/src/cz/frantovo/alt2xml/in/json/Reader.java	Thu Jun 05 23:45:24 2014 +0200
@@ -0,0 +1,134 @@
+/**
+ * Alt2XML
+ * Copyright © 2014 František Kučera (frantovo.cz)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package cz.frantovo.alt2xml.in.json;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.DTDHandler;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+import org.xml.sax.XMLReader;
+
+/**
+ *
+ * @author fiki
+ */
+public class Reader implements XMLReader {
+
+	private ContentHandler contentHandler;
+	private ErrorHandler errorHandler;
+	private DTDHandler dtdHandler;
+	private EntityResolver entityResolver;
+	private Map<String, Object> konfigurace = new HashMap<>();
+
+	@Override
+	public void parse(InputSource input) throws IOException, SAXException {
+		/**
+		 * TODO: rozpornat formát vstupu a podle toho delegovat
+		 */
+		JSONParser p = new JSONParser();
+		InputStreamReader vstup = new InputStreamReader(input.getByteStream());
+		JsonSimpleContentHandler handler = new JsonSimpleContentHandler(contentHandler);
+
+		try {
+			p.parse(vstup, handler);
+		} catch (ParseException e) {
+			throw new SAXException("Chyba při načítání JSONu", e);
+		}
+	}
+
+	@Override
+	public void parse(String systemId) throws IOException, SAXException {
+		parse(new InputSource(systemId));
+	}
+
+	@Override
+	public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
+		/**
+		 * TODO:
+		 * All XMLReaders are required to recognize
+		 * the http://xml.org/sax/features/namespaces
+		 * and the http://xml.org/sax/features/namespace-prefixes feature names.
+		 */
+		throw new SAXNotSupportedException("Zatím není podporováno.");
+	}
+
+	@Override
+	public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
+		throw new SAXNotSupportedException("Zatím není podporováno.");
+	}
+
+	@Override
+	public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
+		return konfigurace.get(name);
+	}
+
+	@Override
+	public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
+		konfigurace.put(name, value);
+	}
+
+	@Override
+	public void setEntityResolver(EntityResolver entityResolver) {
+		this.entityResolver = entityResolver;
+	}
+
+	@Override
+	public EntityResolver getEntityResolver() {
+		return entityResolver;
+	}
+
+	@Override
+	public void setDTDHandler(DTDHandler dtdHandler) {
+		this.dtdHandler = dtdHandler;
+	}
+
+	@Override
+	public DTDHandler getDTDHandler() {
+		return dtdHandler;
+	}
+
+	@Override
+	public void setContentHandler(ContentHandler contentHandler) {
+		this.contentHandler = contentHandler;
+	}
+
+	@Override
+	public ContentHandler getContentHandler() {
+		return contentHandler;
+	}
+
+	@Override
+	public void setErrorHandler(ErrorHandler errorHandler) {
+		this.errorHandler = errorHandler;
+	}
+
+	@Override
+	public ErrorHandler getErrorHandler() {
+		return errorHandler;
+	}
+}
diff -r a598b9d90144 -r 471c0cda94c3 java/alt2xml-in-json/src/cz/frantovo/alt2xml/in/json/ReaderFactory.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/java/alt2xml-in-json/src/cz/frantovo/alt2xml/in/json/ReaderFactory.java	Thu Jun 05 23:45:24 2014 +0200
@@ -0,0 +1,39 @@
+/**
+ * Alt2XML
+ * Copyright © 2014 František Kučera (frantovo.cz)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package cz.frantovo.alt2xml.in.json;
+
+import cz.frantovo.alt2xml.Alt2XmlReaderFactory;
+import org.xml.sax.XMLReader;
+
+/**
+ *
+ * @author Ing. František Kučera (frantovo.cz)
+ */
+public class ReaderFactory implements Alt2XmlReaderFactory {
+
+	@Override
+	public boolean canRead(String systemId) {
+		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+	}
+
+	@Override
+	public XMLReader getReader() {
+		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+	}
+
+}
diff -r a598b9d90144 -r 471c0cda94c3 java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/JsonReaderFactory.java
--- a/java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/JsonReaderFactory.java	Thu Jun 05 23:41:05 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/**
- * Alt2XML
- * Copyright © 2014 František Kučera (frantovo.cz)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package cz.frantovo.alt2xml.vstup;
-
-import cz.frantovo.alt2xml.Alt2XmlReaderFactory;
-import org.xml.sax.XMLReader;
-
-/**
- *
- * @author Ing. František Kučera (frantovo.cz)
- */
-public class JsonReaderFactory implements Alt2XmlReaderFactory {
-
-	@Override
-	public boolean canRead(String systemId) {
-		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-	}
-
-	@Override
-	public XMLReader getReader() {
-		throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-	}
-
-}
diff -r a598b9d90144 -r 471c0cda94c3 java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/JsonSimpleContentHandler.java
--- a/java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/JsonSimpleContentHandler.java	Thu Jun 05 23:41:05 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-/**
- * Alt2XML
- * Copyright © 2014 František Kučera (frantovo.cz)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package cz.frantovo.alt2xml.vstup;
-
-import java.io.IOException;
-import java.util.Stack;
-import org.json.simple.parser.ParseException;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.SAXException;
-
-/**
- *
- * @author fiki
- */
-public class JsonSimpleContentHandler implements org.json.simple.parser.ContentHandler {
-
-	/** Sem vypisujeme XML události */
-	private ContentHandler saxVýstup;
-	/** Musíme si pamatovat polohu v XML stromu, abychom věděli, kterou značku kdy uzavřít */
-	private Stack<String> poloha = new Stack<>();
-	/**
-	 * Po textových uzlech vkládáme konce elementů rovnou,
-	 * ale pokud jeden element končí hned po jiném, 
-	 * vložíme mezi ně ještě konec řádku a odsazení.
-	 */
-	private boolean zalomitŘádek = false;
-
-	public JsonSimpleContentHandler(ContentHandler saxVýstup) {
-		this.saxVýstup = saxVýstup;
-	}
-
-	private void začniElement(String název) throws IOException {
-		try {
-			vložOdsazení();
-			saxVýstup.startElement(null, null, název, null);
-			poloha.push(název);
-		} catch (SAXException e) {
-			throw new IOException("Chyba při začátku elementu.", e);
-		}
-	}
-
-	private void ukončiElement() throws IOException {
-		try {
-			String značka = poloha.pop();
-			if (zalomitŘádek) {
-				vložOdsazení();
-			}
-			zalomitŘádek = true;
-			saxVýstup.endElement(null, null, značka);
-		} catch (SAXException e) {
-			throw new IOException("Chyba při ukončování elementu.", e);
-		}
-	}
-
-	private void vložOdsazení() throws IOException {
-		/**
-		 * TODO: ignorableWhitespace() ?
-		 */
-		vložText("\n");
-		for (int i = 0; i < poloha.size(); i++) {
-			vložText("\t");
-		}
-	}
-
-	private void vložText(String text) throws IOException {
-		try {
-			saxVýstup.characters(text.toCharArray(), 0, text.length());
-		} catch (SAXException e) {
-			throw new IOException("Chyba při vkládání textu.", e);
-		}
-	}
-
-	@Override
-	public void startJSON() throws ParseException, IOException {
-		try {
-			saxVýstup.startDocument();
-			začniElement("objekt");
-		} catch (SAXException e) {
-			throw new IOException("Chyba při začátku dokumentu.", e);
-		}
-	}
-
-	@Override
-	public void endJSON() throws ParseException, IOException {
-		try {
-			ukončiElement();
-			vložText("\n");
-			saxVýstup.endDocument();
-		} catch (SAXException e) {
-			throw new IOException(e);
-		}
-	}
-
-	@Override
-	public boolean startObject() throws ParseException, IOException {
-		// System.err.println("startObject");
-		return true;
-	}
-
-	@Override
-	public boolean endObject() throws ParseException, IOException {
-		// System.err.println("endObject");
-		return true;
-	}
-
-	@Override
-	public boolean startObjectEntry(String key) throws ParseException, IOException {
-		začniElement(key);
-		return true;
-	}
-
-	@Override
-	public boolean endObjectEntry() throws ParseException, IOException {
-		ukončiElement();
-		// System.err.println("endObjectEntry");
-		return true;
-	}
-
-	@Override
-	public boolean startArray() throws ParseException, IOException {
-		// System.err.println("startArray");
-		return true;
-	}
-
-	@Override
-	public boolean endArray() throws ParseException, IOException {
-		// System.err.println("endArray");
-		return true;
-	}
-
-	@Override
-	public boolean primitive(Object value) throws ParseException, IOException {
-		vložText(String.valueOf(value));
-		zalomitŘádek = false;
-		return true;
-	}
-}
diff -r a598b9d90144 -r 471c0cda94c3 java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/JsonXMLReader.java
--- a/java/alt2xml-in-json/src/cz/frantovo/alt2xml/vstup/JsonXMLReader.java	Thu Jun 05 23:41:05 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/**
- * Alt2XML
- * Copyright © 2014 František Kučera (frantovo.cz)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package cz.frantovo.alt2xml.vstup;
-
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Map;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.DTDHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
-import org.xml.sax.XMLReader;
-
-/**
- *
- * @author fiki
- */
-public class JsonXMLReader implements XMLReader {
-
-	private ContentHandler contentHandler;
-	private ErrorHandler errorHandler;
-	private DTDHandler dtdHandler;
-	private EntityResolver entityResolver;
-	private Map<String, Object> konfigurace = new HashMap<>();
-
-	@Override
-	public void parse(InputSource input) throws IOException, SAXException {
-		/**
-		 * TODO: rozpornat formát vstupu a podle toho delegovat
-		 */
-		JSONParser p = new JSONParser();
-		InputStreamReader vstup = new InputStreamReader(input.getByteStream());
-		JsonSimpleContentHandler handler = new JsonSimpleContentHandler(contentHandler);
-
-		try {
-			p.parse(vstup, handler);
-		} catch (ParseException e) {
-			throw new SAXException("Chyba při načítání JSONu", e);
-		}
-	}
-
-	@Override
-	public void parse(String systemId) throws IOException, SAXException {
-		parse(new InputSource(systemId));
-	}
-
-	@Override
-	public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
-		/**
-		 * TODO:
-		 * All XMLReaders are required to recognize
-		 * the http://xml.org/sax/features/namespaces
-		 * and the http://xml.org/sax/features/namespace-prefixes feature names.
-		 */
-		throw new SAXNotSupportedException("Zatím není podporováno.");
-	}
-
-	@Override
-	public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
-		throw new SAXNotSupportedException("Zatím není podporováno.");
-	}
-
-	@Override
-	public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
-		return konfigurace.get(name);
-	}
-
-	@Override
-	public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
-		konfigurace.put(name, value);
-	}
-
-	@Override
-	public void setEntityResolver(EntityResolver entityResolver) {
-		this.entityResolver = entityResolver;
-	}
-
-	@Override
-	public EntityResolver getEntityResolver() {
-		return entityResolver;
-	}
-
-	@Override
-	public void setDTDHandler(DTDHandler dtdHandler) {
-		this.dtdHandler = dtdHandler;
-	}
-
-	@Override
-	public DTDHandler getDTDHandler() {
-		return dtdHandler;
-	}
-
-	@Override
-	public void setContentHandler(ContentHandler contentHandler) {
-		this.contentHandler = contentHandler;
-	}
-
-	@Override
-	public ContentHandler getContentHandler() {
-		return contentHandler;
-	}
-
-	@Override
-	public void setErrorHandler(ErrorHandler errorHandler) {
-		this.errorHandler = errorHandler;
-	}
-
-	@Override
-	public ErrorHandler getErrorHandler() {
-		return errorHandler;
-	}
-}