Java tutorial
package org.starfishrespect.myconsumption.android.tasks; import android.os.AsyncTask; import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter; import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.ResourceAccessException; import org.springframework.web.client.RestTemplate; import org.starfishrespect.myconsumption.android.SingleInstance; import org.starfishrespect.myconsumption.android.dao.DatabaseHelper; import org.starfishrespect.myconsumption.android.data.KeyValueData; import java.sql.SQLException; import java.util.List; import static org.starfishrespect.myconsumption.android.util.LogUtils.LOGD; import static org.starfishrespect.myconsumption.android.util.LogUtils.LOGE; import static org.starfishrespect.myconsumption.android.util.LogUtils.makeLogTag; /** * Get basic config values from the server using an AsyncTask * S23Y (2015). Licensed under the Apache License, Version 2.0. * Author: Thibaud Ledent */ public class ConfigUpdater { public interface ConfigUpdateFinishedCallback { public void onConfigUpdateFinished(); } private ConfigUpdateFinishedCallback configUpdateFinishedCallback; private static final String TAG = makeLogTag(StatValuesUpdater.class); public void setUpdateFinishedCallback(ConfigUpdateFinishedCallback updateFinishedCallback) { this.configUpdateFinishedCallback = updateFinishedCallback; } public void refreshDB() { AsyncTask<Void, List, Void> task = new AsyncTask<Void, List, Void>() { @Override protected Void doInBackground(Void... params) { DatabaseHelper db = SingleInstance.getDatabaseHelper(); RestTemplate template = new RestTemplate(); template.getMessageConverters().add(new MappingJacksonHttpMessageConverter()); try { String url = SingleInstance.getServerUrl() + "configs/co2"; Double co2 = template.getForObject(url, Double.class); int id = db.getIdForKey("config_co2"); KeyValueData valueData = new KeyValueData("config_co2", co2.toString()); valueData.setId(id); LOGD(TAG, "writing stat in local db: " + co2); db.getKeyValueDao().createOrUpdate(valueData); } catch (SQLException e) { LOGD(TAG, "Cannot create config co2", e); } catch (ResourceAccessException | HttpClientErrorException e) { LOGE(TAG, "Cannot access server ", e); } try { String url = SingleInstance.getServerUrl() + "configs/day"; Double day = template.getForObject(url, Double.class); int id = db.getIdForKey("config_day"); KeyValueData valueData = new KeyValueData("config_day", day.toString()); valueData.setId(id); LOGD(TAG, "writing stat in local db: " + day); db.getKeyValueDao().createOrUpdate(valueData); } catch (SQLException e) { LOGD(TAG, "Cannot create config day", e); } catch (ResourceAccessException | HttpClientErrorException e) { LOGE(TAG, "Cannot access server ", e); } try { String url = SingleInstance.getServerUrl() + "configs/night"; Double night = template.getForObject(url, Double.class); int id = db.getIdForKey("config_night"); KeyValueData valueData = new KeyValueData("config_night", night.toString()); valueData.setId(id); LOGD(TAG, "writing stat in local db: " + night); db.getKeyValueDao().createOrUpdate(valueData); } catch (SQLException e) { LOGD(TAG, "Cannot create config night", e); } catch (ResourceAccessException | HttpClientErrorException e) { LOGE(TAG, "Cannot access server ", e); } return null; } @Override protected void onPostExecute(Void aVoid) { if (configUpdateFinishedCallback != null) { configUpdateFinishedCallback.onConfigUpdateFinished(); } } }; task.execute(); } }