Skip to content

Commit

Permalink
code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
teebbo committed Jul 9, 2019
1 parent 4adf5a7 commit f8802d2
Show file tree
Hide file tree
Showing 12 changed files with 125 additions and 108 deletions.
16 changes: 9 additions & 7 deletions iconvert-android/app/app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -48,20 +48,20 @@
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTestDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
Expand Down Expand Up @@ -104,6 +104,7 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_app_manifest" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_app_info_output_file" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_split_apk_resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" />
Expand Down Expand Up @@ -225,5 +226,6 @@
<orderEntry type="library" name="Gradle: com.squareup.okio:okio:1.15.0@jar" level="project" />
<orderEntry type="library" name="Gradle: com.squareup.retrofit2:adapter-rxjava2:2.6.0@jar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-process:2.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: android-android-28" level="project" />
</component>
</module>
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.aleengo.iconvert.domain;

import com.aleengo.iconvert.domain.model.CurrencyEntity;
import com.aleengo.iconvert.domain.model.FavoriteEntity;
import com.aleengo.iconvert.persistence.model.db.CurrencyData;
import com.aleengo.peach.toolbox.commons.model.Response;

import java.util.List;

import io.reactivex.Observable;

/**
* Created by CK_ALEENGO on 11/02/2019.
* Copyright (c) 2019. All rights reserved.
Expand All @@ -25,17 +28,28 @@ interface AddCallback {
}

void search(String query, SearchCallback callback);

void getCurrency(String query, GetCallback callback);

void addAll(List<CurrencyData> currencies);

void getCurrencies(GetCallback callback);

Observable<List<CurrencyEntity>> getCurrencies();

void getRates(GetCallback callback);
void loadRatesAndCurrencies();

void loadRatesAndCurrencies();

// favorite
void getFavorites(GetCallback callback);

void addFavorite(FavoriteEntity favorite, AddCallback callback);

void addAllFavorites(List<FavoriteEntity> favorites, AddCallback callback);

void removeFavorites();

void removeFavorite(FavoriteEntity favorite);

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,23 @@
import com.aleengo.iconvert.persistence.deserializer.CurrencyWrapperList;

import io.reactivex.Observable;
import io.reactivex.Single;
import retrofit2.http.GET;

/**
* Copyright (c) Aleengo, 2019. All rights reserved.
* Created by bau.cj on 05/07/2019.
*/
public interface XchangeRateAPI extends API{
public interface XchangeRateAPI {

String BASE_URL = "https://openexchangerates.org/api";
String BASE_URL = "https://openexchangerates.org/api/";
String APP_ID = "d1ff258466994304854884d3600a75aa";

String REQ_CURRENCY = "com.aleengo.iconvert.REQ_CURRENCY";
String REQ_RATE = "com.aleengo.iconvert.REQ_RATE";

@GET(value = "/latest.json?app_id=" + APP_ID)
Single<CurrencyWrapperList> latestRates();
@GET(value = "latest.json?app_id=" + APP_ID)
Observable<CurrencyWrapperList> latestRates();

@GET(value = "/currencies.json")
@GET(value = "currencies.json")
Observable<CurrencyWrapperList> currencies();
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@ public CurrencyWrapperList deserialize(JsonElement json, Type typeOfT, JsonDeser
throws JsonParseException {

final List<CurrencyWrapper> data = new LinkedList<>();
final JsonObject jo = json.getAsJsonObject();

JsonObject jo = json.getAsJsonObject();

if (jo.has("rates")) {
jo = jo.getAsJsonObject("rates");
}

jo.entrySet().forEach(e -> {
final String k = e.getKey();
final String v = e.getValue().getAsString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@
import java.util.List;

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

/**
* Copyright (c) Aleengo, 2019. All rights reserved.
* Created by bau.cj on 05/07/2019.
*/
@AllArgsConstructor
@NoArgsConstructor
public class CurrencyWrapperList {

private List<CurrencyWrapper> data;
public List<CurrencyWrapper> data;

public List<CurrencyWrapper> get() {
return data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import javax.inject.Inject;

import io.reactivex.Observable;
import io.reactivex.Single;
import io.reactivex.functions.Function;
import lombok.Getter;
import lombok.Setter;
Expand Down Expand Up @@ -85,7 +84,7 @@ protected CurrencyData instantiate(String code, String value) {
});
}

public Single<List<RateData>> getRates() {
public Observable<List<RateData>> getRates() {
return api.latestRates()
.map(new MapListFunction<RateData>() {
@Override
Expand All @@ -105,12 +104,16 @@ public MapListFunction() {

@Override
public List<D> apply(CurrencyWrapperList currencyWrapperList) throws Exception {
currencyWrapperList.get().forEach(currencyWrapper -> {
final String code = currencyWrapper.getKey();
final String value = currencyWrapper.getValue();
data.add(instantiate(code, value));
});
return data;
try {
currencyWrapperList.get().forEach(currencyWrapper -> {
final String code = currencyWrapper.getKey();
final String value = currencyWrapper.getValue();
data.add(instantiate(code, value));
});
return data;
} catch (Exception e) {
throw new RuntimeException(e);
}
}

protected abstract D instantiate(String code, String value);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
package com.aleengo.iconvert.persistence.repository;

import com.aleengo.iconvert.domain.Repository;
import com.aleengo.iconvert.domain.model.CurrencyEntity;
import com.aleengo.iconvert.domain.model.FavoriteEntity;
import com.aleengo.iconvert.persistence.api.OpenXchangeRateAPI;
import com.aleengo.iconvert.persistence.local.LocalCurrencyDataSource;
import com.aleengo.iconvert.persistence.model.db.CurrencyData;
import com.aleengo.iconvert.persistence.remote.RemoteDataSource;
import com.aleengo.iconvert.util.Mapper;
import com.aleengo.peach.toolbox.commons.model.Response;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import javax.inject.Inject;

import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;

/**
Expand All @@ -43,7 +44,8 @@ public CurrencyRepository(LocalCurrencyDataSource localDataSource, RemoteDataSou
public void getFavorites(GetCallback callback) {

if (localDataSource.isEmpty()) {
final Mapper mapper = new Mapper();
loadRatesAndCurrencies();
/*final Mapper mapper = new Mapper();
remoteDataSource.getRatesAndCurrencies(response -> {
if (response.getError() != null) {
throw new RuntimeException(response.getError());
Expand All @@ -57,7 +59,7 @@ public void getFavorites(GetCallback callback) {
localDataSource.saveAllRates(mapper.map2Rates(map.get(key)));
}
});
});
});*/
}
final List<FavoriteEntity> favoriteEntities = localDataSource.getFavorites();
callback.onReceived(new Response(favoriteEntities, null));
Expand Down Expand Up @@ -114,8 +116,19 @@ public void getCurrencies(GetCallback callback) {
}
}

public Observable<List<CurrencyData>> getCurrencies() {
return remoteDataSource.getCurrencies();
public Observable<List<CurrencyEntity>> getCurrencies() {
return remoteDataSource.getCurrencies()
.flatMap(new Function<List<CurrencyData>, ObservableSource<List<CurrencyEntity>>>() {

@Override
public ObservableSource<List<CurrencyEntity>> apply(List<CurrencyData> currencyDataList) throws Exception {
final List<CurrencyEntity> lstFinal = currencyDataList.stream()
.map(cd -> new CurrencyEntity(cd.getCode(), cd.getLibelle(), "0"))
.collect(Collectors.toList());

return Observable.just(lstFinal);
}
});
}

@Override
Expand All @@ -132,7 +145,6 @@ public void loadRatesAndCurrencies() {
.subscribe(localDataSource::saveAllCurrencies));

disposables.add(remoteDataSource.getRates()
.doOnSuccess(rateData -> System.out.println("success"))
.subscribeOn(Schedulers.io())
.subscribe(localDataSource::saveAllRates));
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,69 +1,9 @@
package com.aleengo.iconvert.persistence.repository;

import com.aleengo.iconvert.domain.Repository;
import com.aleengo.iconvert.domain.model.FavoriteEntity;
import com.aleengo.iconvert.persistence.model.db.CurrencyData;

import java.util.List;

/**
* Copyright (c) Aleengo, 2019. All rights reserved.
* Created by bau.cj on 04/07/2019.
*/
public class FavoriteRepository implements Repository {

@Override
public void search(String query, SearchCallback callback) {

}

@Override
public void getCurrency(String query, GetCallback callback) {

}

@Override
public void addAll(List<CurrencyData> currencies) {

}

@Override
public void getCurrencies(GetCallback callback) {

}

@Override
public void getRates(GetCallback callback) {

}

@Override
public void loadRatesAndCurrencies() {

}

@Override
public void getFavorites(GetCallback callback) {

}

@Override
public void addFavorite(FavoriteEntity favorite, AddCallback callback) {

}

@Override
public void addAllFavorites(List<FavoriteEntity> favorites, AddCallback callback) {

}

@Override
public void removeFavorites() {

}

@Override
public void removeFavorite(FavoriteEntity favorite) {
public class FavoriteRepository {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import androidx.annotation.CallSuper;
import androidx.annotation.LayoutRes;

import butterknife.ButterKnife;
import butterknife.Unbinder;


Expand All @@ -33,5 +34,6 @@ public void clear() {

public void inflate(@LayoutRes int id) {
inflate(getContext(), id, this);
unbinder = ButterKnife.bind(this);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.aleengo.iconvert.ui.search;

import com.aleengo.iconvert.dto.CurrencyIHM;
import com.aleengo.iconvert.ui.base.BasePresenter;
import com.aleengo.iconvert.ui.base.BaseTemplate;
import com.aleengo.iconvert.dto.CurrencyIHM;

import java.util.List;

Expand All @@ -26,5 +26,7 @@ interface Template extends BaseTemplate {

default void showMessage(String message){}
default void showMessage(int resId){}

void updateAdapter(List<CurrencyIHM> entities);
}
}
Loading

0 comments on commit f8802d2

Please sign in to comment.