├── app
├── .gitignore
├── src
│ ├── main
│ │ ├── assets
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ ├── 4.png
│ │ │ └── mlsdev-logo.png
│ │ ├── res
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_plus.png
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── values
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── colors.xml
│ │ │ │ ├── styles.xml
│ │ │ │ └── strings.xml
│ │ │ ├── values-w820dp
│ │ │ │ └── dimens.xml
│ │ │ ├── layout
│ │ │ │ ├── content_students.xml
│ │ │ │ ├── content_universities.xml
│ │ │ │ ├── activity_students.xml
│ │ │ │ ├── layout_item_university.xml
│ │ │ │ ├── activity_universities.xml
│ │ │ │ ├── dialog_add_university.xml
│ │ │ │ ├── layout_item_student.xml
│ │ │ │ └── dialog_add_student.xml
│ │ │ └── values-v21
│ │ │ │ └── styles.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── cook
│ │ │ │ └── simplerealmandroid
│ │ │ │ ├── realm
│ │ │ │ ├── repository
│ │ │ │ │ ├── IBaseRepository.java
│ │ │ │ │ ├── IUniversityRepository.java
│ │ │ │ │ ├── IStudentRepository.java
│ │ │ │ │ └── impl
│ │ │ │ │ │ ├── UniversityRepository.java
│ │ │ │ │ │ └── StudentRepository.java
│ │ │ │ ├── module
│ │ │ │ │ └── SimpleRealmModule.java
│ │ │ │ └── table
│ │ │ │ │ └── RealmTable.java
│ │ │ │ ├── presenters
│ │ │ │ ├── IBasePresenter.java
│ │ │ │ ├── IUniversityPresenter.java
│ │ │ │ ├── IStudentPresenter.java
│ │ │ │ └── impl
│ │ │ │ │ ├── UniversityPresenter.java
│ │ │ │ │ └── StudentPresenter.java
│ │ │ │ ├── tools
│ │ │ │ └── DateFormatter.java
│ │ │ │ ├── view
│ │ │ │ ├── activity
│ │ │ │ │ ├── base
│ │ │ │ │ │ └── BaseActivity.java
│ │ │ │ │ ├── StudentsActivity.java
│ │ │ │ │ └── UniversityActivity.java
│ │ │ │ ├── adapters
│ │ │ │ │ ├── StudentsAdapter.java
│ │ │ │ │ └── UniversityAdapter.java
│ │ │ │ └── dialogs
│ │ │ │ │ ├── AddUniversityDialog.java
│ │ │ │ │ └── AddStudentDialog.java
│ │ │ │ ├── app
│ │ │ │ └── SimpleRealmApp.java
│ │ │ │ └── model
│ │ │ │ ├── University.java
│ │ │ │ └── Student.java
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── cook
│ │ │ └── simplerealmandroid
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── cook
│ │ └── simplerealmandroid
│ │ └── ApplicationTest.java
├── proguard-rules.pro
└── build.gradle
├── settings.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .gitignore
├── gradle.properties
├── README.md
├── gradlew.bat
└── gradlew
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | *.iml
3 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/app/src/main/assets/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/assets/1.png
--------------------------------------------------------------------------------
/app/src/main/assets/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/assets/2.png
--------------------------------------------------------------------------------
/app/src/main/assets/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/assets/3.png
--------------------------------------------------------------------------------
/app/src/main/assets/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/assets/4.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/assets/mlsdev-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/assets/mlsdev-logo.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | /.idea/libraries
5 | .DS_Store
6 | /build
7 | /captures
8 | *.iml
9 | .idea
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/res/mipmap-xxhdpi/ic_plus.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MLSDev/example-realm-android/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/realm/repository/IBaseRepository.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.realm.repository;
2 |
3 | /**
4 | * Created by roma on 16.10.15.
5 | */
6 | public interface IBaseRepository {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Oct 13 16:22:59 EEST 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/presenters/IBasePresenter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.presenters;
2 |
3 | /**
4 | * Created by roma on 03.11.15.
5 | */
6 | public interface IBasePresenter {
7 | void subscribeCallbacks();
8 | void unSubscribeCallbacks();
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 16dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/test/java/com/cook/simplerealmandroid/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * To work on unit tests, switch the Test Artifact in the Build Variants view.
9 | */
10 | public class ExampleUnitTest {
11 | @Test
12 | public void addition_isCorrect() throws Exception {
13 | assertEquals(4, 2 + 2);
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/realm/module/SimpleRealmModule.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.realm.module;
2 |
3 | import com.cook.simplerealmandroid.model.Student;
4 | import com.cook.simplerealmandroid.model.University;
5 |
6 | import io.realm.annotations.RealmModule;
7 |
8 | /**
9 | * Created by roma on 15.10.15.
10 | */
11 | @RealmModule(classes = {Student.class, University.class})
12 | public class SimpleRealmModule {
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/cook/simplerealmandroid/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFF
4 | #00BCD4
5 | #0097A7
6 | #FFEB3B
7 | #212121
8 |
9 | #FFEB3B
10 | #8f852c
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/tools/DateFormatter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.tools;
2 |
3 | import java.text.SimpleDateFormat;
4 | import java.util.Date;
5 |
6 | /**
7 | * Created by roma on 04.11.15.
8 | */
9 | public class DateFormatter {
10 |
11 | private static String DATE_PATTERN = "dd/MM/yyyy";
12 |
13 | public static String convertDateToString(Date date){
14 | return new SimpleDateFormat(DATE_PATTERN).format(date);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/presenters/IUniversityPresenter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.presenters;
2 |
3 | /**
4 | * Created by roma on 19.10.15.
5 | */
6 | public interface IUniversityPresenter extends IBasePresenter {
7 |
8 | void addUniversity(String universityName);
9 |
10 | void deleteUniversity(int position);
11 |
12 | void deleteUniversityById(String Id);
13 |
14 | void getUniversityById(String id);
15 |
16 | void getAllUniversities();
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/view/activity/base/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.view.activity.base;
2 |
3 | import android.support.v7.app.AppCompatActivity;
4 | import android.widget.Toast;
5 |
6 | /**
7 | * Created by roma on 16.10.15.
8 | */
9 | public abstract class BaseActivity extends AppCompatActivity {
10 |
11 | abstract protected void initComponents();
12 |
13 | public void showMessage(String message){
14 | Toast.makeText(getApplicationContext(), message, Toast.LENGTH_LONG).show();
15 | }
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/realm/table/RealmTable.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.realm.table;
2 |
3 | /**
4 | * Created by roma on 16.10.15.
5 | */
6 | public interface RealmTable {
7 |
8 | String ID = "id";
9 |
10 | interface University {
11 | String STUDENTS = "students";
12 | String NAME = "name";
13 | }
14 |
15 | interface Student{
16 | String NAME = "name";
17 | String AGE = "age";
18 | String EMAIL = "email";
19 | String BOOKS = "books";
20 | String LESSONS = "lessons";
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_students.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/content_universities.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /home/romakukhar/Tools/Android/Sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/presenters/IStudentPresenter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.presenters;
2 |
3 | import com.cook.simplerealmandroid.model.Student;
4 |
5 | /**
6 | * Created by roma on 03.11.15.
7 | */
8 | public interface IStudentPresenter extends IBasePresenter{
9 |
10 | void addStudent(Student student);
11 |
12 | void addStudentByUniversityId(Student student, String universityId);
13 |
14 | void deleteStudentByPosition(int position);
15 |
16 | void deleteStudentById(String studentId);
17 |
18 | void getAllStudents();
19 |
20 | void getAllStudentsByUniversityId(String id);
21 |
22 | void getStudentById(String id);
23 |
24 | void getUniversityById(String id);
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/app/SimpleRealmApp.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.app;
2 |
3 | import android.app.Application;
4 |
5 | import com.cook.simplerealmandroid.realm.module.SimpleRealmModule;
6 |
7 | import io.realm.Realm;
8 | import io.realm.RealmConfiguration;
9 |
10 | /**
11 | * Created by roma on 15.10.15.
12 | */
13 | public class SimpleRealmApp extends Application {
14 |
15 | private static SimpleRealmApp instance;
16 |
17 | @Override
18 | public void onCreate() {
19 | super.onCreate();
20 | instance = this;
21 | RealmConfiguration config = new RealmConfiguration.Builder(getApplicationContext()).setModules(new SimpleRealmModule()).build();
22 | Realm.setDefaultConfiguration(config);
23 | }
24 |
25 | public static SimpleRealmApp getInstance() {
26 | return instance;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_students.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
18 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_item_university.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
10 |
14 |
15 |
16 |
17 |
18 |
19 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
16 |
17 |
18 |
19 |
20 |
21 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/model/University.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.model;
2 |
3 |
4 | import io.realm.RealmList;
5 | import io.realm.RealmObject;
6 | import io.realm.annotations.PrimaryKey;
7 |
8 | /**
9 | * Created by roma on 14.10.15.
10 | */
11 | public class University extends RealmObject {
12 |
13 | @PrimaryKey
14 | private String id;
15 | private String name;
16 | private RealmList students;
17 |
18 | public University() {
19 | }
20 |
21 | public University(String name) {
22 | this.name = name;
23 | }
24 |
25 | public String getId() {
26 | return id;
27 | }
28 |
29 | public void setId(String id) {
30 | this.id = id;
31 | }
32 |
33 | public String getName() {
34 | return name;
35 | }
36 |
37 | public void setName(String name) {
38 | this.name = name;
39 | }
40 |
41 | public RealmList getStudents() {
42 | return students;
43 | }
44 |
45 | public void setStudents(RealmList students) {
46 | this.students = students;
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 23
5 | buildToolsVersion "23.0.1"
6 |
7 | defaultConfig {
8 | applicationId "com.cook.simplerealmandroid"
9 | minSdkVersion 16
10 | targetSdkVersion 23
11 | versionCode 1
12 | versionName "1.0"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 | }
21 |
22 | dependencies {
23 | compile fileTree(dir: 'libs', include: ['*.jar'])
24 | testCompile 'junit:junit:4.12'
25 | compile 'com.android.support:appcompat-v7:23.1.0'
26 | // Recycler View
27 | compile 'com.android.support:recyclerview-v7:23.1.0'
28 | // Card View
29 | compile 'com.android.support:cardview-v7:23.1.0'
30 | // Support Design
31 | compile 'com.android.support:design:23.1.0'
32 | // Realm
33 | compile 'io.realm:realm-android:0.83.0'
34 |
35 | // material datePicker
36 | compile 'com.wdullaer:materialdatetimepicker:1.3.1'
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/model/Student.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.model;
2 |
3 | import java.util.Date;
4 |
5 | import io.realm.RealmObject;
6 | import io.realm.annotations.PrimaryKey;
7 | import io.realm.annotations.Required;
8 |
9 | /**
10 | * Created by roma on 14.10.15.
11 | */
12 | public class Student extends RealmObject {
13 |
14 | @PrimaryKey
15 | private String id;
16 | @Required
17 | private String name;
18 | @Required
19 | private Date birthday;
20 | @Required
21 | private String email;
22 |
23 | public String getName() {
24 | return name;
25 | }
26 |
27 | public void setName(String name) {
28 | this.name = name;
29 | }
30 |
31 | public Date getBirthday() {
32 | return birthday;
33 | }
34 |
35 | public void setBirthday(Date birthday) {
36 | this.birthday = birthday;
37 | }
38 |
39 | public String getId() {
40 | return id;
41 | }
42 |
43 | public void setId(String id) {
44 | this.id = id;
45 | }
46 |
47 | public String getEmail() {
48 | return email;
49 | }
50 |
51 | public void setEmail(String email) {
52 | this.email = email;
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | SimpleRealmAndroid
3 | Settings
4 | Add University
5 | Add Student
6 | Add Book
7 |
8 |
9 | Add University
10 | Universitie\'s name
11 | name
12 |
13 |
14 |
15 | Add Student
16 | Birthday :
17 | Email :
18 |
19 |
20 | Name
21 | Email
22 | Birthday
23 | Add
24 |
25 |
26 | Okь
27 | Cancel
28 |
29 |
30 | Universities
31 | Students
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/realm/repository/IUniversityRepository.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.realm.repository;
2 |
3 | import com.cook.simplerealmandroid.model.University;
4 |
5 | import io.realm.RealmResults;
6 |
7 | /**
8 | * Created by roma on 16.10.15.
9 | */
10 | public interface IUniversityRepository extends IBaseRepository {
11 |
12 | interface OnAddUniversityCallback {
13 | void onSuccess();
14 | void onError(String message);
15 | }
16 |
17 | interface OnGetAllUniversityCallback {
18 | void onSuccess(RealmResults universities);
19 | void onError(String message);
20 | }
21 |
22 | interface OnGetUniversityByIdCallback {
23 | void onSuccess(University university);
24 | void onError(String message);
25 | }
26 |
27 | interface OnDeleteUniversityCallback {
28 | void onSuccess();
29 | void onError(String message);
30 | }
31 |
32 | void addUniversity(University university, OnAddUniversityCallback callback);
33 |
34 | void deleteUniversityById(String Id, OnDeleteUniversityCallback callback);
35 |
36 | void deleteUniversityByPosition(int position, OnDeleteUniversityCallback callback);
37 |
38 | void getAllUniversities(OnGetAllUniversityCallback callback);
39 |
40 | void getUniversityById(String id, OnGetUniversityByIdCallback callback);
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_universities.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
21 |
22 |
23 |
24 |
25 |
26 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/realm/repository/IStudentRepository.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.realm.repository;
2 |
3 | import com.cook.simplerealmandroid.model.Student;
4 |
5 | import io.realm.RealmList;
6 | import io.realm.RealmResults;
7 |
8 | /**
9 | * Created by roma on 16.10.15.
10 | */
11 | public interface IStudentRepository {
12 |
13 | interface OnSaveStudentCallback {
14 | void onSuccess();
15 | void onError(String message);
16 | }
17 |
18 | interface OnDeleteStudentCallback {
19 | void onSuccess();
20 | void onError(String message);
21 | }
22 |
23 | interface OnGetStudentByIdCallback {
24 | void onSuccess(Student student);
25 | void onError(String message);
26 | }
27 |
28 | interface OnGetAllStudentsCallback {
29 | void onSuccess(RealmResults students);
30 | void onError(String message);
31 | }
32 |
33 | interface OnGetStudentsCallback{
34 | void onSuccess(RealmList students);
35 | void onError(String message);
36 | }
37 |
38 | void addStudent(Student student, OnSaveStudentCallback callback);
39 |
40 | void addStudentByUniversityId(Student student, String universityId, OnSaveStudentCallback callback);
41 |
42 | void deleteStudentById(String id, OnDeleteStudentCallback callback);
43 |
44 | void deleteStudentByPosition(int position, OnDeleteStudentCallback callback);
45 |
46 | void getAllStudents(OnGetAllStudentsCallback callback);
47 |
48 | void getAllStudentsByUniversityId(String id, OnGetStudentsCallback callback);
49 |
50 | void getStudentById(String id, OnGetStudentByIdCallback callback);
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_add_university.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
18 |
19 |
30 |
31 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_item_student.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
12 |
18 |
19 |
28 |
29 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #Realm Android Example
2 |
3 | ##Description
4 | [Realm][realm] is a mobile database.
5 |
6 | This app shows how you can integrate [Realm][realm] in your android application.
7 | The main functionality of this app is adding and deleting universities and students.
8 |
9 |
10 |
11 |
12 |
13 |
14 | ## Requirements
15 | Install the following software:
16 |
17 | [Java] [java]
18 |
19 | [Android SDK] [android sdk]
20 |
21 | [Android Studio] [android studio]
22 |
23 | ## Usage
24 |
25 | Run command
26 | `gradlew :app:clean :app:assembleDebug`
27 |
28 | Install on device
29 | `gradlew :app:installDebug`
30 |
31 | ## Authors
32 | * [Roman Kukhar](mailto:kukhar@mlsdev.com) ([kukharoma][github-kukharoma]), MLSDev
33 |
34 | ## About MLSDev
35 |
36 | [
][mlsdev]
37 |
38 | Realm Android Example are maintained by MLSDev, Inc. We specialize in providing all-in-one solution in mobile and web development. Our team follows Lean principles and works according to agile methodologies to deliver the best results reducing the budget for development and its timeline.
39 |
40 | Find out more [here][mlsdev] and don't hesitate to [contact us][contact]!
41 |
42 | [mlsdev]: http://mlsdev.com
43 | [contact]: http://mlsdev.com/contact_us
44 | [realm]: https://realm.io/
45 | [android studio]: https://developer.android.com/intl/ru/sdk/index.html
46 | [java]: http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html
47 | [android sdk]: https://developer.android.com/intl/ru/sdk/index.html
48 | [github-kukharoma]: https://github.com/kukharroma
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/view/adapters/StudentsAdapter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.view.adapters;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.TextView;
8 |
9 | import com.cook.simplerealmandroid.R;
10 | import com.cook.simplerealmandroid.app.SimpleRealmApp;
11 | import com.cook.simplerealmandroid.model.Student;
12 | import com.cook.simplerealmandroid.tools.DateFormatter;
13 |
14 | import io.realm.RealmList;
15 |
16 | /**
17 | * Created by roma on 03.11.15.
18 | */
19 | public class StudentsAdapter extends RecyclerView.Adapter {
20 |
21 | private RealmList students;
22 |
23 | public StudentsAdapter(RealmList students) {
24 | this.students = students;
25 | }
26 |
27 | @Override
28 | public StudentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
29 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item_student, parent, false);
30 | return new StudentViewHolder(view);
31 | }
32 |
33 | @Override
34 | public void onBindViewHolder(StudentViewHolder holder, int position) {
35 | holder.tvName.setText(students.get(position).getName());
36 | String birthday = SimpleRealmApp.getInstance().getString(R.string.birthday) + " " + DateFormatter.convertDateToString(students.get(position).getBirthday());
37 | holder.tvBirthday.setText(birthday);
38 | String email = SimpleRealmApp.getInstance().getString(R.string.email) + " " + students.get(position).getEmail();
39 | holder.tvEmail.setText(email);
40 | }
41 |
42 | @Override
43 | public int getItemCount() {
44 | return students.size();
45 | }
46 |
47 | public class StudentViewHolder extends RecyclerView.ViewHolder {
48 |
49 | private TextView tvName;
50 | private TextView tvBirthday;
51 | private TextView tvEmail;
52 |
53 | public StudentViewHolder(View itemView) {
54 | super(itemView);
55 |
56 | tvName = (TextView) itemView.findViewById(R.id.tv_student_name);
57 | tvBirthday = (TextView) itemView.findViewById(R.id.tv_birthday);
58 | tvEmail = (TextView) itemView.findViewById(R.id.tv_email);
59 | }
60 | }
61 |
62 | }
63 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/view/dialogs/AddUniversityDialog.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.view.dialogs;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.Nullable;
5 | import android.support.v4.app.DialogFragment;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.view.WindowManager;
10 | import android.widget.Button;
11 | import android.widget.EditText;
12 |
13 | import com.cook.simplerealmandroid.R;
14 |
15 | /**
16 | * Created by roma on 05.11.15.
17 | */
18 | public class AddUniversityDialog extends DialogFragment implements View.OnClickListener {
19 |
20 | private EditText etUniversityName;
21 | private Button btAddUniversity;
22 |
23 | private OnAddUniversityClickListener listener;
24 |
25 | @Override
26 | public void onCreate(Bundle savedInstanceState) {
27 | super.onCreate(savedInstanceState);
28 | setStyle(DialogFragment.STYLE_NORMAL, R.style.AlertDialogStyle);
29 | }
30 |
31 | @Nullable
32 | @Override
33 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
34 | View view = inflater.inflate(R.layout.dialog_add_university, container);
35 | initComponents(view);
36 | return view;
37 | }
38 |
39 | private void initComponents(View view) {
40 | etUniversityName = (EditText) view.findViewById(R.id.et_university_name);
41 | etUniversityName.requestFocus();
42 | getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
43 | btAddUniversity = (Button) view.findViewById(R.id.bt_add_university);
44 | btAddUniversity.setOnClickListener(this);
45 | }
46 |
47 | @Override
48 | public void onClick(View v) {
49 | switch (v.getId()) {
50 | case R.id.bt_add_university: {
51 | if (isUniversityInfoValid())
52 | listener.onAddUniversityClickListener(etUniversityName.getText().toString());
53 | break;
54 | }
55 | }
56 | }
57 |
58 | private boolean isUniversityInfoValid() {
59 | return !etUniversityName.getText().toString().isEmpty();
60 | }
61 |
62 | public void setListener(OnAddUniversityClickListener listener) {
63 | this.listener = listener;
64 | }
65 |
66 | public interface OnAddUniversityClickListener {
67 | void onAddUniversityClickListener(String universityName);
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/view/adapters/UniversityAdapter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.view.adapters;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.TextView;
8 |
9 | import com.cook.simplerealmandroid.R;
10 | import com.cook.simplerealmandroid.model.University;
11 | import com.cook.simplerealmandroid.presenters.impl.UniversityPresenter;
12 | import com.cook.simplerealmandroid.view.activity.UniversityActivity;
13 |
14 | import io.realm.RealmList;
15 | import io.realm.RealmResults;
16 |
17 | /**
18 | * Created by roma on 20.10.15.
19 | */
20 | public class UniversityAdapter extends RecyclerView.Adapter {
21 |
22 | private OnItemClickListener onItemClickListener;
23 | private RealmResults universities;
24 |
25 | public UniversityAdapter(RealmResults universities) {
26 | this.universities = universities;
27 | }
28 |
29 | @Override
30 | public UniversityViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
31 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item_university, parent, false);
32 | return new UniversityViewHolder(view);
33 | }
34 |
35 | @Override
36 | public void onBindViewHolder(UniversityViewHolder holder, int position) {
37 | holder.tvUniversityName.setText(universities.get(position).getName());
38 | }
39 |
40 | @Override
41 | public int getItemCount() {
42 | return universities.size();
43 | }
44 |
45 | public class UniversityViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
46 |
47 | TextView tvUniversityName;
48 |
49 | public UniversityViewHolder(View itemView) {
50 | super(itemView);
51 | itemView.setOnClickListener(this);
52 |
53 | tvUniversityName = (TextView) itemView.findViewById(R.id.tv_name_university);
54 | }
55 |
56 | @Override
57 | public void onClick(View v) {
58 | University university = universities.get(getAdapterPosition());
59 | onItemClickListener.onItemClick(university.getId());
60 | }
61 | }
62 |
63 | public interface OnItemClickListener{
64 | void onItemClick(String id);
65 | }
66 |
67 | public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
68 | this.onItemClickListener = onItemClickListener;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_add_student.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
17 |
18 |
30 |
31 |
41 |
42 |
54 |
55 |
63 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/realm/repository/impl/UniversityRepository.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.realm.repository.impl;
2 |
3 | import com.cook.simplerealmandroid.app.SimpleRealmApp;
4 | import com.cook.simplerealmandroid.model.University;
5 | import com.cook.simplerealmandroid.realm.repository.IUniversityRepository;
6 | import com.cook.simplerealmandroid.realm.table.RealmTable;
7 |
8 | import java.util.UUID;
9 |
10 | import io.realm.Realm;
11 | import io.realm.RealmQuery;
12 | import io.realm.RealmResults;
13 |
14 | /**
15 | * Created by roma on 16.10.15.
16 | */
17 | public class UniversityRepository implements IUniversityRepository {
18 |
19 |
20 | @Override
21 | public void addUniversity(University university, OnAddUniversityCallback callback) {
22 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
23 | realm.beginTransaction();
24 | University u = realm.createObject(University.class);
25 | u.setId(UUID.randomUUID().toString());
26 | u.setName(university.getName());
27 | realm.commitTransaction();
28 |
29 | if (callback != null)
30 | callback.onSuccess();
31 | }
32 |
33 | @Override
34 | public void deleteUniversityById(String Id, OnDeleteUniversityCallback callback) {
35 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
36 | realm.beginTransaction();
37 | University university = realm.where(University.class).equalTo(RealmTable.ID, Id).findFirst();
38 | university.removeFromRealm();
39 | realm.commitTransaction();
40 |
41 | if (callback != null)
42 | callback.onSuccess();
43 | }
44 |
45 | @Override
46 | public void deleteUniversityByPosition(int position, OnDeleteUniversityCallback callback) {
47 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
48 | realm.beginTransaction();
49 | RealmQuery query = realm.where(University.class);
50 | RealmResults results = query.findAll();
51 | results.remove(position);
52 | realm.commitTransaction();
53 |
54 | if (callback != null)
55 | callback.onSuccess();
56 | }
57 |
58 | @Override
59 | public void getUniversityById(String id, OnGetUniversityByIdCallback callback) {
60 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
61 | University result = realm.where(University.class).equalTo(RealmTable.ID, id).findFirst();
62 |
63 | if (callback != null)
64 | callback.onSuccess(result);
65 | }
66 |
67 | @Override
68 | public void getAllUniversities(OnGetAllUniversityCallback callback) {
69 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
70 | RealmQuery query = realm.where(University.class);
71 | RealmResults results = query.findAll();
72 |
73 | if (callback != null)
74 | callback.onSuccess(results);
75 | }
76 |
77 | }
78 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/presenters/impl/UniversityPresenter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.presenters.impl;
2 |
3 | import com.cook.simplerealmandroid.model.University;
4 | import com.cook.simplerealmandroid.presenters.IUniversityPresenter;
5 | import com.cook.simplerealmandroid.realm.repository.IUniversityRepository;
6 | import com.cook.simplerealmandroid.realm.repository.impl.UniversityRepository;
7 | import com.cook.simplerealmandroid.view.activity.UniversityActivity;
8 |
9 | import io.realm.RealmResults;
10 |
11 | /**
12 | * Created by roma on 19.10.15.
13 | */
14 | public class UniversityPresenter implements IUniversityPresenter {
15 |
16 | private UniversityActivity view;
17 |
18 | private IUniversityRepository repository;
19 |
20 | private IUniversityRepository.OnGetAllUniversityCallback getAllUniversityCallback;
21 | private IUniversityRepository.OnAddUniversityCallback addUniversityCallback;
22 | private IUniversityRepository.OnGetUniversityByIdCallback getSpecialUniversityCallback;
23 | private IUniversityRepository.OnDeleteUniversityCallback deleteUniversityCallback;
24 |
25 | public UniversityPresenter(UniversityActivity view) {
26 | this.view = view;
27 | repository = new UniversityRepository();
28 | }
29 |
30 | @Override
31 | public void getAllUniversities() {
32 | repository.getAllUniversities(getAllUniversityCallback);
33 | }
34 |
35 | @Override
36 | public void addUniversity(String universityName) {
37 | University university = new University(universityName);
38 | repository.addUniversity(university, addUniversityCallback);
39 | }
40 |
41 | @Override
42 | public void getUniversityById(String id) {
43 | repository.getUniversityById(id, getSpecialUniversityCallback);
44 | }
45 |
46 | @Override
47 | public void deleteUniversity(int position) {
48 | repository.deleteUniversityByPosition(position, deleteUniversityCallback);
49 | }
50 |
51 | @Override
52 | public void deleteUniversityById(String Id) {
53 | repository.deleteUniversityById(Id, deleteUniversityCallback);
54 | }
55 |
56 | @Override
57 | public void subscribeCallbacks() {
58 | getAllUniversityCallback = new IUniversityRepository.OnGetAllUniversityCallback() {
59 | @Override
60 | public void onSuccess(RealmResults universities) {
61 | view.showUniversities(universities);
62 | }
63 |
64 | @Override
65 | public void onError(String message) {
66 | view.showMessage(message);
67 | }
68 | };
69 | addUniversityCallback = new IUniversityRepository.OnAddUniversityCallback() {
70 | @Override
71 | public void onSuccess() {
72 | view.showMessage("Added");
73 | }
74 |
75 | @Override
76 | public void onError(String message) {
77 | view.showMessage(message);
78 | }
79 | };
80 | getSpecialUniversityCallback = new IUniversityRepository.OnGetUniversityByIdCallback() {
81 | @Override
82 | public void onSuccess(University university) {
83 |
84 | }
85 |
86 | @Override
87 | public void onError(String message) {
88 | view.showMessage(message);
89 | }
90 | };
91 | deleteUniversityCallback = new IUniversityRepository.OnDeleteUniversityCallback() {
92 | @Override
93 | public void onSuccess() {
94 | view.showMessage("Deleted");
95 | }
96 |
97 | @Override
98 | public void onError(String message) {
99 | view.showMessage(message);
100 | }
101 | };
102 |
103 | }
104 |
105 | @Override
106 | public void unSubscribeCallbacks() {
107 | getAllUniversityCallback = null;
108 | addUniversityCallback = null;
109 | getSpecialUniversityCallback = null;
110 | deleteUniversityCallback = null;
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/realm/repository/impl/StudentRepository.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.realm.repository.impl;
2 |
3 | import com.cook.simplerealmandroid.app.SimpleRealmApp;
4 | import com.cook.simplerealmandroid.model.Student;
5 | import com.cook.simplerealmandroid.model.University;
6 | import com.cook.simplerealmandroid.realm.repository.IStudentRepository;
7 | import com.cook.simplerealmandroid.realm.table.RealmTable;
8 |
9 | import java.util.UUID;
10 |
11 | import io.realm.Realm;
12 | import io.realm.RealmList;
13 | import io.realm.RealmQuery;
14 | import io.realm.RealmResults;
15 |
16 | /**
17 | * Created by roma on 16.10.15.
18 | */
19 | public class StudentRepository implements IStudentRepository {
20 |
21 | @Override
22 | public void addStudent(Student student, OnSaveStudentCallback callback) {
23 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
24 | realm.beginTransaction();
25 | Student realmStudent = realm.createObject(Student.class);
26 | realmStudent.setId(UUID.randomUUID().toString());
27 | realmStudent.setName(student.getName());
28 | realmStudent.setBirthday(student.getBirthday());
29 | realmStudent.setEmail(student.getEmail());
30 | realm.commitTransaction();
31 |
32 | if (callback != null)
33 | callback.onSuccess();
34 | }
35 |
36 | @Override
37 | public void addStudentByUniversityId(Student student, String universityId, OnSaveStudentCallback callback) {
38 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
39 | realm.beginTransaction();
40 |
41 | Student realmStudent = realm.createObject(Student.class);
42 | realmStudent.setId(UUID.randomUUID().toString());
43 | realmStudent.setName(student.getName());
44 | realmStudent.setEmail(student.getEmail());
45 | realmStudent.setBirthday(student.getBirthday());
46 |
47 | University university = realm.where(University.class).equalTo(RealmTable.ID, universityId).findFirst();
48 | university.getStudents().add(realmStudent);
49 |
50 | realm.commitTransaction();
51 |
52 | if (callback != null)
53 | callback.onSuccess();
54 |
55 | }
56 |
57 | @Override
58 | public void deleteStudentById(String id, OnDeleteStudentCallback callback) {
59 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
60 | realm.beginTransaction();
61 | Student result = realm.where(Student.class).equalTo(RealmTable.ID, id).findFirst();
62 | result.removeFromRealm();
63 | realm.commitTransaction();
64 |
65 | if (callback != null)
66 | callback.onSuccess();
67 | }
68 |
69 | @Override
70 | public void deleteStudentByPosition(int position, OnDeleteStudentCallback callback) {
71 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
72 | realm.beginTransaction();
73 | RealmQuery query = realm.where(Student.class);
74 | RealmResults results = query.findAll();
75 | results.remove(position);
76 | realm.commitTransaction();
77 |
78 | if (callback != null)
79 | callback.onSuccess();
80 | }
81 |
82 | @Override
83 | public void getAllStudents(OnGetAllStudentsCallback callback) {
84 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
85 | RealmResults results = realm.where(Student.class).findAll();
86 |
87 | if (callback != null)
88 | callback.onSuccess(results);
89 | }
90 |
91 | @Override
92 | public void getAllStudentsByUniversityId(String id, OnGetStudentsCallback callback) {
93 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
94 | University university = realm.where(University.class).equalTo(RealmTable.ID, id).findFirst();
95 | RealmList students = university.getStudents();
96 |
97 | if (callback != null)
98 | callback.onSuccess(students);
99 |
100 | }
101 |
102 | @Override
103 | public void getStudentById(String id, OnGetStudentByIdCallback callback) {
104 | Realm realm = Realm.getInstance(SimpleRealmApp.getInstance());
105 | Student student = realm.where(Student.class).equalTo(RealmTable.ID, id).findFirst();
106 |
107 | if (callback != null)
108 | callback.onSuccess(student);
109 | }
110 | }
111 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/view/dialogs/AddStudentDialog.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.view.dialogs;
2 |
3 | import android.content.Context;
4 | import android.os.Bundle;
5 | import android.support.v4.app.DialogFragment;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.view.WindowManager;
10 | import android.view.inputmethod.InputMethodManager;
11 | import android.widget.Button;
12 | import android.widget.EditText;
13 |
14 | import com.cook.simplerealmandroid.R;
15 | import com.cook.simplerealmandroid.model.Student;
16 | import com.cook.simplerealmandroid.tools.DateFormatter;
17 | import com.wdullaer.materialdatetimepicker.date.DatePickerDialog;
18 |
19 | import java.util.Calendar;
20 | import java.util.Date;
21 |
22 | /**
23 | * Created by roma on 04.11.15.
24 | */
25 | public class AddStudentDialog extends DialogFragment implements View.OnClickListener {
26 |
27 | private EditText etName, etEmail, etBirthday;
28 | private Date date;
29 | private Button btAdd;
30 |
31 | private OnAddStudentClickListener listener;
32 |
33 | @Override
34 | public void onCreate(Bundle savedInstanceState) {
35 | super.onCreate(savedInstanceState);
36 | setStyle(DialogFragment.STYLE_NORMAL, R.style.AlertDialogStyle);
37 | }
38 |
39 | @Override
40 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
41 | View view = inflater.inflate(R.layout.dialog_add_student, container);
42 | initComponents(view);
43 | return view;
44 | }
45 |
46 | private void initComponents(View view) {
47 | etName = (EditText) view.findViewById(R.id.et_name);
48 | etEmail = (EditText) view.findViewById(R.id.et_email);
49 | etBirthday = (EditText) view.findViewById(R.id.et_birthday);
50 | btAdd = (Button) view.findViewById(R.id.bt_add);
51 | etName.requestFocus();
52 | getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
53 |
54 | btAdd.setOnClickListener(this);
55 | etBirthday.setOnClickListener(this);
56 |
57 | }
58 |
59 | @Override
60 | public void onClick(View v) {
61 | switch (v.getId()) {
62 | case R.id.bt_add: {
63 | if (isUserInfoValidate()) {
64 | Student student = new Student();
65 | student.setName(etName.getText().toString());
66 | student.setEmail(etEmail.getText().toString());
67 | student.setBirthday(date);
68 | listener.onAddStudentClickListener(student);
69 | }
70 | break;
71 | }
72 | case R.id.et_birthday: {
73 | Calendar now = Calendar.getInstance();
74 | final DatePickerDialog d = DatePickerDialog.newInstance(
75 | new DatePickerDialog.OnDateSetListener() {
76 | @Override
77 | public void onDateSet(DatePickerDialog datePickerDialog, int year, int monthOfYear, int dayOfMonth) {
78 | Calendar checkedCalendar = Calendar.getInstance();
79 | checkedCalendar.set(year, monthOfYear, dayOfMonth);
80 | date = checkedCalendar.getTime();
81 | etBirthday.setText(DateFormatter.convertDateToString(date));
82 | }
83 | },
84 | now.get(Calendar.YEAR),
85 | now.get(Calendar.MONTH),
86 | now.get(Calendar.DAY_OF_MONTH)
87 | );
88 | d.setMaxDate(now);
89 | d.show((getActivity()).getFragmentManager(), this.getClass().getName());
90 | break;
91 | }
92 | }
93 | }
94 |
95 | private boolean isUserInfoValidate() {
96 | return !etName.getText().toString().isEmpty() &&
97 | !etEmail.getText().toString().isEmpty() &&
98 | !etBirthday.getText().toString().isEmpty();
99 | }
100 |
101 | public void setListener(OnAddStudentClickListener listener) {
102 | this.listener = listener;
103 | }
104 |
105 | public interface OnAddStudentClickListener {
106 | void onAddStudentClickListener(Student student);
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/view/activity/StudentsActivity.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.view.activity;
2 |
3 | import android.os.Bundle;
4 | import android.support.design.widget.FloatingActionButton;
5 | import android.support.v7.widget.DefaultItemAnimator;
6 | import android.support.v7.widget.LinearLayoutManager;
7 | import android.support.v7.widget.RecyclerView;
8 | import android.support.v7.widget.helper.ItemTouchHelper;
9 | import android.view.View;
10 |
11 | import com.cook.simplerealmandroid.R;
12 | import com.cook.simplerealmandroid.model.Student;
13 | import com.cook.simplerealmandroid.model.University;
14 | import com.cook.simplerealmandroid.presenters.IStudentPresenter;
15 | import com.cook.simplerealmandroid.presenters.impl.StudentPresenter;
16 | import com.cook.simplerealmandroid.realm.table.RealmTable;
17 | import com.cook.simplerealmandroid.view.activity.base.BaseActivity;
18 | import com.cook.simplerealmandroid.view.adapters.StudentsAdapter;
19 | import com.cook.simplerealmandroid.view.dialogs.AddStudentDialog;
20 |
21 | import io.realm.RealmList;
22 |
23 | /**
24 | * Created by roma on 03.11.15.
25 | */
26 | public class StudentsActivity extends BaseActivity implements View.OnClickListener {
27 |
28 | private IStudentPresenter presenter;
29 |
30 | private FloatingActionButton fbAdd;
31 | private RecyclerView rvStudents;
32 | private StudentsAdapter adapter;
33 |
34 | private RealmList students;
35 | private String universityId;
36 |
37 | @Override
38 | protected void onCreate(Bundle savedInstanceState) {
39 | super.onCreate(savedInstanceState);
40 | setContentView(R.layout.activity_students);
41 | presenter = new StudentPresenter(this);
42 | universityId = getIntent().getStringExtra(RealmTable.ID);
43 |
44 | initComponents();
45 | }
46 |
47 | @Override
48 | protected void initComponents() {
49 | fbAdd = (FloatingActionButton) findViewById(R.id.fab_add_student);
50 | fbAdd.setOnClickListener(this);
51 | initRecyclerListener();
52 | }
53 |
54 | public void updateToolbarTittle(String tittle) {
55 | getSupportActionBar().setTitle(getString(R.string.students) + " - " + tittle);
56 | }
57 |
58 | @Override
59 | protected void onStart() {
60 | super.onStart();
61 | presenter.subscribeCallbacks();
62 | presenter.getUniversityById(universityId);
63 | presenter.getAllStudentsByUniversityId(universityId);
64 | }
65 |
66 | @Override
67 | protected void onStop() {
68 | super.onStop();
69 | presenter.unSubscribeCallbacks();
70 | }
71 |
72 | @Override
73 | public void onClick(View v) {
74 | switch (v.getId()) {
75 | case R.id.fab_add_student: {
76 | showAddStudentDialog();
77 | break;
78 | }
79 | }
80 | }
81 |
82 | private void initRecyclerListener() {
83 | rvStudents = (RecyclerView) findViewById(R.id.rv_students);
84 | rvStudents.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
85 | rvStudents.setItemAnimator(new DefaultItemAnimator());
86 |
87 | ItemTouchHelper swipeToDismissTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(
88 | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
89 | @Override
90 |
91 | public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
92 | return false;
93 | }
94 |
95 | @Override
96 | public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
97 | presenter.deleteStudentById(students.get(viewHolder.getAdapterPosition()).getId());
98 | adapter.notifyItemRemoved(viewHolder.getAdapterPosition());
99 | }
100 | });
101 | swipeToDismissTouchHelper.attachToRecyclerView(rvStudents);
102 | }
103 |
104 | private void showAddStudentDialog() {
105 | final AddStudentDialog dialog = new AddStudentDialog();
106 | dialog.show(getSupportFragmentManager(), dialog.getClass().getName());
107 | dialog.setListener(new AddStudentDialog.OnAddStudentClickListener() {
108 | @Override
109 | public void onAddStudentClickListener(Student student) {
110 | dialog.dismiss();
111 | presenter.addStudentByUniversityId(student, universityId);
112 | presenter.getAllStudentsByUniversityId(universityId);
113 | }
114 | });
115 | }
116 |
117 | public void showStudents(RealmList students) {
118 | this.students = students;
119 | adapter = new StudentsAdapter(students);
120 | rvStudents.setAdapter(adapter);
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/view/activity/UniversityActivity.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.view.activity;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.design.widget.FloatingActionButton;
6 | import android.support.v7.widget.DefaultItemAnimator;
7 | import android.support.v7.widget.LinearLayoutManager;
8 | import android.support.v7.widget.RecyclerView;
9 | import android.support.v7.widget.Toolbar;
10 | import android.support.v7.widget.helper.ItemTouchHelper;
11 | import android.view.View;
12 |
13 | import com.cook.simplerealmandroid.R;
14 | import com.cook.simplerealmandroid.model.University;
15 | import com.cook.simplerealmandroid.presenters.IUniversityPresenter;
16 | import com.cook.simplerealmandroid.presenters.impl.UniversityPresenter;
17 | import com.cook.simplerealmandroid.realm.table.RealmTable;
18 | import com.cook.simplerealmandroid.view.activity.base.BaseActivity;
19 | import com.cook.simplerealmandroid.view.adapters.UniversityAdapter;
20 | import com.cook.simplerealmandroid.view.dialogs.AddUniversityDialog;
21 |
22 | import io.realm.RealmResults;
23 |
24 | public class UniversityActivity extends BaseActivity implements View.OnClickListener {
25 |
26 | private FloatingActionButton fbAdd;
27 | private RecyclerView rvUniversities;
28 | private UniversityAdapter adapter;
29 |
30 | private IUniversityPresenter presenter;
31 |
32 | private RealmResults universities;
33 |
34 | @Override
35 | protected void onCreate(Bundle savedInstanceState) {
36 | super.onCreate(savedInstanceState);
37 | setContentView(R.layout.activity_universities);
38 |
39 | presenter = new UniversityPresenter(this);
40 |
41 | initComponents();
42 | }
43 |
44 | @Override
45 | protected void onStart() {
46 | super.onStart();
47 | presenter.subscribeCallbacks();
48 | presenter.getAllUniversities();
49 | }
50 |
51 | @Override
52 | protected void onStop() {
53 | super.onStop();
54 | presenter.unSubscribeCallbacks();
55 | }
56 |
57 | @Override
58 | protected void initComponents() {
59 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
60 | toolbar.setTitle(R.string.universities);
61 | setSupportActionBar(toolbar);
62 | fbAdd = (FloatingActionButton) findViewById(R.id.fab_add_university);
63 | fbAdd.setOnClickListener(this);
64 | initRecyclerListener();
65 | }
66 |
67 | @Override
68 | public void onClick(View v) {
69 | switch (v.getId()) {
70 | case R.id.fab_add_university: {
71 | showAddUniversityDialog();
72 | break;
73 | }
74 | }
75 | }
76 |
77 | private void initRecyclerListener() {
78 | rvUniversities = (RecyclerView) findViewById(R.id.rv_universities);
79 | rvUniversities.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
80 | rvUniversities.setItemAnimator(new DefaultItemAnimator());
81 |
82 | ItemTouchHelper swipeToDismissTouchHelper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(
83 | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
84 | @Override
85 | public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
86 | return false;
87 | }
88 |
89 | @Override
90 | public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
91 | presenter.deleteUniversityById(universities.get(viewHolder.getAdapterPosition()).getId());
92 | adapter.notifyItemRemoved(viewHolder.getAdapterPosition());
93 | }
94 | });
95 | swipeToDismissTouchHelper.attachToRecyclerView(rvUniversities);
96 | }
97 |
98 | public void showUniversities(RealmResults universities) {
99 | this.universities = universities;
100 | adapter = new UniversityAdapter(universities);
101 | adapter.setOnItemClickListener(new UniversityAdapter.OnItemClickListener() {
102 | @Override
103 | public void onItemClick(String id) {
104 | Intent intent = new Intent(getApplicationContext(), StudentsActivity.class);
105 | intent.putExtra(RealmTable.ID, id);
106 | startActivity(intent);
107 | }
108 | });
109 | rvUniversities.setAdapter(adapter);
110 | }
111 |
112 | private void showAddUniversityDialog() {
113 | final AddUniversityDialog dialog = new AddUniversityDialog();
114 | dialog.show(getSupportFragmentManager(), dialog.getClass().getName());
115 | dialog.setListener(new AddUniversityDialog.OnAddUniversityClickListener() {
116 | @Override
117 | public void onAddUniversityClickListener(String universityName) {
118 | dialog.dismiss();
119 | presenter.addUniversity(universityName);
120 | }
121 | });
122 | }
123 |
124 | }
125 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # For Cygwin, ensure paths are in UNIX format before anything is touched.
46 | if $cygwin ; then
47 | [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
48 | fi
49 |
50 | # Attempt to set APP_HOME
51 | # Resolve links: $0 may be a link
52 | PRG="$0"
53 | # Need this for relative symlinks.
54 | while [ -h "$PRG" ] ; do
55 | ls=`ls -ld "$PRG"`
56 | link=`expr "$ls" : '.*-> \(.*\)$'`
57 | if expr "$link" : '/.*' > /dev/null; then
58 | PRG="$link"
59 | else
60 | PRG=`dirname "$PRG"`"/$link"
61 | fi
62 | done
63 | SAVED="`pwd`"
64 | cd "`dirname \"$PRG\"`/" >&-
65 | APP_HOME="`pwd -P`"
66 | cd "$SAVED" >&-
67 |
68 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
69 |
70 | # Determine the Java command to use to start the JVM.
71 | if [ -n "$JAVA_HOME" ] ; then
72 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
73 | # IBM's JDK on AIX uses strange locations for the executables
74 | JAVACMD="$JAVA_HOME/jre/sh/java"
75 | else
76 | JAVACMD="$JAVA_HOME/bin/java"
77 | fi
78 | if [ ! -x "$JAVACMD" ] ; then
79 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
80 |
81 | Please set the JAVA_HOME variable in your environment to match the
82 | location of your Java installation."
83 | fi
84 | else
85 | JAVACMD="java"
86 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
87 |
88 | Please set the JAVA_HOME variable in your environment to match the
89 | location of your Java installation."
90 | fi
91 |
92 | # Increase the maximum file descriptors if we can.
93 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
94 | MAX_FD_LIMIT=`ulimit -H -n`
95 | if [ $? -eq 0 ] ; then
96 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
97 | MAX_FD="$MAX_FD_LIMIT"
98 | fi
99 | ulimit -n $MAX_FD
100 | if [ $? -ne 0 ] ; then
101 | warn "Could not set maximum file descriptor limit: $MAX_FD"
102 | fi
103 | else
104 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
105 | fi
106 | fi
107 |
108 | # For Darwin, add options to specify how the application appears in the dock
109 | if $darwin; then
110 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
111 | fi
112 |
113 | # For Cygwin, switch paths to Windows format before running java
114 | if $cygwin ; then
115 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
116 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
117 |
118 | # We build the pattern for arguments to be converted via cygpath
119 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
120 | SEP=""
121 | for dir in $ROOTDIRSRAW ; do
122 | ROOTDIRS="$ROOTDIRS$SEP$dir"
123 | SEP="|"
124 | done
125 | OURCYGPATTERN="(^($ROOTDIRS))"
126 | # Add a user-defined pattern to the cygpath arguments
127 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
128 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
129 | fi
130 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
131 | i=0
132 | for arg in "$@" ; do
133 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
134 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
135 |
136 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
137 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
138 | else
139 | eval `echo args$i`="\"$arg\""
140 | fi
141 | i=$((i+1))
142 | done
143 | case $i in
144 | (0) set -- ;;
145 | (1) set -- "$args0" ;;
146 | (2) set -- "$args0" "$args1" ;;
147 | (3) set -- "$args0" "$args1" "$args2" ;;
148 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
149 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
150 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
151 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
152 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
153 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
154 | esac
155 | fi
156 |
157 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
158 | function splitJvmOpts() {
159 | JVM_OPTS=("$@")
160 | }
161 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
162 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
163 |
164 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
165 |
--------------------------------------------------------------------------------
/app/src/main/java/com/cook/simplerealmandroid/presenters/impl/StudentPresenter.java:
--------------------------------------------------------------------------------
1 | package com.cook.simplerealmandroid.presenters.impl;
2 |
3 | import com.cook.simplerealmandroid.model.Student;
4 | import com.cook.simplerealmandroid.model.University;
5 | import com.cook.simplerealmandroid.presenters.IStudentPresenter;
6 | import com.cook.simplerealmandroid.realm.repository.IStudentRepository;
7 | import com.cook.simplerealmandroid.realm.repository.IUniversityRepository;
8 | import com.cook.simplerealmandroid.realm.repository.impl.StudentRepository;
9 | import com.cook.simplerealmandroid.realm.repository.impl.UniversityRepository;
10 | import com.cook.simplerealmandroid.view.activity.StudentsActivity;
11 |
12 | import io.realm.RealmList;
13 | import io.realm.RealmResults;
14 |
15 | /**
16 | * Created by roma on 03.11.15.
17 | */
18 | public class StudentPresenter implements IStudentPresenter {
19 |
20 | private StudentsActivity view;
21 |
22 | private IStudentRepository.OnDeleteStudentCallback onDeleteStudentCallback;
23 | private IStudentRepository.OnSaveStudentCallback onSaveStudentCallback;
24 | private IStudentRepository.OnGetAllStudentsCallback onGetAllStudentsCallback;
25 | private IStudentRepository.OnGetStudentByIdCallback onGetStudentByIdCallback;
26 | private IStudentRepository.OnGetStudentsCallback onGetStudentsCallback;
27 | private IUniversityRepository.OnGetUniversityByIdCallback onGetUniversityByIdCallback;
28 |
29 |
30 | private IStudentRepository studentRepository;
31 | private IUniversityRepository universityRepository;
32 |
33 | public StudentPresenter(StudentsActivity view) {
34 | this.view = view;
35 | studentRepository = new StudentRepository();
36 | universityRepository = new UniversityRepository();
37 | }
38 |
39 | @Override
40 | public void addStudent(Student student) {
41 | studentRepository.addStudent(student, onSaveStudentCallback);
42 | }
43 |
44 | @Override
45 | public void addStudentByUniversityId(Student student, String universityId) {
46 | studentRepository.addStudentByUniversityId(student, universityId, onSaveStudentCallback);
47 | }
48 |
49 | @Override
50 | public void deleteStudentByPosition(int position) {
51 | studentRepository.deleteStudentByPosition(position, onDeleteStudentCallback);
52 | }
53 |
54 | @Override
55 | public void deleteStudentById(String studentId) {
56 | studentRepository.deleteStudentById(studentId, onDeleteStudentCallback);
57 | }
58 |
59 | @Override
60 | public void getAllStudents() {
61 | studentRepository.getAllStudents(onGetAllStudentsCallback);
62 | }
63 |
64 | @Override
65 | public void getAllStudentsByUniversityId(String id) {
66 | studentRepository.getAllStudentsByUniversityId(id, onGetStudentsCallback);
67 | }
68 |
69 | @Override
70 | public void getStudentById(String id) {
71 | studentRepository.getStudentById(id, onGetStudentByIdCallback);
72 | }
73 |
74 | @Override
75 | public void getUniversityById(String id) {
76 | universityRepository.getUniversityById(id, onGetUniversityByIdCallback);
77 | }
78 |
79 | @Override
80 | public void subscribeCallbacks() {
81 | onSaveStudentCallback = new IStudentRepository.OnSaveStudentCallback() {
82 | @Override
83 | public void onSuccess() {
84 | view.showMessage("Added");
85 | }
86 |
87 | @Override
88 | public void onError(String message) {
89 | view.showMessage(message);
90 | }
91 | };
92 | onDeleteStudentCallback = new IStudentRepository.OnDeleteStudentCallback() {
93 | @Override
94 | public void onSuccess() {
95 | view.showMessage("Deleted");
96 | }
97 |
98 | @Override
99 | public void onError(String message) {
100 | view.showMessage(message);
101 | }
102 | };
103 | onGetAllStudentsCallback = new IStudentRepository.OnGetAllStudentsCallback() {
104 | @Override
105 | public void onSuccess(RealmResults students) {
106 |
107 | }
108 |
109 | @Override
110 | public void onError(String message) {
111 | view.showMessage(message);
112 | }
113 | };
114 | onGetStudentByIdCallback = new IStudentRepository.OnGetStudentByIdCallback() {
115 | @Override
116 | public void onSuccess(Student student) {
117 |
118 | }
119 |
120 | @Override
121 | public void onError(String message) {
122 |
123 | }
124 | };
125 | onGetStudentsCallback = new IStudentRepository.OnGetStudentsCallback() {
126 | @Override
127 | public void onSuccess(RealmList students) {
128 | view.showStudents(students);
129 | }
130 |
131 | @Override
132 | public void onError(String message) {
133 | view.showMessage(message);
134 | }
135 | };
136 | onGetUniversityByIdCallback = new IUniversityRepository.OnGetUniversityByIdCallback() {
137 | @Override
138 | public void onSuccess(University university) {
139 | view.updateToolbarTittle(university.getName());
140 | }
141 |
142 | @Override
143 | public void onError(String message) {
144 | view.showMessage(message);
145 | }
146 | };
147 | }
148 |
149 | @Override
150 | public void unSubscribeCallbacks() {
151 | onDeleteStudentCallback = null;
152 | onSaveStudentCallback = null;
153 | onGetAllStudentsCallback = null;
154 | onGetStudentByIdCallback = null;
155 | }
156 | }
157 |
--------------------------------------------------------------------------------