package uni.projecte.dataLayer.RemoteDBManager.dataParsers;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import android.util.Log;
import uni.projecte.dataTypes.RemoteTaxonSet;
public class SiareResponseHandler {
public int loadTaxons(String url, RemoteTaxonSet projList) {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = builderFactory.newDocumentBuilder();
HttpClient httpclient = new DefaultHttpClient();
System.out.println(url);
HttpGet httpget = new HttpGet(url);
// Execute the request
HttpResponse response;
response = httpclient.execute(httpget);
Log.i("ZP",response.getStatusLine().toString());
// Get hold of the response entity
HttpEntity entity = response.getEntity();
if (entity != null) {
String result = EntityUtils.toString(entity, HTTP.UTF_8);
if(!result.equals("ERROR")){
Document document = builder.parse(new InputSource(new StringReader(result)));
Element rootElement = document.getDocumentElement();
NodeList nodes = rootElement.getChildNodes();
for(int i=0; i<nodes.getLength(); i++){
Node node = nodes.item(i);
if(node instanceof Element){
//a child element to process
Element child = (Element) node;
String taxon = child.getAttribute("nombre");
String code= child.getAttribute("codigo");
projList.addTaxon(taxon, code);
}
}
}
else{
return 0;
}
}
}
catch (ClientProtocolException e) {
e.printStackTrace();
return -1;
}
catch (IOException e) {
e.printStackTrace();
return -2;
}
catch (ParserConfigurationException e1) {
return -3;
}
catch (SAXException e) {
return -1;
}
return projList.numElements();
}
}