java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ext/Texy.java
author František Kučera <franta-hg@frantovo.cz>
Sun Jun 20 14:46:47 2010 +0200 (2010-06-20)
changeset 145 0efefbf5f8b6
parent 139 b876839f1989
permissions -rw-r--r--
Formátování kódu, důsledné používání tabulátorů, drobné úpravy, StringBuilder
franta-hg@119
     1
package cz.frantovo.nekurak.ext;
franta-hg@119
     2
franta-hg@132
     3
import cz.frantovo.nekurak.vyjimky.TexyVyjimka;
franta-hg@119
     4
import java.io.BufferedReader;
franta-hg@132
     5
import java.io.IOException;
franta-hg@119
     6
import java.io.InputStreamReader;
franta-hg@119
     7
import java.io.OutputStreamWriter;
franta-hg@119
     8
import java.net.URL;
franta-hg@119
     9
import java.net.URLConnection;
franta-hg@119
    10
import java.net.URLEncoder;
franta-hg@132
    11
import java.util.logging.Level;
franta-hg@132
    12
import java.util.logging.Logger;
franta-hg@119
    13
franta-hg@119
    14
/**
franta-hg@119
    15
 * Neprovádí vlastní interpretaci Texy syntaxe, ale volá HTTP službu napsanou v PHP.
franta-hg@132
    16
 * TODO: použít webové služby, nebo něco lepšího než ruční práci s URL.
franta-hg@119
    17
 * @author fiki
franta-hg@119
    18
 */
franta-hg@119
    19
public class Texy {
franta-hg@119
    20
franta-hg@145
    21
	/** TODO: parametrizovatelnost */
franta-hg@145
    22
	private static final String URL_SLUZBY = "http://nekurak.net/texy/http/";
franta-hg@145
    23
	private static final String KODOVANI = "UTF-8";
franta-hg@145
    24
	private static final Logger log = Logger.getLogger(Texy.class.getSimpleName());
franta-hg@119
    25
franta-hg@145
    26
	public String preved(String text) throws TexyVyjimka {
franta-hg@145
    27
		OutputStreamWriter wr = null;
franta-hg@145
    28
		BufferedReader rd = null;
franta-hg@145
    29
		try {
franta-hg@145
    30
			URL url = new URL(URL_SLUZBY);
franta-hg@145
    31
			URLConnection spojeni = url.openConnection();
franta-hg@145
    32
			spojeni.setDoOutput(true);
franta-hg@119
    33
franta-hg@145
    34
			/** Odešleme data */
franta-hg@145
    35
			wr = new OutputStreamWriter(spojeni.getOutputStream());
franta-hg@145
    36
			wr.write(URLEncoder.encode(text, KODOVANI));
franta-hg@145
    37
			wr.flush();
franta-hg@119
    38
franta-hg@145
    39
			/** Přijmeme odpověď */
franta-hg@145
    40
			rd = new BufferedReader(new InputStreamReader(spojeni.getInputStream(), KODOVANI));
franta-hg@145
    41
			StringBuilder vysledek = new StringBuilder();
franta-hg@145
    42
			String radka;
franta-hg@145
    43
			while ((radka = rd.readLine()) != null) {
franta-hg@145
    44
				vysledek.append(radka);
franta-hg@145
    45
			}
franta-hg@119
    46
franta-hg@145
    47
			return vysledek.toString();
franta-hg@145
    48
		} catch (Exception e) {
franta-hg@145
    49
			throw new TexyVyjimka("Chyba při zpracovávání textu: " + text, e);
franta-hg@145
    50
		} finally {
franta-hg@145
    51
			try {
franta-hg@145
    52
				wr.close();
franta-hg@145
    53
			} catch (IOException e) {
franta-hg@145
    54
				log.log(Level.WARNING, "Selhalo zavírání OutputStreamWriteru", e);
franta-hg@145
    55
			}
franta-hg@145
    56
			try {
franta-hg@145
    57
				rd.close();
franta-hg@145
    58
			} catch (IOException e) {
franta-hg@145
    59
				log.log(Level.WARNING, "Selhalo zavírání BufferedReaderu", e);
franta-hg@145
    60
			}
franta-hg@145
    61
		}
franta-hg@119
    62
	}
franta-hg@119
    63
}