1.1 --- a/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ext/Texy.java Tue May 25 13:54:21 2010 +0200
1.2 +++ b/java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ext/Texy.java Tue Jun 08 12:56:46 2010 +0200
1.3 @@ -1,50 +1,62 @@
1.4 package cz.frantovo.nekurak.ext;
1.5
1.6 +import cz.frantovo.nekurak.vyjimky.TexyVyjimka;
1.7 import java.io.BufferedReader;
1.8 +import java.io.IOException;
1.9 import java.io.InputStreamReader;
1.10 import java.io.OutputStreamWriter;
1.11 import java.net.URL;
1.12 import java.net.URLConnection;
1.13 import java.net.URLEncoder;
1.14 +import java.util.logging.Level;
1.15 +import java.util.logging.Logger;
1.16
1.17 /**
1.18 * Neprovádí vlastní interpretaci Texy syntaxe, ale volá HTTP službu napsanou v PHP.
1.19 + * TODO: použít webové služby, nebo něco lepšího než ruční práci s URL.
1.20 * @author fiki
1.21 */
1.22 public class Texy {
1.23
1.24 - /** TODO: parametrizovatelnost/localhost ? */
1.25 + /** TODO: parametrizovatelnost */
1.26 private static final String URL_SLUZBY = "http://nekurak.net/texy/http/";
1.27 + private static final Logger log = Logger.getLogger(Texy.class.getSimpleName());
1.28
1.29 - public String preved(String text) {
1.30 + public String preved(String text) throws TexyVyjimka {
1.31 + OutputStreamWriter wr = null;
1.32 + BufferedReader rd = null;
1.33 try {
1.34 URL url = new URL(URL_SLUZBY);
1.35 URLConnection spojeni = url.openConnection();
1.36 spojeni.setDoOutput(true);
1.37
1.38 /** Odešleme data */
1.39 - OutputStreamWriter wr = new OutputStreamWriter(spojeni.getOutputStream());
1.40 + wr = new OutputStreamWriter(spojeni.getOutputStream());
1.41 wr.write(URLEncoder.encode(text, "UTF-8"));
1.42 wr.flush();
1.43
1.44 /** Přijmeme odpověď */
1.45 - BufferedReader rd = new BufferedReader(new InputStreamReader(spojeni.getInputStream()));
1.46 + rd = new BufferedReader(new InputStreamReader(spojeni.getInputStream()));
1.47 StringBuffer vysledek = new StringBuffer();
1.48 String radka;
1.49 while ((radka = rd.readLine()) != null) {
1.50 vysledek.append(radka);
1.51 }
1.52
1.53 - // TODO: → finally
1.54 - wr.close();
1.55 - rd.close();
1.56 -
1.57 return vysledek.toString();
1.58 } catch (Exception e) {
1.59 - // TODO: vyhazovat výjimku
1.60 - return "TODO:chyba";
1.61 + throw new TexyVyjimka("Chyba při zpracovávání textu: " + text, e);
1.62 } finally {
1.63 - // TODO: finally close();
1.64 + try {
1.65 + wr.close();
1.66 + } catch (IOException e) {
1.67 + log.log(Level.WARNING, "Selhalo zavírání OutputStreamWriteru", e);
1.68 + }
1.69 + try {
1.70 + rd.close();
1.71 + } catch (IOException e) {
1.72 + log.log(Level.WARNING, "Selhalo zavírání BufferedReaderu", e);
1.73 + }
1.74 }
1.75 }
1.76 }