Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ In this demo, I have covered **Mediator Live data, Mutable live data, Observable

## Room and Retrofit using same Model

I have used same models for Room and Retrofit2 library as both are configured using annotaions.
I have used same models for Room and Retrofit2 library as both are configured using annotations.

```
@Entity
Expand Down Expand Up @@ -277,4 +277,4 @@ public class APIClient {
This is the overall project structure of this project.


![Project Structure](https://github.com/martinraj/MVVM-architecture-lifecycle-components-and-Room-database-project/blob/master/screenshots%20and%20demo/Screenshot%20(114).png)
![Project Structure](https://github.com/AyushGupta0202/Food-ordering-app-like-swiggy-uber-eats-MVVM-and-Room-database-/blob/issue-4/screenshots%20and%20demo/Screenshot%20(115).png)
30 changes: 15 additions & 15 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 28
compileSdkVersion 30
defaultConfig {
applicationId "com.marty.yummy"
minSdkVersion 17
targetSdkVersion 28
minSdkVersion 22
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
vectorDrawables.useSupportLibrary = true
}
buildTypes {
Expand All @@ -21,28 +21,28 @@ android {

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
//retrofit
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
//room
implementation "android.arch.persistence.room:runtime:1.1.1"
annotationProcessor "android.arch.persistence.room:compiler:1.1.1"
implementation 'androidx.room:room-runtime:2.0.0'
annotationProcessor 'androidx.room:room-compiler:2.0.0'

//live data and view modals
implementation 'android.arch.lifecycle:livedata:1.1.1'
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation 'androidx.lifecycle:lifecycle-livedata:2.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
//Glide
implementation 'com.github.bumptech.glide:glide:4.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'


testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
testImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.marty.yummy;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.ext.junit.runners.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.marty.yummy">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

<application
android:allowBackup="true"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.marty.yummy.dbutilities;


import android.arch.persistence.room.Database;
import android.arch.persistence.room.Room;
import android.arch.persistence.room.RoomDatabase;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import android.content.Context;

import com.marty.yummy.model.CartItem;
Expand All @@ -14,6 +14,8 @@
/**
* Created by Marty on 12/29/2017.
*/

//Database singleton class.
@Database(entities = {FoodDetails.class, CartItem.class}, version = 2,exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
Expand Down
10 changes: 5 additions & 5 deletions app/src/main/java/com/marty/yummy/dbutilities/CartItemDao.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package com.marty.yummy.dbutilities;

import android.arch.lifecycle.LiveData;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.Query;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;

import com.marty.yummy.model.CartItem;

import java.util.List;

import static android.arch.persistence.room.OnConflictStrategy.REPLACE;
import static androidx.room.OnConflictStrategy.REPLACE;


@Dao
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package com.marty.yummy.dbutilities;


import android.arch.lifecycle.LiveData;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.Query;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;

import com.marty.yummy.model.FoodDetails;

import java.util.List;

import static android.arch.persistence.room.OnConflictStrategy.REPLACE;
import static androidx.room.OnConflictStrategy.REPLACE;


@Dao
Expand Down
10 changes: 5 additions & 5 deletions app/src/main/java/com/marty/yummy/model/CartItem.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.marty.yummy.model;


import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.ForeignKey;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.ForeignKey;
import androidx.room.PrimaryKey;
import androidx.annotation.NonNull;

@Entity
public class CartItem {
Expand Down
8 changes: 4 additions & 4 deletions app/src/main/java/com/marty/yummy/model/FoodDetails.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.marty.yummy.model;

import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import androidx.annotation.NonNull;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

Expand All @@ -29,7 +29,7 @@ public class FoodDetails {

@SerializedName("item_quantity")
@Expose
private Integer quantity = 0;
private Integer quantity;

public FoodDetails(@NonNull String name, Double price, Double rating, String imageUrl,Integer quantity) {
this.name = name;
Expand Down
16 changes: 16 additions & 0 deletions app/src/main/java/com/marty/yummy/network/NetworkConnection.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.marty.yummy.network;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;

//Check for internet connectivity.
public class NetworkConnection {
public static boolean isConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifiCon = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobCon = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

return (wifiCon != null && wifiCon.isConnected()) || (mobCon != null && mobCon.isConnected());
}
}
2 changes: 2 additions & 0 deletions app/src/main/java/com/marty/yummy/services/APIClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

//API client class setting up retrofit client.
public class APIClient {

//Address of the network api service.
private static final String BASE_URL = "https://android-full-time-task.firebaseio.com";
private static Retrofit retrofit = null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

public interface YummyAPIServices {

//Method to get the JSON response from the API.
@GET("/data.json")
Call<List<FoodDetails>> getFoodData();
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.marty.yummy.services.repository;

import android.arch.lifecycle.MutableLiveData;
import androidx.lifecycle.MutableLiveData;
import android.content.Context;
import android.util.Log;

Expand All @@ -17,13 +17,16 @@
import retrofit2.Callback;
import retrofit2.Response;

//Singleton Repository instance.
public class FoodRepository {

private static FoodRepository instance;
private static final String TAG = "FoodRepository";

private YummyAPIServices yummyAPIServices = APIClient.getClient().create(YummyAPIServices.class);
//API service for transactions over network.
private final YummyAPIServices yummyAPIServices = APIClient.getClient().create(YummyAPIServices.class);

//Method to get network response.
public MutableLiveData<Boolean> getFoodMenu(final Context context){

final MutableLiveData<Boolean> isFoodCallOngoing = new MutableLiveData<>();
Expand All @@ -48,6 +51,7 @@ public void onFailure(Call<List<FoodDetails>> call, Throwable t) {
return isFoodCallOngoing;
}

//Singleton implementation getInstance method.
public static FoodRepository getInstance() {
if(instance == null){
synchronized (FoodRepository.class){
Expand All @@ -59,6 +63,7 @@ public static FoodRepository getInstance() {
return instance;
}

//Populate the database.
public void updateCart(final AppDatabase db, FoodDetails foodDetails) {
new UpdateCart(db).execute(foodDetails);
}
Expand Down
Loading