added location dao and repository
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user