java/alt2xml/src/cz/frantovo/alt2xml/vstup/SuperReader.java
author František Kučera <franta-hg@frantovo.cz>
Tue, 03 Jan 2012 14:39:16 +0100
changeset 4 e2b2f34cdb50
parent 3 6c608fd8c019
child 5 c2496cf043c3
permissions -rw-r--r--
Podpora konfigurace.
franta-hg@3
     1
package cz.frantovo.alt2xml.vstup;
franta-hg@2
     2
franta-hg@2
     3
import java.io.IOException;
franta-hg@2
     4
import java.io.InputStreamReader;
franta-hg@4
     5
import java.util.HashMap;
franta-hg@4
     6
import java.util.Map;
franta-hg@2
     7
import org.json.simple.parser.JSONParser;
franta-hg@2
     8
import org.json.simple.parser.ParseException;
franta-hg@2
     9
import org.xml.sax.ContentHandler;
franta-hg@2
    10
import org.xml.sax.DTDHandler;
franta-hg@2
    11
import org.xml.sax.EntityResolver;
franta-hg@2
    12
import org.xml.sax.ErrorHandler;
franta-hg@2
    13
import org.xml.sax.InputSource;
franta-hg@2
    14
import org.xml.sax.SAXException;
franta-hg@2
    15
import org.xml.sax.SAXNotRecognizedException;
franta-hg@2
    16
import org.xml.sax.SAXNotSupportedException;
franta-hg@2
    17
import org.xml.sax.XMLReader;
franta-hg@2
    18
franta-hg@2
    19
/**
franta-hg@2
    20
 *
franta-hg@2
    21
 * @author fiki
franta-hg@2
    22
 */
franta-hg@2
    23
public class SuperReader implements XMLReader {
franta-hg@2
    24
franta-hg@2
    25
	private ContentHandler contentHandler;
franta-hg@4
    26
	private ErrorHandler errorHandler;
franta-hg@4
    27
	private DTDHandler dtdHandler;
franta-hg@4
    28
	private EntityResolver entityResolver;
franta-hg@4
    29
	private Map<String, Object> konfigurace = new HashMap<>();
franta-hg@2
    30
franta-hg@2
    31
	@Override
franta-hg@2
    32
	public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
franta-hg@4
    33
		throw new SAXNotSupportedException("Zatím není podporováno.");
franta-hg@2
    34
	}
franta-hg@2
    35
franta-hg@2
    36
	@Override
franta-hg@2
    37
	public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
franta-hg@4
    38
		throw new SAXNotSupportedException("Zatím není podporováno.");
franta-hg@2
    39
	}
franta-hg@2
    40
franta-hg@2
    41
	@Override
franta-hg@2
    42
	public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
franta-hg@4
    43
		return konfigurace.get(name);
franta-hg@2
    44
	}
franta-hg@2
    45
franta-hg@2
    46
	@Override
franta-hg@2
    47
	public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
franta-hg@4
    48
		konfigurace.put(name, value);
franta-hg@2
    49
	}
franta-hg@2
    50
franta-hg@2
    51
	@Override
franta-hg@4
    52
	public void setEntityResolver(EntityResolver entityResolver) {
franta-hg@4
    53
		this.entityResolver = entityResolver;
franta-hg@2
    54
	}
franta-hg@2
    55
franta-hg@2
    56
	@Override
franta-hg@2
    57
	public EntityResolver getEntityResolver() {
franta-hg@4
    58
		return entityResolver;
franta-hg@2
    59
	}
franta-hg@2
    60
franta-hg@2
    61
	@Override
franta-hg@4
    62
	public void setDTDHandler(DTDHandler dtdHandler) {
franta-hg@4
    63
		this.dtdHandler = dtdHandler;
franta-hg@2
    64
	}
franta-hg@2
    65
franta-hg@2
    66
	@Override
franta-hg@2
    67
	public DTDHandler getDTDHandler() {
franta-hg@4
    68
		return dtdHandler;
franta-hg@2
    69
	}
franta-hg@2
    70
franta-hg@2
    71
	@Override
franta-hg@4
    72
	public void setContentHandler(ContentHandler contentHandler) {
franta-hg@4
    73
		this.contentHandler = contentHandler;
franta-hg@2
    74
	}
franta-hg@2
    75
franta-hg@2
    76
	@Override
franta-hg@2
    77
	public ContentHandler getContentHandler() {
franta-hg@2
    78
		return contentHandler;
franta-hg@2
    79
	}
franta-hg@2
    80
franta-hg@2
    81
	@Override
franta-hg@4
    82
	public void setErrorHandler(ErrorHandler errorHandler) {
franta-hg@4
    83
		this.errorHandler = errorHandler;
franta-hg@2
    84
	}
franta-hg@2
    85
franta-hg@2
    86
	@Override
franta-hg@2
    87
	public ErrorHandler getErrorHandler() {
franta-hg@4
    88
		return errorHandler;
franta-hg@2
    89
	}
franta-hg@2
    90
franta-hg@2
    91
	@Override
franta-hg@2
    92
	public void parse(InputSource input) throws IOException, SAXException {
franta-hg@2
    93
		/**
franta-hg@2
    94
		 * TODO: rozpornat formát vstupu a podle toho delegovat
franta-hg@2
    95
		 */
franta-hg@2
    96
		JSONParser p = new JSONParser();
franta-hg@2
    97
		InputStreamReader vstup = new InputStreamReader(input.getByteStream());
franta-hg@2
    98
		JsonSimpleContentHandler handler = new JsonSimpleContentHandler(contentHandler);
franta-hg@2
    99
franta-hg@2
   100
		try {
franta-hg@2
   101
			p.parse(vstup, handler);
franta-hg@2
   102
		} catch (ParseException e) {
franta-hg@2
   103
			throw new SAXException("Chyba při načítání JSONu", e);
franta-hg@2
   104
		}
franta-hg@2
   105
	}
franta-hg@2
   106
franta-hg@2
   107
	@Override
franta-hg@2
   108
	public void parse(String systemId) throws IOException, SAXException {
franta-hg@2
   109
		// TODO: dopsat
franta-hg@4
   110
		throw new SAXException("Zatím není podporováno.");
franta-hg@2
   111
	}
franta-hg@2
   112
}