Java tutorial
/* * Copyright 2014 Leonardo Rossetto * 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 com.github.leonardoxh.temporeal.app.service; import android.content.Intent; import com.github.leonardoxh.temporeal.app.model.User; import com.github.leonardoxh.temporeal.app.model.dao.UserDao; import com.github.leonardoxh.temporeal.app.utils.JsonUtils; import com.squareup.okhttp.Response; import java.io.IOException; /** * Este servico e o responsavel por fazer a comunicacao com o servidor * e enviar/receber dados relativos ao nosso usuario para o servidor */ public class UserService extends AbstractService { /** * Esta e a acao de broadcast que mandamos para quem chamou o nosso servico * indicando se ha falhas ou sucesso na execucao do servico */ public static final String BROADCAST_INTENT_FILTER = "com.github.leonardoxh.temporeal.app.USER_RESULT"; /** * Extras que podemos passar para o nosso servico, * nesse caso esse e o nome da chave para resgatar o parametro do usuario * no servico a partir de quem chamou o mesmo */ public static final String EXTRA_USER = "user"; /** * Indica ao nosso broadcast se houve ou nao erro durante ao processo */ public static final String RESULT_ERROR = "error"; public UserService() { super(UserService.class.getSimpleName()); } @Override protected void onHandleIntent(Intent intent) { User user = intent.getExtras().getParcelable(EXTRA_USER); Response response = makeRequest(Constants.USER_ENDPOINT, user); if (response.isSuccessful()) { try { User serverUser = JsonUtils.fromJson(response.body().string(), User.class); /* O usuario foi cadastrado no servidor corretamente, entao so persistimos ele * e indicamos a nossa Activity o sucesso do mesmo */ new UserDao(this).saveOrUpdate(serverUser); sendSuccess(serverUser); } catch (IOException e) { /* Essa exception sera lancada caso tenhamos alguma falha na * leitura da resposta do servidor */ e.printStackTrace(); sendFailure(); } } else { sendFailure(); } } /** * Este metodo envia de volta a nossa activity o usuario que recebemos * do servico assim indicando o sucesso da requisicao e cadastro, assim podemos prosseguir * @param user o usuario retornado do servidor e ja persistido na nossa base de dados * este nunca e null * @see android.content.BroadcastReceiver */ private void sendSuccess(User user) { sendDefault(user); } /** * Este metodo devolve o status da requisicao feita ao servidor * via broadcast para a nossa Activity * @see android.content.BroadcastReceiver */ private void sendFailure() { sendDefault(null); } /** * Envia o broadcast de fato * @param user envia o usuario via broadcast, se for null indicamos erro */ private void sendDefault(User user) { Intent intent = new Intent(BROADCAST_INTENT_FILTER); if (user == null) { intent.putExtra(RESULT_ERROR, true); } else { intent.putExtra(RESULT_ERROR, false); intent.putExtra(EXTRA_USER, user); } sendBroadcast(intent); } }