Commit f8e27ef5 authored by Isaac Pereira's avatar Isaac Pereira

Implementação de login simples usando CurioJava

parent 8b7d1c44
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
apply plugin: 'com.jakewharton.butterknife' apply plugin: 'com.jakewharton.butterknife'
apply plugin: 'me.tatarka.retrolambda'
android { android {
compileSdkVersion rootProject.ext.compileSdkVersion compileSdkVersion rootProject.ext.compileSdkVersion
...@@ -19,6 +20,10 @@ android { ...@@ -19,6 +20,10 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
} }
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
} }
dependencies { dependencies {
...@@ -70,6 +75,7 @@ dependencies { ...@@ -70,6 +75,7 @@ dependencies {
testAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version" testAnnotationProcessor "com.google.dagger:dagger-compiler:$rootProject.dagger2Version"
// //
// UI Testing // UI Testing
androidTestCompile "com.android.support:support-annotations:$rootProject.supportLibraryVersion"
androidTestCompile "com.android.support.test.espresso:espresso-core:$rootProject.espressoVersion" androidTestCompile "com.android.support.test.espresso:espresso-core:$rootProject.espressoVersion"
androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion" androidTestCompile "com.android.support.test.espresso:espresso-intents:$rootProject.espressoVersion"
androidTestCompile "org.mockito:mockito-core:$rootProject.mockitoVersion" androidTestCompile "org.mockito:mockito-core:$rootProject.mockitoVersion"
......
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.evologica.mvp"> package="br.com.evologica.mvp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application <application
android:name=".MvpApp" android:name=".MvpApp"
android:allowBackup="true" android:allowBackup="true"
......
...@@ -4,18 +4,19 @@ import android.content.Context; ...@@ -4,18 +4,19 @@ import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.annotation.StringRes; import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import br.com.evologica.mvp.MvpApp; import br.com.evologica.mvp.MvpApp;
import br.com.evologica.mvp.R;
import br.com.evologica.mvp.di.component.ActivityComponent; import br.com.evologica.mvp.di.component.ActivityComponent;
import br.com.evologica.mvp.di.component.DaggerActivityComponent; import br.com.evologica.mvp.di.component.DaggerActivityComponent;
import br.com.evologica.mvp.di.module.ActivityModule; import br.com.evologica.mvp.di.module.ActivityModule;
import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper; import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper;
/**
* Created by marcussales on 01/03/2017.
*/
public class BaseActivity extends AppCompatActivity implements MvpView, BaseFragment.Callback { public class BaseActivity extends AppCompatActivity implements MvpView, BaseFragment.Callback {
private ActivityComponent mActivityComponent; private ActivityComponent mActivityComponent;
...@@ -60,11 +61,36 @@ public class BaseActivity extends AppCompatActivity implements MvpView, BaseFrag ...@@ -60,11 +61,36 @@ public class BaseActivity extends AppCompatActivity implements MvpView, BaseFrag
@Override @Override
public void onError(@StringRes int resId) { public void onError(@StringRes int resId) {
onError(getString(resId));
}
@Override
protected void onDestroy() {
super.onDestroy();
} }
@Override @Override
public void onError(String message) { public void onError(String message) {
if (message != null) {
showSnackBar(message);
} else {
showSnackBar(getString(R.string.some_error));
}
}
private void showSnackBar(String message) {
Snackbar snackbar = Snackbar.make(findViewById(android.R.id.content),
message, Snackbar.LENGTH_SHORT);
View sbView = snackbar.getView();
TextView textView = (TextView) sbView
.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(ContextCompat.getColor(this, R.color.white));
snackbar.show();
} }
} }
...@@ -29,7 +29,12 @@ public class BasePresenter<V extends MvpView> implements MvpPresenter<V> { ...@@ -29,7 +29,12 @@ public class BasePresenter<V extends MvpView> implements MvpPresenter<V> {
@Override @Override
public void onDetach() { public void onDetach() {
mCompositeDisposable.dispose();
mMvpView = null;
}
public boolean isViewAttached() {
return mMvpView != null;
} }
public DataManager getDataManager() { public DataManager getDataManager() {
......
...@@ -56,4 +56,12 @@ public class LoginActivity extends BaseActivity implements LoginMvpView { ...@@ -56,4 +56,12 @@ public class LoginActivity extends BaseActivity implements LoginMvpView {
startActivity(intent); startActivity(intent);
finish(); finish();
} }
@Override
protected void onDestroy() {
mPresenter.onDetach();
super.onDestroy();
}
} }
...@@ -4,7 +4,9 @@ import javax.inject.Inject; ...@@ -4,7 +4,9 @@ import javax.inject.Inject;
import br.com.evologica.mvp.data.DataManager; import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter; import br.com.evologica.mvp.ui.base.BasePresenter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
/** /**
* Created by marcussales on 01/03/2017. * Created by marcussales on 01/03/2017.
...@@ -20,8 +22,21 @@ public class LoginPresenter<V extends LoginMvpView> extends BasePresenter<V> imp ...@@ -20,8 +22,21 @@ public class LoginPresenter<V extends LoginMvpView> extends BasePresenter<V> imp
} }
@Override @Override
public void onLogin(String email, String password){ public void onLogin(String email, String password) {
getDataManager().setLoggedIn(); getCompositeDisposable().add(
getMvpView().openMainActivity(); getDataManager().getService().openSession(email, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
session -> {
getDataManager().setLoggedIn();
getMvpView().openMainActivity();
},
err -> {
getDataManager().setLoggedOut();
getMvpView().onError(err.getMessage());
}
)
);
} }
} }
...@@ -51,4 +51,11 @@ public class MainActivity extends BaseActivity implements MainMvpView { ...@@ -51,4 +51,11 @@ public class MainActivity extends BaseActivity implements MainMvpView {
startActivity(intent); startActivity(intent);
finish(); finish();
} }
@Override
protected void onDestroy() {
mPresenter.onDetach();
super.onDestroy();
}
} }
...@@ -2,9 +2,14 @@ package br.com.evologica.mvp.ui.main; ...@@ -2,9 +2,14 @@ package br.com.evologica.mvp.ui.main;
import javax.inject.Inject; import javax.inject.Inject;
import br.com.evologica.curio.CurioRequest;
import br.com.evologica.curio.UseCase;
import br.com.evologica.mvp.data.DataManager; import br.com.evologica.mvp.data.DataManager;
import br.com.evologica.mvp.ui.base.BasePresenter; import br.com.evologica.mvp.ui.base.BasePresenter;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> implements MainMvpPresenter<V> { public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> implements MainMvpPresenter<V> {
...@@ -13,9 +18,57 @@ public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> imple ...@@ -13,9 +18,57 @@ public class MainPresenter<V extends MainMvpView> extends BasePresenter<V> imple
super(dataManager, compositeDisposable); super(dataManager, compositeDisposable);
} }
@Override
public void onAttach(V mvpView) {
super.onAttach(mvpView);
getCompositeDisposable().add(
getDataManager().getService().openUseCase("3034", "ConsultarEventos")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
uc -> {
System.out.println("UC Opened");
CurioRequest request = uc.newRequest("RM_BUSCAR_EVENTOS");
request.getMessage().getRootField().addField("Evento");
request.post()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
req -> {
System.out.println("SUCCESS: " + req.getResponse().getRootField().getXMLString());
},
err -> {
System.out.println(err.getMessage());
}
);
},
err -> {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
System.out.println(err.getMessage());
}
)
);
}
@Override @Override
public void onLogout() { public void onLogout() {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity(); getCompositeDisposable().add(
getDataManager().getService().closeSession()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
result -> {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
},
err -> {
getDataManager().setLoggedOut();
getMvpView().openLoginActivity();
System.out.println(err.toString());
}
)
);
} }
} }
...@@ -12,10 +12,6 @@ import br.com.evologica.mvp.ui.login.LoginActivity; ...@@ -12,10 +12,6 @@ import br.com.evologica.mvp.ui.login.LoginActivity;
import br.com.evologica.mvp.ui.main.MainActivity; import br.com.evologica.mvp.ui.main.MainActivity;
import butterknife.ButterKnife; import butterknife.ButterKnife;
/**
* Created by marcussales on 01/03/2017.
*/
public class SplashActivity extends BaseActivity implements SplashMvpView { public class SplashActivity extends BaseActivity implements SplashMvpView {
@Inject @Inject
...@@ -25,11 +21,8 @@ public class SplashActivity extends BaseActivity implements SplashMvpView { ...@@ -25,11 +21,8 @@ public class SplashActivity extends BaseActivity implements SplashMvpView {
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash); setContentView(R.layout.activity_splash);
getActivityComponent().inject(this); getActivityComponent().inject(this);
ButterKnife.bind(this); ButterKnife.bind(this);
mPresenter.onAttach(SplashActivity.this); mPresenter.onAttach(SplashActivity.this);
} }
...@@ -46,4 +39,11 @@ public class SplashActivity extends BaseActivity implements SplashMvpView { ...@@ -46,4 +39,11 @@ public class SplashActivity extends BaseActivity implements SplashMvpView {
startActivity(intent); startActivity(intent);
finish(); finish();
} }
@Override
protected void onDestroy() {
mPresenter.onDetach();
super.onDestroy();
}
} }
...@@ -5,7 +5,8 @@ buildscript { ...@@ -5,7 +5,8 @@ buildscript {
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
...@@ -34,7 +35,7 @@ ext { ...@@ -34,7 +35,7 @@ ext {
compileSdkVersion = 25 compileSdkVersion = 25
buildToolsVersion = '25.0.2' buildToolsVersion = '25.0.2'
curioJavaVersion = '0.4.0' curioJavaVersion = '0.4.2'
// App dependencies // App dependencies
supportLibraryVersion = '25.2.0' supportLibraryVersion = '25.2.0'
......
#Mon Dec 28 10:00:20 PST 2015 #Fri Mar 03 00:48:29 BRT 2017
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment