/** * */ package name.webdizz.clt.crx.client.translation.medeniye; import name.webdizz.clt.crx.client.translation.ITranslationHandler; import name.webdizz.clt.crx.client.translation.TranslationResult; import com.google.gwt.http.client.Request; import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.http.client.RequestCallback; import com.google.gwt.http.client.RequestException; import com.google.gwt.http.client.Response; /** * Requests translations from medeniye.org dictionary and call * {@link ITranslationHandler} with translation result. * * @author webdizz * */ public class MedeniyeRequestBuilder { private class TranslationRequestCallback implements RequestCallback { private ITranslationHandler handler; private TranslationRequestCallback(ITranslationHandler handler) { this.handler = handler; } public void onResponseReceived(final Request request, final Response response) { String translationHtmlText = response.getText(); TranslationResult translationResult = new TranslationResultCreator().parse(translationHtmlText); handler.onTranslate(translationResult); } public void onError(final Request request, final Throwable exception) { // TODO: handle error [webdizz] } } private static final String URL = "http://qlugat.appspot.com/lugat/get?"; private RequestBuilder requestBuilder; /** * Creates default {@link RequestBuilder}. * * @param requestData * parameters as a string to pass to remote service */ private void createDefaultRequestBuilder(String requestData) { requestBuilder = new RequestBuilder(RequestBuilder.GET, URL + requestData); } /** * @param requestData * @param handler * @return ` * @throws RequestException */ public Request send(final String requestData, final ITranslationHandler handler) throws RequestException { if (null == requestBuilder) { createDefaultRequestBuilder(requestData); } TranslationRequestCallback callback = new TranslationRequestCallback(handler); requestBuilder.setCallback(callback); return requestBuilder.send(); } /** * @param requestBuilder * the {@link RequestBuilder} to set */ public void setRequestBuilder(final RequestBuilder requestBuilder) { this.requestBuilder = requestBuilder; } }