package nliveroid.nlr.main;
import java.io.IOException;
import java.io.InputStream;
import nliveroid.nlr.main.ErrorCode;
import nliveroid.nlr.main.MyToast;
import nliveroid.nlr.main.Request;
import nliveroid.nlr.main.URLEnum;
import nliveroid.nlr.main.parser.CommunityPageParser;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.util.Log;
import android.widget.ProgressBar;
public class CommuBrowser extends AsyncTask<Void,Void,Void>{
private Context context;
private ErrorCode error;
private ProgressDialog p;
private ProgressBar progressBar;
private boolean ENDFLAG = true;
private int index;
private String co;
private String result;
protected CommuBrowser(Context context,ErrorCode error,ProgressBar progressbar,int index , String co){
this.index = index;
this.co = co;
this.context = context;
this.error = error;
this.progressBar = progressbar;
}
@Override
public void onPreExecute(){
super.onPreExecute();
p = new ProgressDialog(context);
p.setMessage("情報取得中...");
p.cancel();
p.show();
}
@Override
public void onCancelled(){
if(p != null && p.isShowing())p.cancel();
super.onCancelled();
}
@Override
protected Void doInBackground(Void... params) {
try {
if(error == null || error.getErrorCode() != 0){
return null;
}
InputStream is = Request.doGetToInputStreamFromFixedSession(Request.getSessionID(error), URLEnum.COMMUNITYURL + co, error);
if(error == null || error.getErrorCode() != 0){
return null;
}
org.ccil.cowan.tagsoup.Parser parser = new org.ccil.cowan.tagsoup.Parser();
CommunityPageParser handler = new CommunityPageParser(index,this);
parser.setContentHandler(handler);
parser.parse(new InputSource(is));
progressBar.setProgress(35);
} catch (org.xml.sax.SAXNotRecognizedException e) {
// Should not happen.
e.printStackTrace();
throw new RuntimeException(e);
} catch (org.xml.sax.SAXNotSupportedException e) {
// Should not happen.
e.printStackTrace();
throw new RuntimeException(e);
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
long startT = System.currentTimeMillis();
while(ENDFLAG){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
ENDFLAG = false;
break;
}catch(IllegalArgumentException e1){
e1.printStackTrace();
Log.d("NLiveRoid","IllegalArgumentException at Request getImageForList");
ENDFLAG = false;
break;
}
if((System.currentTimeMillis() - startT) > 30000){
error.setErrorCode(-10);
return null;
}
}
return null;
}
public void onPageFinished(String result){
ENDFLAG = false;
this.result = result;
}
@Override
protected void onPostExecute(Void arg){
if(p != null && p.isShowing())p.cancel();
if(error != null){
if(error.getErrorCode() != 0){
error.showErrorToast();
}else if(result != null){
if(result.equals("Nothing")){
if(index == 0){
MyToast.customToastShow(context, "ブロマガをみつけられませんでした");
}else{
MyToast.customToastShow(context, "オーナーページをみつけられませんでした");
}
return;
}
Uri uri = Uri.parse(result);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setDataAndType(uri, "text/html");
context.startActivity(intent);
}
}
}
}