1
19
20 package com.liferay.portlet.translator.util;
21
22 import com.liferay.portal.kernel.util.HttpUtil;
23 import com.liferay.portal.kernel.util.StringUtil;
24 import com.liferay.portal.kernel.util.Time;
25 import com.liferay.portal.kernel.webcache.WebCacheException;
26 import com.liferay.portal.kernel.webcache.WebCacheItem;
27 import com.liferay.portlet.translator.model.Translation;
28
29 import java.net.URL;
30
31
37 public class TranslationWebCacheItem implements WebCacheItem {
38
39 public TranslationWebCacheItem(String translationId, String fromText) {
40 _translationId = translationId;
41 _fromText = fromText;
42 }
43
44 public Object convert(String key) throws WebCacheException {
45 Translation translation = new Translation(_translationId, _fromText);
46
47 try {
48 StringBuilder url = new StringBuilder();
49
50 url.append("http://babelfish.yahoo.com/translate_txt?");
51 url.append("ei=UTF-8&doit=done&fr=bf-res&intl=1&tt=urltext");
52 url.append("&trtext=").append(HttpUtil.encodeURL(_fromText));
53 url.append("&lp=").append(_translationId);
54
55 String text = HttpUtil.URLtoString(new URL(url.toString()));
56
57 int x = text.indexOf("<div id=\"result\">");
58
59 x = text.indexOf(">", x) + 1;
60 x = text.indexOf(">", x) + 1;
61
62 int y = text.indexOf("</div>", x);
63
64 String toText = text.substring(x, y).trim();
65
66 toText = StringUtil.replace(toText, "\n", " ");
67
68 translation.setToText(toText);
69 }
70 catch (Exception e) {
71 throw new WebCacheException(e);
72 }
73
74 return translation;
75 }
76
77 public long getRefreshTime() {
78 return _REFRESH_TIME;
79 }
80
81 private static final long _REFRESH_TIME = Time.DAY * 90;
82
83 private String _translationId;
84 private String _fromText;
85
86 }