remove room stuff
This commit is contained in:
@@ -30,11 +30,6 @@ android {
|
||||
|
||||
dependencies {
|
||||
|
||||
def room_version = "2.2.5"
|
||||
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
annotationProcessor "androidx.room:room-compiler:$room_version"
|
||||
|
||||
//gson
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
|
||||
|
||||
0
app/src/main/assets/database/databse.db
Normal file
0
app/src/main/assets/database/databse.db
Normal file
@@ -1,24 +1,18 @@
|
||||
package com.a1.nextlocation.data;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Entity(tableName = "coupon")
|
||||
|
||||
public class Coupon {
|
||||
|
||||
/**
|
||||
* fields need to be public for the database to be able to use them
|
||||
*/
|
||||
@PrimaryKey
|
||||
@NonNull
|
||||
@ColumnInfo(name = "code")
|
||||
private String code;
|
||||
|
||||
@ColumnInfo(name = "reward")
|
||||
|
||||
@NonNull
|
||||
private String reward;
|
||||
|
||||
|
||||
@@ -1,43 +1,24 @@
|
||||
package com.a1.nextlocation.data;
|
||||
|
||||
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.List;
|
||||
|
||||
@Entity(tableName = "userdata")
|
||||
public class Data {
|
||||
|
||||
|
||||
|
||||
@PrimaryKey
|
||||
@NonNull
|
||||
@ColumnInfo(name = "distance_traveled")
|
||||
private float distanceTraveled;
|
||||
|
||||
@ColumnInfo(name = "locations_visited")
|
||||
private int locationsVisited;
|
||||
|
||||
@ColumnInfo(name = "total_time")
|
||||
private int totalTime;
|
||||
|
||||
@TypeConverters(CouponListTypeConverter.class)
|
||||
private List<Coupon> couponList;
|
||||
|
||||
@Ignore
|
||||
private Location nextLocation;
|
||||
|
||||
@Ignore
|
||||
private Location lastLocation;
|
||||
|
||||
@Ignore
|
||||
private Route currentRoute;
|
||||
|
||||
|
||||
|
||||
@@ -2,16 +2,11 @@ package com.a1.nextlocation.data;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.room.ColumnInfo;
|
||||
import androidx.room.Entity;
|
||||
import androidx.room.PrimaryKey;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Entity(tableName = "location")
|
||||
public class Location {
|
||||
|
||||
@PrimaryKey
|
||||
@NonNull
|
||||
private String name;
|
||||
|
||||
@@ -22,7 +17,6 @@ public class Location {
|
||||
private String coordinates;
|
||||
private String description;
|
||||
|
||||
@ColumnInfo(name = "image_url")
|
||||
@Nullable
|
||||
private String imageUrl;
|
||||
|
||||
|
||||
@@ -1,32 +1,25 @@
|
||||
package com.a1.nextlocation.data;
|
||||
|
||||
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 java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Entity(tableName = "route")
|
||||
public class Route {
|
||||
|
||||
@PrimaryKey
|
||||
|
||||
@NonNull
|
||||
private String name;
|
||||
|
||||
@TypeConverters(LocationListTypeConverter.class)
|
||||
|
||||
private List<Location> locations;
|
||||
|
||||
@ColumnInfo(name = "total_distance")
|
||||
|
||||
private float totalDistance;
|
||||
|
||||
@ColumnInfo(name = "total_time")
|
||||
|
||||
private int totalTime;
|
||||
|
||||
public Route(@NotNull String name) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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
|
||||
});
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user