java/nekurak.net-ejb/src/java/cz/frantovo/nekurak/ext/Texy.java
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--
Formátování kódu, důsledné používání tabulátorů, drobné úpravy, StringBuilder
     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 String KODOVANI = "UTF-8";
    24 	private static final Logger log = Logger.getLogger(Texy.class.getSimpleName());
    25 
    26 	public String preved(String text) throws TexyVyjimka {
    27 		OutputStreamWriter wr = null;
    28 		BufferedReader rd = null;
    29 		try {
    30 			URL url = new URL(URL_SLUZBY);
    31 			URLConnection spojeni = url.openConnection();
    32 			spojeni.setDoOutput(true);
    33 
    34 			/** Odešleme data */
    35 			wr = new OutputStreamWriter(spojeni.getOutputStream());
    36 			wr.write(URLEncoder.encode(text, KODOVANI));
    37 			wr.flush();
    38 
    39 			/** Přijmeme odpověď */
    40 			rd = new BufferedReader(new InputStreamReader(spojeni.getInputStream(), KODOVANI));
    41 			StringBuilder vysledek = new StringBuilder();
    42 			String radka;
    43 			while ((radka = rd.readLine()) != null) {
    44 				vysledek.append(radka);
    45 			}
    46 
    47 			return vysledek.toString();
    48 		} catch (Exception e) {
    49 			throw new TexyVyjimka("Chyba při zpracovávání textu: " + text, e);
    50 		} finally {
    51 			try {
    52 				wr.close();
    53 			} catch (IOException e) {
    54 				log.log(Level.WARNING, "Selhalo zavírání OutputStreamWriteru", e);
    55 			}
    56 			try {
    57 				rd.close();
    58 			} catch (IOException e) {
    59 				log.log(Level.WARNING, "Selhalo zavírání BufferedReaderu", e);
    60 			}
    61 		}
    62 	}
    63 }