Skip to content

Integrated Dagger Android to simplify the project. #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
7 changes: 3 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,17 @@ apply from: 'dependencies.gradle'
buildscript {
repositories {
jcenter()
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'me.tatarka:gradle-retrolambda:3.4.0'
classpath 'com.android.tools.build:gradle:3.0.1'
}
}

allprojects {
repositories {
jcenter()
google()
}
}

Expand Down
2 changes: 0 additions & 2 deletions data/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
apply plugin: 'com.android.library'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'me.tatarka.retrolambda'

android {
compileSdkVersion rootProject.ext.androidCompileSdkVersion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,11 @@
import java.util.Locale;

import javax.inject.Inject;
import javax.inject.Singleton;

import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;

@Singleton
public class HttpInterceptor implements Interceptor {

@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,9 @@
import java.util.List;

import javax.inject.Inject;
import javax.inject.Singleton;

import io.reactivex.Observable;
import io.reactivex.functions.Function;
import retrofit2.Response;

@Singleton
public class NoteDataRepository extends RestApiRepository implements NoteRepository {

private final RestApi restApi;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@
import com.jordifierro.androidbase.domain.repository.SessionRepository;

import javax.inject.Inject;
import javax.inject.Singleton;

@Singleton
public class SessionDataRepository implements SessionRepository {

private static final String EMAIL = "email";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,9 @@
import com.jordifierro.androidbase.domain.repository.UserRepository;

import javax.inject.Inject;
import javax.inject.Singleton;

import io.reactivex.Observable;
import io.reactivex.functions.Function;
import retrofit2.Response;

@Singleton
public class UserDataRepository extends RestApiRepository implements UserRepository {

private final RestApi restApi;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,9 @@
import com.jordifierro.androidbase.domain.repository.VersionRepository;

import javax.inject.Inject;
import javax.inject.Singleton;

import io.reactivex.Observable;

@Singleton
public class VersionDataRepository extends RestApiRepository implements VersionRepository {

private final RestApi restApi;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import com.jordifierro.androidbase.data.net.RestApi;
import com.jordifierro.androidbase.data.net.error.RestApiErrorException;
import com.jordifierro.androidbase.data.utils.TestUtils;
Expand All @@ -23,6 +22,7 @@
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

import static junit.framework.Assert.assertEquals;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import com.jordifierro.androidbase.data.net.RestApi;
import com.jordifierro.androidbase.data.net.error.RestApiErrorException;
import com.jordifierro.androidbase.data.net.wrapper.UserWrapper;
Expand All @@ -24,6 +23,7 @@
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

import static junit.framework.Assert.assertEquals;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.google.gson.FieldNamingPolicy;
import com.google.gson.GsonBuilder;
import com.jakewharton.retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import com.jordifierro.androidbase.data.net.RestApi;
import com.jordifierro.androidbase.data.utils.TestUtils;
import com.jordifierro.androidbase.domain.entity.UserEntity;
Expand All @@ -21,6 +20,7 @@
import okhttp3.mockwebserver.MockWebServer;
import okhttp3.mockwebserver.RecordedRequest;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

import static junit.framework.Assert.assertEquals;
Expand Down
25 changes: 15 additions & 10 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,25 @@ ext {
//Android
appVersionCode = 1
appVersionName = '1.0'
androidBuildToolsVersion = '25.0.2'
androidBuildToolsVersion = '27.0.3'
androidMinSdkVersion = 15
androidTargetSdkVersion = 23
androidCompileSdkVersion = 23
androidSupportVersion = '23.2.1'
androidTargetSdkVersion = 27
androidCompileSdkVersion = 27
androidSupportVersion = '27.0.2'

//Libraries
daggerVersion = '2.8'
butterKnifeVersion = '7.0.1'
rxJavaVersion = '2.0.2'
daggerVersion = '2.14.1'
butterKnifeVersion = '8.8.1'
rxJavaVersion = '2.1.8'
rxAndroidVersion = '2.0.1'
javaxAnnotationVersion = '1.0'
javaxInjectVersion = '1'
retrofitVersion = '2.1.0'
retrofitRxJava2AdapterVersion = '1.0.0'
retrofitVersion = '2.3.0'

//Testing
jUnitVersion = '4.10'
truthVersion = '0.34'

mockitoVersion = '1.9.5'//'2.0.43-beta', wait for dexmaker
dexmakerVersion = '1.4'
mockWebServerVersion = '3.2.0'
Expand All @@ -43,14 +44,15 @@ ext {

domainTestDependencies = [
junit: "junit:junit:${jUnitVersion}",
truth : "com.google.truth:truth:${truthVersion}",
mockito: "org.mockito:mockito-core:${mockitoVersion}",
jetAnnotations: "org.jetbrains:annotations-java5:${jetAnnotationVersion}"
]

dataDependencies = [
retrofit: "com.squareup.retrofit2:retrofit:${retrofitVersion}",
retrofitGson: "com.squareup.retrofit2:converter-gson:${retrofitVersion}",
retrofitRxJava2: "com.jakewharton.retrofit:retrofit2-rxjava2-adapter:${retrofitRxJava2AdapterVersion}",
retrofitRxJava2: "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}",
javaxAnnotation: "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
rxJava: "io.reactivex.rxjava2:rxjava:${rxJavaVersion}"
]
Expand All @@ -65,7 +67,10 @@ ext {
presentationDependencies = [
daggerCompiler: "com.google.dagger:dagger-compiler:${daggerVersion}",
dagger: "com.google.dagger:dagger:${daggerVersion}",
daggerAndroid: "com.google.dagger:dagger-android:${daggerVersion}",
daggerProcessor: "com.google.dagger:dagger-android-processor:${daggerVersion}",
butterKnife: "com.jakewharton:butterknife:${butterKnifeVersion}",
butterCompiler: "com.jakewharton:butterknife-compiler:${butterKnifeVersion}",
rxJava: "io.reactivex.rxjava2:rxjava:${rxJavaVersion}",
rxAndroid: "io.reactivex.rxjava2:rxandroid:${rxAndroidVersion}",
javaxAnnotation: "javax.annotation:jsr250-api:${javaxAnnotationVersion}",
Expand Down
5 changes: 3 additions & 2 deletions domain/build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apply plugin: "java"

sourceCompatibility = 1.7
targetCompatibility = 1.7
sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
def domainDependencies = rootProject.ext.domainDependencies
Expand All @@ -10,6 +10,7 @@ dependencies {
compile domainDependencies.javaxInject
compile domainDependencies.rxJava

testCompile domainTestDependencies.truth
testCompile domainTestDependencies.junit
testCompile domainTestDependencies.mockito
testCompile domainTestDependencies.jetAnnotations
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,14 @@
*/

public class VoidEntity {

private static VoidEntity voidEntity = new VoidEntity();

private VoidEntity() {

}

public static VoidEntity getInstance() {
return voidEntity;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.jordifierro.androidbase.domain.interactor;


import com.jordifierro.androidbase.domain.entity.VoidEntity;
import com.jordifierro.androidbase.domain.executor.PostExecutionThread;

import java.util.concurrent.TimeUnit;

import javax.inject.Inject;

import io.reactivex.Observable;
import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.disposables.Disposables;
import io.reactivex.observers.DisposableObserver;

public class TimerUseCase {

public static final int DEFAULT_DELAY = 1;
public static final TimeUnit DEFAULT_TIME_UNIT = TimeUnit.SECONDS;
private final Scheduler scheduler;
private final PostExecutionThread postExecutionThread;
protected Disposable disposable = Disposables.empty();
private int delay = DEFAULT_DELAY;
private TimeUnit timeUnit = DEFAULT_TIME_UNIT;

@Inject
public TimerUseCase(Scheduler scheduler, PostExecutionThread postExecutionThread) {
this.scheduler = scheduler;
this.postExecutionThread = postExecutionThread;
}

public Observable<VoidEntity> buildUseCaseObservable() {
return Observable.timer(delay, timeUnit, scheduler).map(aLong -> VoidEntity.getInstance());
}

public void execute(DisposableObserver<VoidEntity> useCaseDisposable) {
this.disposable = this.buildUseCaseObservable()
.subscribeOn(scheduler)
.observeOn(postExecutionThread.getScheduler())
.subscribeWith(useCaseDisposable);
}

public void unsubscribe() {
if (!isUnsubscribed()) {
this.disposable.dispose();
}
}

public boolean isUnsubscribed() {
return this.disposable.isDisposed();
}

public TimerUseCase setParam(int delay) {
return setParam(delay, TimeUnit.SECONDS);
}

public TimerUseCase setParam(int delay, TimeUnit timeUnit) {
checkDelayParams(delay);
this.delay = delay;
this.timeUnit = timeUnit;
return this;
}


private void checkDelayParams(int delay) {
if (isInvalidParam(delay)) {
throw new RuntimeException("Illegal Params.");
}
}

private boolean isInvalidParam(int delay) {
return delay <= 0;
}


}
Loading