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