package nliveroid.nlr.main.parser; import nliveroid.nlr.main.CommunityInfoTask; import nliveroid.nlr.main.ErrorCode; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.Locator; import org.xml.sax.SAXException; import android.util.Log; public class CommunityInOutParser implements ContentHandler { private boolean joinForm = false; private boolean parseFinished = false; private CommunityInfoTask task; private StringBuilder innerText = new StringBuilder(1024); private boolean alreadyJoinOrOver50=false; private ErrorCode error;//最初のパースとサムネイル取得に必要 public CommunityInOutParser(CommunityInfoTask communityInfoTask,ErrorCode error){ this.task = communityInfoTask; this.error = error; } private String getInnerText(char[] arg0,int arg2){ innerText = innerText.delete(0,arg0.length); innerText.append(arg0, 0, arg2); return innerText.toString(); } @Override public void characters(char[] arg0, int arg1, int arg2) throws SAXException { if(!parseFinished){ if(joinForm){ String inner = getInnerText(arg0,arg2); Log.d("#Log","PARSER ------ XXX " +inner); if(inner.contains("コミュニティに参加申請を送る")){ task.finishCallBack(error, false,true); parseFinished = true; }else if(inner.contains("コミュニティに登録申請を送る")){ task.finishCallBack(error, false,true); parseFinished = true; }else if(inner.contains("ティを登録する")){ task.finishCallBack(error, false,false); parseFinished = true; } }else if(alreadyJoinOrOver50){ String inner = getInnerText(arg0,arg2); Log.d("logttt",""+inner); if(inner.contains("このコミュニティには")){//すでに参加している task.finishCallBack(error, false,false);//この時isApplyは意味ない parseFinished = true; } } } } @Override public void startElement(String arg0, String arg1, String arg2, Attributes arg3) throws SAXException { if(arg1.equals("div") && arg3 != null && arg3.getLength() >=1){ for(int i = 0; i < arg3.getLength(); i++){ if(arg3.getValue(i).equals("main0727")){//参加申請またはまだ参加してないことが決定 // Log.d("#Log","PARSER ------ form + isJoined==false" ); joinForm = true; } if(!parseFinished&&arg3.getValue(i).equals("mb16p4")){//参加してるか一般50を超えている if(!joinForm){ // Log.d("#Log","PARSER ------ joined " ); alreadyJoinOrOver50=true; } } } } } @Override public void endElement(String arg0, String arg1, String arg2)throws SAXException { if(arg1.equals("p")&&alreadyJoinOrOver50&&!parseFinished){//50を超えている→機能してない error.setErrorCode(-45); task.finishCallBack(error,false,false); joinForm = false; parseFinished = true; } if(arg1.equals("body")&&!parseFinished){//不明のエラー error.setErrorCode(-40); task.finishCallBack(error,false,false); } } @Override public void endDocument() throws SAXException {} @Override public void endPrefixMapping(String arg0) throws SAXException {} @Override public void ignorableWhitespace(char[] arg0, int arg1, int arg2)throws SAXException {} @Override public void processingInstruction(String arg0, String arg1)throws SAXException {} @Override public void setDocumentLocator(Locator arg0) {} @Override public void skippedEntity(String arg0) throws SAXException {} @Override public void startDocument() throws SAXException {} @Override public void startPrefixMapping(String arg0, String arg1)throws SAXException {} }