java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ext/Texy.java
author František Kučera <franta-hg@frantovo.cz>
Tue Jun 08 12:56:46 2010 +0200 (2010-06-08)
changeset 132 1ca0d7fdbe51
parent 123 9135d52e8b0a
child 139 b876839f1989
permissions -rw-r--r--
Testy komentářů, XML.
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@132
    21
    /** TODO: parametrizovatelnost */
franta-hg@119
    22
    private static final String URL_SLUZBY = "http://nekurak.net/texy/http/";
franta-hg@132
    23
    private static final Logger log = Logger.getLogger(Texy.class.getSimpleName());
franta-hg@119
    24
franta-hg@132
    25
    public String preved(String text) throws TexyVyjimka {
franta-hg@132
    26
	OutputStreamWriter wr = null;
franta-hg@132
    27
	BufferedReader rd = null;
franta-hg@119
    28
	try {
franta-hg@119
    29
	    URL url = new URL(URL_SLUZBY);
franta-hg@119
    30
	    URLConnection spojeni = url.openConnection();
franta-hg@119
    31
	    spojeni.setDoOutput(true);
franta-hg@119
    32
franta-hg@119
    33
	    /** Odešleme data */
franta-hg@132
    34
	    wr = new OutputStreamWriter(spojeni.getOutputStream());
franta-hg@119
    35
	    wr.write(URLEncoder.encode(text, "UTF-8"));
franta-hg@119
    36
	    wr.flush();
franta-hg@119
    37
franta-hg@119
    38
	    /** Přijmeme odpověď */
franta-hg@132
    39
	    rd = new BufferedReader(new InputStreamReader(spojeni.getInputStream()));
franta-hg@119
    40
	    StringBuffer vysledek = new StringBuffer();
franta-hg@119
    41
	    String radka;
franta-hg@119
    42
	    while ((radka = rd.readLine()) != null) {
franta-hg@119
    43
		vysledek.append(radka);
franta-hg@119
    44
	    }
franta-hg@119
    45
franta-hg@119
    46
	    return vysledek.toString();
franta-hg@119
    47
	} catch (Exception e) {
franta-hg@132
    48
	    throw new TexyVyjimka("Chyba při zpracovávání textu: " + text, e);
franta-hg@119
    49
	} finally {
franta-hg@132
    50
	    try {
franta-hg@132
    51
		wr.close();
franta-hg@132
    52
	    } catch (IOException e) {
franta-hg@132
    53
		log.log(Level.WARNING, "Selhalo zavírání OutputStreamWriteru", e);
franta-hg@132
    54
	    }
franta-hg@132
    55
	    try {
franta-hg@132
    56
		rd.close();
franta-hg@132
    57
	    } catch (IOException e) {
franta-hg@132
    58
		log.log(Level.WARNING, "Selhalo zavírání BufferedReaderu", e);
franta-hg@132
    59
	    }
franta-hg@119
    60
	}
franta-hg@119
    61
    }
franta-hg@119
    62
}