// Copyright 2011 UPM-GSI: Group of Intelligent Systems - // - Universidad Politécnica de Madrid (UPM) // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package es.upm.dit.gsi.noticiastvi.gtv.item; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.io.StringWriter; import java.io.Writer; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import android.os.Handler; import android.os.Message; import android.util.Log; import es.upm.dit.gsi.noticiastvi.gtv.util.Constant; /** * set or removes a item from favorites * * @author Antonio Prada <toniprada@gmail.com> * */ public class SetRemoveFavoriteThread extends Thread { public static final String SET = "setPreference"; public static final String REMOVE = "removePreference"; private static final boolean TEST = Constant.TEST; public static final int RESULT_OK = 30; public static final int RESULT_ERROR = 31; private Handler handler; private int userId; private int id; private String action = SET; public SetRemoveFavoriteThread(Handler handler, int id, int userId, String action) { this.handler = handler; this.userId = userId; this.id = id; this.action = action; Log.i("A" , "Creado thread favoritos"); } @Override public void run() { if (doFavorite()) { handler.sendMessage(Message.obtain(handler, RESULT_OK)); } else { handler.sendMessage(Message.obtain(handler, RESULT_ERROR)); } } private boolean doFavorite() { if (!TEST) { HttpParams httpParameters = new BasicHttpParams(); int timeoutConnection = 10000; HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); int timeoutSocket = 10000; HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); DefaultHttpClient client = new DefaultHttpClient(httpParameters); String s = Constant.SERVER_URL + "?action=" + action + "&identifier=" + userId + "&content=" + id; if (action.equals(SET)) { s = s + "&preference=5"; } Log.e("AAA", s); HttpGet getRequest = new HttpGet(s); try { HttpResponse getResponse = client.execute(getRequest); InputStream source = getResponse.getEntity().getContent(); if (source != null) { String res = convertStreamToString(source); return res.contains("ok"); } else { return false; } } catch (IOException e) { getRequest.abort(); Log.w(getClass().getSimpleName(), "Error", e); return false; } } else { Log.i("favorite" , "TEST_MODE"); return true; } } public String convertStreamToString(InputStream is) throws IOException { /* * To convert the InputStream to String we use the * Reader.read(char[] buffer) method. We iterate until the * Reader return -1 which means there's no more data to * read. We use the StringWriter class to produce the string. */ if (is != null) { Writer writer = new StringWriter(); char[] buffer = new char[1024]; try { Reader reader = new BufferedReader( new InputStreamReader(is, "UTF-8")); int n; while ((n = reader.read(buffer)) != -1) { writer.write(buffer, 0, n); } } finally { is.close(); } return writer.toString(); } else { return ""; } } }