package org.starfishrespect.myconsumption.android.controllers;
import org.starfishrespect.myconsumption.android.SingleInstance;
import org.starfishrespect.myconsumption.android.data.KeyValueData;
import org.starfishrespect.myconsumption.android.data.SensorData;
import org.starfishrespect.myconsumption.android.data.UserData;
import org.codehaus.jackson.map.ObjectMapper;
import org.starfishrespect.myconsumption.android.events.BuildAlertEvent;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import de.greenrobot.event.EventBus;
/**
* Handle local database access for user
* S23Y (2015). Licensed under the Apache License, Version 2.0.
* Author: Thibaud Ledent
*/
public class UserController {
private static final String TAG = "UserController";
private UserData user = null;
public UserController() {}
/**
* Load the user from the database and set the sensors associated to him.
*/
public void loadUser() {
KeyValueData keyData = SingleInstance.getDatabaseHelper().getValueForKey("user");
if (keyData == null)
return;
String userJson = keyData.getValue();
ObjectMapper mapper = new ObjectMapper();
List<SensorData> sensors;
try {
// Read json
user = mapper.readValue(userJson, UserData.class);
// Get sensors
sensors = SingleInstance.getDatabaseHelper().getSensorDao().queryForAll();
user.setSensors(sensors);
} catch (IOException| SQLException e) {
EventBus.getDefault().post(new BuildAlertEvent(true));
}
}
public UserData getUser() {
return user;
}
}