// 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.account;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URLEncoder;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
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 com.google.gson.Gson;
import es.upm.dit.gsi.noticiastvi.gtv.util.Constant;
/**
* Thread to create accounts on the server.
*
* @author Antonio Prada <toniprada@gmail.com>
*
*/
public class CreateThread extends Thread {
private static final String ACTION = "newUser";
public static final int RESULT_OK = 40;
public static final int RESULT_ERROR = 41;
private Handler handler;
private String username = "";
public CreateThread(Handler handler, String username) {
this.handler = handler;
this.username = username;
}
@Override
public void run() {
HttpParams httpParameters = new BasicHttpParams();
int timeoutConnection = 10000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 10000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
DefaultHttpClient client = new DefaultHttpClient(httpParameters);
StringBuilder query = new StringBuilder();
try {
query.append(Constant.SERVER_URL + "?action=" + ACTION + "&name=");
query.append(URLEncoder.encode(username.trim(), "UTF-8"));
HttpGet get = new HttpGet(query.toString());
HttpResponse getResponse = client.execute(get);
final int statusCode = getResponse.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w(getClass().getSimpleName(), "Error " + statusCode);
handler.sendEmptyMessage(RESULT_ERROR);
return;
}
InputStream source = getResponse.getEntity().getContent();
if (source != null) {
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
Account account = gson.fromJson(reader, Account.class);
if (account.getNombre() != null && account.getNombre() != "") {
handler.sendMessage(Message.obtain(handler, RESULT_OK, account));
} else {
handler.sendEmptyMessage(RESULT_ERROR);
}
} else {
handler.sendEmptyMessage(RESULT_ERROR);
}
} catch (Exception e) {
handler.sendEmptyMessage(RESULT_ERROR);
Log.e("ERROR", e.getMessage());
}
}
// private String inputStreamToString(InputStream is) throws IOException {
// String s = "";
// String line = "";
//
// // Wrap a BufferedReader around the InputStream
// BufferedReader rd = new BufferedReader(new InputStreamReader(is));
//
// // Read response until the end
// while ((line = rd.readLine()) != null) { s += line; }
//
// // Return full string
// return s;
// }
}