1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-09-01 04:22:26 +02:00

replaced insert / update operation of SQL scale database with Room library operations

This commit is contained in:
OliE
2017-12-31 14:21:54 +01:00
parent dbd67c741b
commit 03534a12d3
8 changed files with 35 additions and 47 deletions

View File

@@ -26,8 +26,12 @@ import android.support.v4.app.Fragment;
import android.util.Log; import android.util.Log;
import android.widget.Toast; import android.widget.Toast;
import com.health.openscale.R;
import com.health.openscale.core.alarm.AlarmHandler; import com.health.openscale.core.alarm.AlarmHandler;
import com.health.openscale.core.bluetooth.BluetoothCommunication; import com.health.openscale.core.bluetooth.BluetoothCommunication;
import com.health.openscale.core.bodymetric.EstimatedFatMetric;
import com.health.openscale.core.bodymetric.EstimatedLBWMetric;
import com.health.openscale.core.bodymetric.EstimatedWaterMetric;
import com.health.openscale.core.database.AppDatabase; import com.health.openscale.core.database.AppDatabase;
import com.health.openscale.core.database.ScaleDatabase; import com.health.openscale.core.database.ScaleDatabase;
import com.health.openscale.core.database.ScaleMeasurementDAO; import com.health.openscale.core.database.ScaleMeasurementDAO;
@@ -60,7 +64,7 @@ public class OpenScale {
private ScaleUserDAO userDAO; private ScaleUserDAO userDAO;
private ScaleDatabase scaleDB; private ScaleDatabase scaleDB;
private ScaleUserDatabase scaleUserDB; private ScaleUserDatabase scaleUserDB;
private ArrayList<ScaleData> scaleDataList; private List<ScaleData> scaleDataList;
private BluetoothCommunication btCom; private BluetoothCommunication btCom;
private String btDeviceName; private String btDeviceName;
@@ -144,7 +148,7 @@ public class OpenScale {
userDAO.update(user); userDAO.update(user);
} }
public ArrayList<ScaleData> getScaleDataList() { public List<ScaleData> getScaleDataList() {
return scaleDataList; return scaleDataList;
} }
@@ -155,35 +159,13 @@ public class OpenScale {
} }
public int addScaleData(final ScaleData scaleData) { public int addScaleData(final ScaleData scaleData) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
AsyncTask.execute(new Runnable() {
@Override
public void run() {
Log.d("TEST", "ADD START");
measurementDAO.insert(scaleData);
Log.d("TEST", "ADD END");
Log.d("TEST", "READ ALL");
List<ScaleData> listScaleData = measurementDAO.getAll();
for(ScaleData nextScaleData : listScaleData) {
Log.d("TEST", "DB : " + nextScaleData.getDateTime() + " Weight: " + nextScaleData.getWeight());
}
}
});
return -1;
/* SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (scaleData.getUserId() == -1) { if (scaleData.getUserId() == -1) {
if (prefs.getBoolean("smartUserAssign", false)) { if (prefs.getBoolean("smartUserAssign", false)) {
scaleData.setUserId(getSmartUserAssignment(scaleData.getWeight(), 15.0f)); scaleData.setUserId(getSmartUserAssignment(scaleData.getWeight(), 15.0f));
} else { } else {
scaleData.setUserId(getSelectedScaleUser().id); scaleData.setUserId(getSelectedScaleUser().getId());
} }
// don't add scale data if no user is selected // don't add scale data if no user is selected
@@ -210,16 +192,17 @@ public class OpenScale {
scaleData.setFat(fatMetric.getFat(getScaleUser(scaleData.getUserId()), scaleData)); scaleData.setFat(fatMetric.getFat(getScaleUser(scaleData.getUserId()), scaleData));
} }
if (scaleDB.insertEntry(scaleData)) { if (measurementDAO.get(scaleData.getDateTime(), scaleData.getUserId()) == null) {
measurementDAO.insert(scaleData);
ScaleUser scaleUser = getScaleUser(scaleData.getUserId()); ScaleUser scaleUser = getScaleUser(scaleData.getUserId());
String infoText = String.format(context.getString(R.string.info_new_data_added), scaleData.getConvertedWeight(scaleUser.scaleUnit), scaleUser.UNIT_STRING[scaleUser.scaleUnit], dateTimeFormat.format(scaleData.getDateTime()), scaleUser.userName); String infoText = String.format(context.getString(R.string.info_new_data_added), scaleData.getConvertedWeight(scaleUser.getScaleUnit()), scaleUser.UNIT_STRING[scaleUser.getScaleUnit()], dateTimeFormat.format(scaleData.getDateTime()), scaleUser.getUserName());
Toast.makeText(context, infoText, Toast.LENGTH_LONG).show(); Toast.makeText(context, infoText, Toast.LENGTH_LONG).show();
alarmHandler.entryChanged(context, scaleData); alarmHandler.entryChanged(context, scaleData);
updateScaleData(); updateScaleData();
} }
return scaleData.getUserId();*/ return scaleData.getUserId();
} }
private int getSmartUserAssignment(float weight, float range) { private int getSmartUserAssignment(float weight, float range) {
@@ -259,7 +242,7 @@ public class OpenScale {
} }
public void updateScaleData(ScaleData scaleData) { public void updateScaleData(ScaleData scaleData) {
scaleDB.updateEntry(scaleData.getId(), scaleData); measurementDAO.update(scaleData);
alarmHandler.entryChanged(context, scaleData); alarmHandler.entryChanged(context, scaleData);
updateScaleData(); updateScaleData();
@@ -305,7 +288,7 @@ public class OpenScale {
newScaleData.setUserId(getSelectedScaleUser().getId()); newScaleData.setUserId(getSelectedScaleUser().getId());
scaleDB.insertEntry(newScaleData); measurementDAO.insert(newScaleData);
line = csvReader.readLine(); line = csvReader.readLine();
} }
@@ -414,7 +397,7 @@ public class OpenScale {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
int selectedUserId = prefs.getInt("selectedUserId", -1); int selectedUserId = prefs.getInt("selectedUserId", -1);
scaleDataList = scaleDB.getScaleDataList(selectedUserId); scaleDataList = measurementDAO.getAll(selectedUserId);
fragment.updateOnView(scaleDataList); fragment.updateOnView(scaleDataList);
} }
@@ -424,7 +407,7 @@ public class OpenScale {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
int selectedUserId = prefs.getInt("selectedUserId", -1); int selectedUserId = prefs.getInt("selectedUserId", -1);
scaleDataList = scaleDB.getScaleDataList(selectedUserId); scaleDataList = measurementDAO.getAll(selectedUserId);
for (FragmentUpdateListener fragment : fragmentList) { for (FragmentUpdateListener fragment : fragmentList) {
if (fragment != null) { if (fragment != null) {

View File

@@ -24,12 +24,16 @@ import android.arch.persistence.room.Update;
import com.health.openscale.core.datatypes.ScaleData; import com.health.openscale.core.datatypes.ScaleData;
import java.util.Date;
import java.util.List; import java.util.List;
@Dao @Dao
public interface ScaleMeasurementDAO { public interface ScaleMeasurementDAO {
@Query("SELECT * FROM scaledata") @Query("SELECT * FROM scaledata WHERE datetime = :datetime AND userId = :userId")
List<ScaleData> getAll(); ScaleData get(Date datetime, int userId);
@Query("SELECT * FROM scaledata WHERE userId = :userId")
List<ScaleData> getAll(int userId);
@Query("SELECT * FROM scaledata WHERE id IS :id") @Query("SELECT * FROM scaledata WHERE id IS :id")
ScaleData loadById(int id); ScaleData loadById(int id);

View File

@@ -31,10 +31,10 @@ public interface ScaleUserDAO {
@Query("SELECT * FROM scaleuser") @Query("SELECT * FROM scaleuser")
List<ScaleUser> getAll(); List<ScaleUser> getAll();
@Query("SELECT * FROM scaleuser WHERE id IS :id") @Query("SELECT * FROM scaleuser WHERE id = :id")
ScaleUser getById(int id); ScaleUser getById(int id);
@Query("SELECT * FROM scaleuser WHERE id IS :id") @Query("SELECT * FROM scaleuser WHERE id = :id")
ScaleUser loadById(int id); ScaleUser loadById(int id);
@Insert @Insert

View File

@@ -18,8 +18,8 @@ package com.health.openscale.gui.fragments;
import com.health.openscale.core.datatypes.ScaleData; import com.health.openscale.core.datatypes.ScaleData;
import java.util.ArrayList; import java.util.List;
public interface FragmentUpdateListener { public interface FragmentUpdateListener {
public void updateOnView(ArrayList<ScaleData> scaleDataList); public void updateOnView(List<ScaleData> scaleDataList);
} }

View File

@@ -186,7 +186,7 @@ public class GraphFragment extends Fragment implements FragmentUpdateListener {
} }
@Override @Override
public void updateOnView(ArrayList<ScaleData> scaleDataList) public void updateOnView(List<ScaleData> scaleDataList)
{ {
generateGraphs(); generateGraphs();
} }

View File

@@ -174,7 +174,7 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
} }
@Override @Override
public void updateOnView(ArrayList<ScaleData> scaleDataList) { public void updateOnView(List<ScaleData> scaleDataList) {
if (scaleDataList.isEmpty()) { if (scaleDataList.isEmpty()) {
lastScaleData = new ScaleData(); lastScaleData = new ScaleData();
} else if (userSelectedData != null) { } else if (userSelectedData != null) {
@@ -237,7 +237,7 @@ public class OverviewFragment extends Fragment implements FragmentUpdateListener
} }
private void updateLastLineChart(ArrayList<ScaleData> scaleDataList) { private void updateLastLineChart(List<ScaleData> scaleDataList) {
List<AxisValue> axisValues = new ArrayList<AxisValue>(); List<AxisValue> axisValues = new ArrayList<AxisValue>();
List<PointValue> valuesWeight = new ArrayList<PointValue>(); List<PointValue> valuesWeight = new ArrayList<PointValue>();

View File

@@ -33,8 +33,8 @@ import com.health.openscale.core.datatypes.ScaleUser;
import com.health.openscale.core.utils.DateTimeHelpers; import com.health.openscale.core.utils.DateTimeHelpers;
import java.text.DateFormat; import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.List;
public class StatisticsFragment extends Fragment implements FragmentUpdateListener { public class StatisticsFragment extends Fragment implements FragmentUpdateListener {
@@ -88,7 +88,7 @@ public class StatisticsFragment extends Fragment implements FragmentUpdateListen
} }
@Override @Override
public void updateOnView(ArrayList<ScaleData> scaleDataList) { public void updateOnView(List<ScaleData> scaleDataList) {
if (scaleDataList.isEmpty()) { if (scaleDataList.isEmpty()) {
lastScaleData = new ScaleData(); lastScaleData = new ScaleData();
} else { } else {
@@ -105,7 +105,7 @@ public class StatisticsFragment extends Fragment implements FragmentUpdateListen
updateGoal(scaleDataList); updateGoal(scaleDataList);
} }
private void updateGoal(ArrayList<ScaleData> scaleDataList) { private void updateGoal(List<ScaleData> scaleDataList) {
ScaleData goalScaleData = new ScaleData(); ScaleData goalScaleData = new ScaleData();
goalScaleData.setConvertedWeight(currentScaleUser.getGoalWeight(), currentScaleUser.getScaleUnit()); goalScaleData.setConvertedWeight(currentScaleUser.getGoalWeight(), currentScaleUser.getScaleUnit());
@@ -157,7 +157,7 @@ public class StatisticsFragment extends Fragment implements FragmentUpdateListen
); // currentScaleUser.goalDate ); // currentScaleUser.goalDate
} }
private void updateStatistics(ArrayList<ScaleData> scaleDataList) { private void updateStatistics(List<ScaleData> scaleDataList) {
Calendar histDate = Calendar.getInstance(); Calendar histDate = Calendar.getInstance();
Calendar weekPastDate = Calendar.getInstance(); Calendar weekPastDate = Calendar.getInstance();
Calendar monthPastDate = Calendar.getInstance(); Calendar monthPastDate = Calendar.getInstance();

View File

@@ -68,6 +68,7 @@ import com.health.openscale.gui.views.WeightMeasurementView;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import lecho.lib.hellocharts.util.ChartUtils; import lecho.lib.hellocharts.util.ChartUtils;
@@ -129,7 +130,7 @@ public class TableFragment extends Fragment implements FragmentUpdateListener {
} }
@Override @Override
public void updateOnView(ArrayList<ScaleData> scaleDataList) public void updateOnView(List<ScaleData> scaleDataList)
{ {
tableDataView.setAdapter(new ListViewAdapter(new ArrayList<HashMap<Integer, String>>())); // delete all data in the table with an empty adapter array list tableDataView.setAdapter(new ListViewAdapter(new ArrayList<HashMap<Integer, String>>())); // delete all data in the table with an empty adapter array list