Skip to content
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