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-- |
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 |
} |