java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ext/Texy.java
changeset 132 1ca0d7fdbe51
parent 123 9135d52e8b0a
child 139 b876839f1989
     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  }