added location dao and repository

This commit is contained in:
Sem van der Hoeven
2020-12-14 12:13:15 +01:00
parent 204d45cece
commit 23d23bead4
5 changed files with 84 additions and 3 deletions

View File

@@ -1,15 +1,33 @@
package com.a1.nextlocation.data; package com.a1.nextlocation.data;
import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import org.jetbrains.annotations.NotNull;
@Entity(tableName = "location")
public class Location { public class Location {
@PrimaryKey
@NonNull
private String name; private String name;
private String coordinates; private String coordinates;
private String description; private String description;
public Location(@NotNull String name, String coordinates, String description) {
this.name = name;
this.coordinates = coordinates;
this.description = description;
}
@NotNull
public String getName() { public String getName() {
return name; return name;
} }
public void setName(String name) { public void setName(@NotNull String name) {
this.name = name; this.name = name;
} }

View File

@@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Entity @Entity(tableName = "route")
public class Route { public class Route {
@PrimaryKey @PrimaryKey

View File

@@ -8,18 +8,24 @@ import androidx.room.RoomDatabase;
import androidx.sqlite.db.SupportSQLiteDatabase; import androidx.sqlite.db.SupportSQLiteDatabase;
import com.a1.nextlocation.data.Coupon; import com.a1.nextlocation.data.Coupon;
import com.a1.nextlocation.data.Location;
import com.a1.nextlocation.data.Route; import com.a1.nextlocation.data.Route;
import com.a1.nextlocation.data.db.dao.CouponDao; import com.a1.nextlocation.data.db.dao.CouponDao;
import com.a1.nextlocation.data.db.dao.LocationDao;
import com.a1.nextlocation.data.db.dao.RouteDao; import com.a1.nextlocation.data.db.dao.RouteDao;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@androidx.room.Database(entities = {Coupon.class,Route.class},version = 1,exportSchema = false) /**
* @author Sem
*/
@androidx.room.Database(entities = {Coupon.class,Route.class, Location.class},version = 1,exportSchema = false)
public abstract class Database extends RoomDatabase { public abstract class Database extends RoomDatabase {
public abstract RouteDao routeDao(); public abstract RouteDao routeDao();
public abstract CouponDao couponDao(); public abstract CouponDao couponDao();
public abstract LocationDao locationDao();
private static volatile Database INSTANCE; private static volatile Database INSTANCE;
private static final int NUMBER_OF_THREADS = 4; private static final int NUMBER_OF_THREADS = 4;

View File

@@ -0,0 +1,27 @@
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

@@ -0,0 +1,30 @@
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);
}
}