remove room stuff

This commit is contained in:
Sem van der Hoeven
2020-12-17 10:32:28 +01:00
parent 5edf50c808
commit 6a07ce77f0
17 changed files with 6 additions and 448 deletions

View File

@@ -30,11 +30,6 @@ android {
dependencies { dependencies {
def room_version = "2.2.5"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
//gson //gson
implementation 'com.google.code.gson:gson:2.8.6' implementation 'com.google.code.gson:gson:2.8.6'

View File

View File

@@ -1,24 +1,18 @@
package com.a1.nextlocation.data; package com.a1.nextlocation.data;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@Entity(tableName = "coupon")
public class Coupon { public class Coupon {
/** /**
* fields need to be public for the database to be able to use them * fields need to be public for the database to be able to use them
*/ */
@PrimaryKey
@NonNull @NonNull
@ColumnInfo(name = "code")
private String code; private String code;
@ColumnInfo(name = "reward")
@NonNull @NonNull
private String reward; private String reward;

View File

@@ -1,43 +1,24 @@
package com.a1.nextlocation.data; package com.a1.nextlocation.data;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import androidx.room.TypeConverters;
import com.a1.nextlocation.data.db.CouponListTypeConverter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity(tableName = "userdata")
public class Data { public class Data {
@PrimaryKey
@NonNull
@ColumnInfo(name = "distance_traveled")
private float distanceTraveled; private float distanceTraveled;
@ColumnInfo(name = "locations_visited")
private int locationsVisited; private int locationsVisited;
@ColumnInfo(name = "total_time")
private int totalTime; private int totalTime;
@TypeConverters(CouponListTypeConverter.class)
private List<Coupon> couponList; private List<Coupon> couponList;
@Ignore
private Location nextLocation; private Location nextLocation;
@Ignore
private Location lastLocation; private Location lastLocation;
@Ignore
private Route currentRoute; private Route currentRoute;

View File

@@ -2,16 +2,11 @@ package com.a1.nextlocation.data;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@Entity(tableName = "location")
public class Location { public class Location {
@PrimaryKey
@NonNull @NonNull
private String name; private String name;
@@ -22,7 +17,6 @@ public class Location {
private String coordinates; private String coordinates;
private String description; private String description;
@ColumnInfo(name = "image_url")
@Nullable @Nullable
private String imageUrl; private String imageUrl;

View File

@@ -1,32 +1,25 @@
package com.a1.nextlocation.data; package com.a1.nextlocation.data;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import androidx.room.TypeConverters;
import com.a1.nextlocation.data.db.LocationListTypeConverter;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity(tableName = "route")
public class Route { public class Route {
@PrimaryKey
@NonNull @NonNull
private String name; private String name;
@TypeConverters(LocationListTypeConverter.class)
private List<Location> locations; private List<Location> locations;
@ColumnInfo(name = "total_distance")
private float totalDistance; private float totalDistance;
@ColumnInfo(name = "total_time")
private int totalTime; private int totalTime;
public Route(@NotNull String name) { public Route(@NotNull String name) {

View File

@@ -1,33 +0,0 @@
package com.a1.nextlocation.data.db;
import androidx.room.TypeConverter;
import com.a1.nextlocation.data.Coupon;
import com.a1.nextlocation.data.Route;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
public class CouponListTypeConverter {
private static Gson gson = new Gson();
@TypeConverter
public static List<Coupon> toRoutesList(String data) {
if (data == null) {
return Collections.emptyList();
}
Type listType = new TypeToken<List<Coupon>>() {}.getType();
return gson.fromJson(data,listType);
}
@TypeConverter
public static String fromRoutesList(List<Coupon> list) {
return gson.toJson(list);
}
}

View File

@@ -1,62 +0,0 @@
package com.a1.nextlocation.data.db;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.sqlite.db.SupportSQLiteDatabase;
import com.a1.nextlocation.data.Coupon;
import com.a1.nextlocation.data.Data;
import com.a1.nextlocation.data.Location;
import com.a1.nextlocation.data.Route;
import com.a1.nextlocation.data.db.dao.CouponDao;
import com.a1.nextlocation.data.db.dao.DataDao;
import com.a1.nextlocation.data.db.dao.LocationDao;
import com.a1.nextlocation.data.db.dao.RouteDao;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* @author Sem
*/
@androidx.room.Database(entities = {Coupon.class,Route.class, Location.class, Data.class},version = 1,exportSchema = false)
public abstract class Database extends RoomDatabase {
public abstract RouteDao routeDao();
public abstract CouponDao couponDao();
public abstract LocationDao locationDao();
public abstract DataDao dataDao();
private static volatile Database INSTANCE;
private static final int NUMBER_OF_THREADS = 4;
static final ExecutorService databaseWriterExecutor = Executors.newFixedThreadPool(NUMBER_OF_THREADS);
public static Database getDatabase(final Context context) {
if (INSTANCE == null){
synchronized (Database.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
Database.class,"next_location_db").addCallback(callback).build();
}
}
}
return INSTANCE;
}
private static RoomDatabase.Callback callback = new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
databaseWriterExecutor.execute(() -> {
// TODO populate our database here
});
}
};
}

View File

@@ -1,31 +0,0 @@
package com.a1.nextlocation.data.db;
import androidx.room.TypeConverter;
import com.a1.nextlocation.data.Location;
import com.a1.nextlocation.data.Route;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.Collections;
import java.util.List;
public class LocationListTypeConverter {
private static Gson gson = new Gson();
@TypeConverter
public static List<Location> toLocationList(String data) {
if (data == null) {
return Collections.emptyList();
}
Type listType = new TypeToken<List<Location>>() {}.getType();
return gson.fromJson(data,listType);
}
@TypeConverter
public static String fromLocationList(List<Location> list) {
return gson.toJson(list);
}
}

View File

@@ -1,34 +0,0 @@
package com.a1.nextlocation.data.db.dao;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;
import com.a1.nextlocation.data.Coupon;
import java.util.List;
@Dao
public interface CouponDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(Coupon... coupons);
@Query("DELETE FROM coupon")
void deleteAll();
@Query("SELECT * FROM coupon")
LiveData<List<Coupon>> selectAll();
@Update
public void update(Coupon coupon);
/*
to add an observer to the livedata, you can use the example from https://medium.com/mindorks/using-room-database-with-livedata-android-jetpack-cbf89b677b47
*/
@Query("SELECT * FROM coupon WHERE code = :code LIMIT 1")
Coupon selectCouponByCode(String code);
}

View File

@@ -1,31 +0,0 @@
package com.a1.nextlocation.data.db.dao;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import androidx.room.Update;
import com.a1.nextlocation.data.Data;
@Dao
public interface DataDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(Data... datas);
@Update
void update(Data data);
@Query("DELETE FROM userdata")
void delete();
@Query("SELECT * FROM userdata LIMIT 1")
Data getData();
@Query("SELECT * FROM userdata WHERE distance_traveled = :distance LIMIT 1")
Data getDataByDistance(float distance);
}

View File

@@ -1,27 +0,0 @@
package com.a1.nextlocation.data.db.dao;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import com.a1.nextlocation.data.Location;
import java.util.List;
@Dao
public interface LocationDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(Location... locations);
@Query("DELETE FROM location")
void deleteAll();
@Query("SELECT * FROM location")
LiveData<List<Location>> selectAll();
@Query("SELECT * FROM location WHERE name = :name LIMIT 1")
Location getLocationByName(String name);
}

View File

@@ -1,27 +0,0 @@
package com.a1.nextlocation.data.db.dao;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import com.a1.nextlocation.data.Route;
import java.util.List;
@Dao
public interface RouteDao {
@Insert
void insertAll(Route... routes);
@Query("DELETE FROM route")
void deleteAll();
@Query("SELECT * FROM route")
LiveData<List<Route>> getAll();
@Query("SELECT * FROM route where name = :name LIMIT 1")
Route getRouteByName(String name);
}

View File

@@ -1,42 +0,0 @@
package com.a1.nextlocation.data.db.repositories;
import android.content.Context;
import androidx.lifecycle.LiveData;
import com.a1.nextlocation.data.Coupon;
import com.a1.nextlocation.data.db.dao.CouponDao;
import com.a1.nextlocation.data.db.Database;
import java.util.List;
public class CouponRepository {
private CouponDao mCouponDao;
private LiveData<List<Coupon>> mAllCoupons;
public CouponRepository(Context context) {
Database db = Database.getDatabase(context);
mCouponDao = db.couponDao();
mAllCoupons = mCouponDao.selectAll();
}
public void insert(Coupon... coupons) {
mCouponDao.insertAll(coupons);
}
public void update(Coupon coupon) {
mCouponDao.update(coupon);
}
public LiveData<List<Coupon>> getAllCoupons() {
return mAllCoupons;
}
public Coupon getCoupon(String code) {
return mCouponDao.selectCouponByCode(code);
}
public void deleteAll() {
mCouponDao.deleteAll();
}
}

View File

@@ -1,40 +0,0 @@
package com.a1.nextlocation.data.db.repositories;
import android.content.Context;
import com.a1.nextlocation.data.Data;
import com.a1.nextlocation.data.db.Database;
import com.a1.nextlocation.data.db.dao.DataDao;
public class DataRepository {
private DataDao mDataDao;
private Data data;
public DataRepository(Context context) {
Database db = Database.getDatabase(context);
mDataDao = db.dataDao();
data = mDataDao.getData();
}
public Data getData() {
return data;
}
public Data getDataByDistance(float distance) {
return mDataDao.getDataByDistance(distance);
}
public void deleteAll() {
mDataDao.delete();
}
public void update(Data data) {
mDataDao.update(data);
}
public void insertAll(Data... datas) {
mDataDao.insertAll(datas);
}
}

View File

@@ -1,38 +0,0 @@
package com.a1.nextlocation.data.db.repositories;
import android.content.Context;
import androidx.lifecycle.LiveData;
import com.a1.nextlocation.data.Location;
import com.a1.nextlocation.data.db.Database;
import com.a1.nextlocation.data.db.dao.LocationDao;
import java.util.List;
public class LocationRepository {
private LocationDao mLocationDao;
private LiveData<List<Location>> mAllLocations;
public LocationRepository(Context context) {
Database db = Database.getDatabase(context);
mLocationDao = db.locationDao();
mAllLocations = mLocationDao.selectAll();
}
public LiveData<List<Location>> getAllLocations() {
return mAllLocations;
}
public Location getLocationByName(String name) {
return mLocationDao.getLocationByName(name);
}
public void insertAll(Location... locations) {
mLocationDao.insertAll(locations);
}
public void deleteAll() {
mLocationDao.deleteAll();
}
}

View File

@@ -1,34 +0,0 @@
package com.a1.nextlocation.data.db.repositories;
import android.content.Context;
import androidx.lifecycle.LiveData;
import com.a1.nextlocation.data.Route;
import com.a1.nextlocation.data.db.Database;
import com.a1.nextlocation.data.db.dao.RouteDao;
import java.util.List;
public class RouteRepository {
private RouteDao mRouteDao;
private LiveData<List<Route>> mAllRoutes;
public RouteRepository(Context context) {
Database db = Database.getDatabase(context);
mRouteDao = db.routeDao();
mAllRoutes = mRouteDao.getAll();
}
public LiveData<List<Route>> getAllRoutes() {
return mAllRoutes;
}
public Route getRouteByName(String name) {
return mRouteDao.getRouteByName(name);
}
public void deleteAll() {
mRouteDao.deleteAll();
}
}