package tr.com.stackdeveloper.esgm; import android.app.ProgressDialog; import android.content.Context; import android.util.Log; import android.webkit.WebView; import android.widget.Toast; import tr.com.stackdeveloper.lib.ToastHelper; import tr.com.stackdeveloper.model.ResponseProvizyonSonucu; import tr.com.stackdeveloper.task.ServiceResultCallback; public class WsEsgmSorguImpl implements WebViewHtmlContentHandler { private Context mContext; private JsObject mJsObject; private WebView mWebView; public WebViewClientFix mWebClient; private SpasSonucParser htmlParser; private ActionFormLogin mFormLogin; private ActionSpasSorgula mFormSpass; private ServiceResultCallback<ResponseProvizyonSonucu> mServiceResultCallback; private ImageDataResultHandler mImageDataResultHandler; private ProgressDialog mProgressDialog; public ProgressDialog getProgressDialog() { return mProgressDialog; } public WebViewClientFix getWebViewClient() { return mWebClient; } public SpasSonucParser getHtmlParser() { return htmlParser; } public WsEsgmSorguImpl(Context context,ImageDataResultHandler handler) { mContext = context; mWebView = new WebView(mContext); mImageDataResultHandler = handler; initializeObjects(); } public class PageLoadHandlerLoginPage implements PageLoadHandler { @Override public void onPageLoad(WebView webView, String url) { try { mWebView.loadUrl(mJsObject.jsExecute()); } catch (Exception e) { } } } public class KimlikSorgulamaWebViewHtmlContentHandler implements WebViewHtmlContentHandler { @Override public void onGetHtmlContent(String htmlContent) { getProgressDialog().dismiss(); if (htmlContent.contains("alert alert-error") ) { ToastHelper.showFailToast(mContext, "Alert var"); //String alertMessage = mWsEsgmSorguImpl.getHtmlParser().parseLoginFailMessage(htmlContent); //ToastHelper.showFailToast(MainActivity.this, alertMessage); } else { ToastHelper.showFailToast(mContext, "Alert yok"); } } } public class PageLoadHandlerKimlikSorgulama implements PageLoadHandler { @Override public void onPageLoad(WebView webView, String url) { try { mJsObject.jsGetHtmlContent(webView, new KimlikSorgulamaWebViewHtmlContentHandler()); //mWebView.loadUrl(ActionSpasSorgula.URL_SPASS); } catch (Exception e) { } } } public class PageLoadHandlerSpasSorgulama implements PageLoadHandler { @Override public void onPageLoad(WebView webView, String url) { try { mFormSpass.execute(); } catch (Exception e) { } } } public class PageLoadHandlerSpasSonuc implements PageLoadHandler { @Override public void onPageLoad(WebView webView, String url) { try { webView.loadUrl(JsObject.jsGetHtmlContent()); } catch (Exception e) { } } } private void initializeObjects() { mFormLogin = new ActionFormLogin(mWebView); mFormSpass = new ActionSpasSorgula(mWebView); mJsObject = new JsObject(mContext); mJsObject.addImageDataResultHandler(mImageDataResultHandler); mJsObject.addWebViewHtmlContentHandler(this); mWebView.getSettings().setSavePassword(false); mWebView.getSettings().setSaveFormData(false); mWebView.getSettings().setSupportZoom(true); mWebView.getSettings().setBuiltInZoomControls(true); mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); mWebView.setScrollbarFadingEnabled(true); mWebView.getSettings().setLoadsImagesAutomatically(true); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebClient = new WebViewClientFix(); mWebView.setWebViewClient(mWebClient); mWebClient.addPageLoginHandler(new PageLoadHandlerLoginPage()); mWebClient.addPageKimlikSorgulamaHandler(new PageLoadHandlerKimlikSorgulama()); mWebClient.addPageSpassSorgulaHandler(new PageLoadHandlerSpasSorgulama()); mWebClient.addPageSpasSonucHandler(new PageLoadHandlerSpasSonuc()); mWebView.setWebChromeClient(new WebChromeClientFix()); mWebView.addJavascriptInterface(mJsObject, "injectedObject"); htmlParser = new SpasSonucParser(mContext); mProgressDialog = new ProgressDialog(mContext); getWebViewClient().setCaptchaHandled(false); } public JsObject getJsObject() { return mJsObject; } @Override public void onGetHtmlContent(String htmlContent) { try { if (htmlContent.length() == 0 ) return; ResponseProvizyonSonucu sonuc = htmlParser.parse(htmlContent); mServiceResultCallback.onServiceResult(sonuc); } catch (Exception e) { Log.d("onGetHtmlContent",e.getMessage()); ToastHelper.showFailToast(mContext,e.getMessage()); } } // ilk olarak �a�r�lacak olan method public void sorgula() { getWebViewClient().setCaptchaHandled(false); mWebView.loadUrl(ActionFormLogin.URL_LOGIN); } //captcha yakaland���nda �a�r�lacak olan method. public void sorgula(EsgmKisi kisi,ServiceResultCallback<ResponseProvizyonSonucu> resultCallBack) { getWebViewClient().setCaptchaHandled(true); mServiceResultCallback = resultCallBack; mFormLogin.setCaptchaCode(kisi.getCaptchaCode()); mFormLogin.setTcKimlikNo(kisi.getTcKimlikNo()); mFormLogin.setIlKodu(kisi.getIlKodu()); mFormLogin.setDogumYil(kisi.getDogumYil()); mFormLogin.setCiltNo(kisi.getCiltNo()); mFormLogin.execute(); } }