Skip to content

Commit

Permalink
First commit - Implement RoomDb with LiveData
Browse files Browse the repository at this point in the history
  • Loading branch information
anitaa committed May 4, 2018
0 parents commit be95c6c
Show file tree
Hide file tree
Showing 71 changed files with 2,414 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
temp/*

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties
*.keystore

# Eclipse project files
.classpath
.project

# Android Studio
.idea/

# Ignore gradle files
.gradle/
build/

.gradle
/*/local.properties
/*/out
/*/*/build
/*/*/production
/*/*/*.iml
/*/*.iml
*.iml
*.iws
*.ipr
*~
*.swp
43 changes: 43 additions & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
temp/*

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties
*.keystore

# Eclipse project files
.classpath
.project

# Android Studio
.idea/

# Ignore gradle files
.gradle/
build/

.gradle
/*/local.properties
/*/out
/*/*/build
/*/*/production
/*/*/*.iml
/*/*.iml
*.iml
*.iws
*.ipr
*~
*.swp
38 changes: 38 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
applicationId "com.an.room"
minSdkVersion 14
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:cardview-v7:27.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

implementation "android.arch.persistence.room:runtime:1.0.0"
annotationProcessor "android.arch.persistence.room:compiler:1.0.0"

implementation "android.arch.lifecycle:livedata:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

implementation 'com.an.customfontview:customfont:0.1.0'
}
21 changes: 21 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
112 changes: 112 additions & 0 deletions app/src/androidTest/java/com/an/room/ExampleInstrumentedTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package com.an.room;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;

import com.an.room.repository.NoteRepository;
import com.an.room.util.AppUtils;

import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.*;


@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.an.room", appContext.getPackageName());

String password = "Password@1";
System.out.println(AppUtils.generateHash(password));
}


private Context appContext;
private NoteRepository noteRepository;

@Test
public void insertTaskTest() throws InterruptedException {
appContext = InstrumentationRegistry.getTargetContext();
noteRepository = new NoteRepository(appContext);

String title = "This is the title of the third task";
String description = "This is the description of the third task";
noteRepository.insertTask(title, description);

// Task task = taskRepository.getTask(3);
// assertEquals("Task is inserted successfully", title, task.getTitle());
Thread.sleep(3500);
}


@Test
public void updateTaskTest() throws InterruptedException {
appContext = InstrumentationRegistry.getTargetContext();
noteRepository = new NoteRepository(appContext);


// Task task = taskRepository.getTask(2);
// task.setEncrypt(true);
// task.setPassword(AppUtils.generateHash("Password@1"));
// task.setTitle("This is an example of modify");
// task.setDescription("This is an example to modify the second task");
//
// taskRepository.updateTask(task);
// Thread.sleep(3500);
}


@Test
public void deleteTaskTest() throws InterruptedException {
appContext = InstrumentationRegistry.getTargetContext();
noteRepository = new NoteRepository(appContext);

noteRepository.deleteTask(3);
Thread.sleep(3500);
}


@Test
public void getTaskFromIdTest() {
appContext = InstrumentationRegistry.getTargetContext();
noteRepository = new NoteRepository(appContext);

// Task task = taskRepository.getTask(2);
// System.out.println("-----------------------");
// System.out.println(task.getId());
// System.out.println(task.getTitle());
// System.out.println(task.getDescription());
// System.out.println(task.getCreatedAt());
// System.out.println(task.getModifiedAt());
// System.out.println(task.getPassword());
// System.out.println(task.isEncrypt());
// System.out.println("-----------------------");
}


@Test
public void getAllTasksTest() {
appContext = InstrumentationRegistry.getTargetContext();
noteRepository = new NoteRepository(appContext);

// taskRepository.getTasks().observe(appContext, new Observer<List<Task>>() {
// @Override
// public void onChanged(@Nullable List<Task> tasks) {
// for(Task task : tasks) {
// System.out.println("-----------------------");
// System.out.println(task.getId());
// System.out.println(task.getTitle());
// System.out.println(task.getDescription());
// System.out.println(task.getCreatedAt());
// System.out.println(task.getModifiedAt());
// System.out.println(task.getPassword());
// System.out.println(task.isEncrypt());
// }
// }
// });
}
}
37 changes: 37 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.an.room">

<application
android:name=".AppController"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">


<activity
android:name=".ui.activity.NotesListActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>


<activity
android:name=".ui.activity.AddNoteActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:screenOrientation="portrait" />

<activity
android:name=".ui.activity.PwdActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:screenOrientation="portrait" />

</application>
</manifest>
Binary file added app/src/main/assets/fonts/montserrat_bold.otf
Binary file not shown.
Binary file added app/src/main/assets/fonts/montserrat_light.otf
Binary file not shown.
Binary file added app/src/main/assets/fonts/montserrat_medium.otf
Binary file not shown.
Binary file added app/src/main/assets/fonts/montserrat_regular.otf
Binary file not shown.
13 changes: 13 additions & 0 deletions app/src/main/java/com/an/room/AppConstants.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.an.room;

public interface AppConstants {

String INTENT_TITLE = "intent_title";
String INTENT_DESC = "intent_desc";
String INTENT_ENCRYPT = "intent_encrypt";
String INTENT_PWD = "intent_pwd";
String INTENT_TASK = "intent_task";
String INTENT_DELETE = "intent_delete";

int ACTIVITY_REQUEST_CODE = 200;
}
8 changes: 8 additions & 0 deletions app/src/main/java/com/an/room/AppController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.an.room;

import android.app.Application;

public class AppController extends Application {


}
36 changes: 36 additions & 0 deletions app/src/main/java/com/an/room/dao/DaoAccess.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.an.room.dao;


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

import com.an.room.model.Note;

import java.util.List;

@Dao
public interface DaoAccess {

@Insert
Long insertTask(Note note);


@Query("SELECT * FROM Note ORDER BY created_at desc")
LiveData<List<Note>> fetchAllTasks();


@Query("SELECT * FROM Note WHERE id =:taskId")
LiveData<Note> getTask(int taskId);


@Update
void updateTask(Note note);


@Delete
void deleteTask(Note note);
}
14 changes: 14 additions & 0 deletions app/src/main/java/com/an/room/db/NoteDatabase.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.an.room.db;

import android.arch.persistence.room.Database;
import android.arch.persistence.room.RoomDatabase;

import com.an.room.dao.DaoAccess;
import com.an.room.model.Note;


@Database(entities = {Note.class}, version = 1, exportSchema = false)
public abstract class NoteDatabase extends RoomDatabase {

public abstract DaoAccess daoAccess();
}
Loading

0 comments on commit be95c6c

Please sign in to comment.