Java tutorial
package org.starfishrespect.myconsumption.android.tasks; import android.os.AsyncTask; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.starfishrespect.myconsumption.android.data.SensorData; import org.starfishrespect.myconsumption.android.data.UserData; import org.starfishrespect.myconsumption.android.util.CryptoUtils; import org.starfishrespect.myconsumption.server.api.dto.SensorDTO; import org.starfishrespect.myconsumption.server.api.dto.UserDTO; import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import org.starfishrespect.myconsumption.android.SingleInstance; /** * Task that retrieves all the data of an user from the server * S23Y (2015). Licensed under the Apache License, Version 2.0. */ public class UserUpdater extends AsyncTask<Void, UserData, Void> { /** * Callback for the result */ public interface GetUserCallback { public void userFound(UserData user); public void userRetrieveError(Exception e); } private GetUserCallback getUserCallback; private String username; private String password; public UserUpdater(String username, String password) { this.username = username; this.password = password; } public UserUpdater setGetUserCallback(GetUserCallback getUserCallback) { this.getUserCallback = getUserCallback; return this; } @Override protected Void doInBackground(Void... params) { RestTemplate template = new RestTemplate(); HttpHeaders httpHeaders = CryptoUtils.createHeaders(username, password); template.getMessageConverters().add(new MappingJacksonHttpMessageConverter()); try { ResponseEntity<UserDTO> response = template.exchange( SingleInstance.getServerUrl() + "users/" + username, HttpMethod.GET, new HttpEntity<>(httpHeaders), UserDTO.class); UserDTO user = response.getBody(); UserData userData = new UserData(user); for (String sensor : user.getSensors()) { try { ResponseEntity<SensorDTO> responseSensor = template.exchange( SingleInstance.getServerUrl() + "sensors/" + sensor, HttpMethod.GET, new HttpEntity<>(httpHeaders), SensorDTO.class); SensorDTO SensorDTO = responseSensor.getBody(); userData.addSensor(new SensorData(SensorDTO)); } catch (RestClientException e) { e.printStackTrace(); } } publishProgress(userData); } catch (RestClientException e) { e.printStackTrace(); publishProgress(null); } return null; } @Override protected void onProgressUpdate(UserData... values) { if (getUserCallback != null) { if (values == null || values.length == 0 || values[0] == null) { getUserCallback.userRetrieveError(new NullPointerException()); return; } getUserCallback.userFound(values[0]); } } }