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