Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit 8246065

Browse files
author
Evgenii Kanivets
committed
#34[30m]. Add base cache layer. Now it just wraps repos.
1 parent c69d9ad commit 8246065

File tree

5 files changed

+147
-5
lines changed

5 files changed

+147
-5
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/MtApp.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
import com.blogspot.e_kanivets.moneytracker.di.AppComponent;
66
import com.blogspot.e_kanivets.moneytracker.di.DaggerAppComponent;
77
import com.blogspot.e_kanivets.moneytracker.di.module.ControllerModule;
8-
import com.blogspot.e_kanivets.moneytracker.di.module.RepoModule;
8+
import com.blogspot.e_kanivets.moneytracker.di.module.repo.CachedRepoModule;
9+
import com.blogspot.e_kanivets.moneytracker.di.module.repo.RepoModule;
910

1011
/**
1112
* Custom application implementation.
@@ -37,7 +38,7 @@ public AppComponent getAppComponent() {
3738

3839
private AppComponent buildComponent() {
3940
return DaggerAppComponent.builder()
40-
.repoModule(new RepoModule(get()))
41+
.cachedRepoModule(new CachedRepoModule(get()))
4142
.controllerModule(new ControllerModule())
4243
.build();
4344
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/AppComponent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import com.blogspot.e_kanivets.moneytracker.activity.exchange_rate.ExchangeRatesActivity;
1111
import com.blogspot.e_kanivets.moneytracker.activity.record.AddRecordActivity;
1212
import com.blogspot.e_kanivets.moneytracker.activity.record.MainActivity;
13+
import com.blogspot.e_kanivets.moneytracker.di.module.repo.CachedRepoModule;
1314
import com.blogspot.e_kanivets.moneytracker.di.module.ControllerModule;
14-
import com.blogspot.e_kanivets.moneytracker.di.module.RepoModule;
1515
import com.blogspot.e_kanivets.moneytracker.ui.presenter.AccountsSummaryPresenter;
1616

1717
import javax.inject.Singleton;
@@ -24,7 +24,7 @@
2424
*
2525
* @author Evgenii Kanivets
2626
*/
27-
@Component(modules = {RepoModule.class, ControllerModule.class})
27+
@Component(modules = {CachedRepoModule.class, ControllerModule.class})
2828
@Singleton
2929
public interface AppComponent {
3030
void inject(MainActivity mainActivity);
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.blogspot.e_kanivets.moneytracker.di.module.repo;
2+
3+
import android.content.Context;
4+
import android.support.annotation.NonNull;
5+
6+
import com.blogspot.e_kanivets.moneytracker.entity.Account;
7+
import com.blogspot.e_kanivets.moneytracker.entity.Category;
8+
import com.blogspot.e_kanivets.moneytracker.entity.ExchangeRate;
9+
import com.blogspot.e_kanivets.moneytracker.entity.Record;
10+
import com.blogspot.e_kanivets.moneytracker.entity.Transfer;
11+
import com.blogspot.e_kanivets.moneytracker.repo.AccountRepo;
12+
import com.blogspot.e_kanivets.moneytracker.repo.CategoryRepo;
13+
import com.blogspot.e_kanivets.moneytracker.repo.DbHelper;
14+
import com.blogspot.e_kanivets.moneytracker.repo.ExchangeRateRepo;
15+
import com.blogspot.e_kanivets.moneytracker.repo.RecordRepo;
16+
import com.blogspot.e_kanivets.moneytracker.repo.TransferRepo;
17+
import com.blogspot.e_kanivets.moneytracker.repo.base.IRepo;
18+
import com.blogspot.e_kanivets.moneytracker.repo.cache.BaseCache;
19+
20+
import javax.inject.Singleton;
21+
22+
import dagger.Module;
23+
import dagger.Provides;
24+
25+
/**
26+
* Dagger 2 module to provide {@link IRepo} dependencies.
27+
* Created on 3/29/16.
28+
*
29+
* @author Evgenii Kanivets
30+
*/
31+
@Module
32+
public class CachedRepoModule {
33+
private Context context;
34+
35+
public CachedRepoModule(Context context) {
36+
this.context = context;
37+
}
38+
39+
@Provides
40+
@NonNull
41+
@Singleton
42+
public DbHelper providesDbHelper() {
43+
return new DbHelper(context);
44+
}
45+
46+
@Provides
47+
@NonNull
48+
@Singleton
49+
public IRepo<Account> providesAccountRepo(DbHelper dbHelper) {
50+
return new BaseCache<>(new AccountRepo(dbHelper));
51+
}
52+
53+
@Provides
54+
@NonNull
55+
@Singleton
56+
public IRepo<Category> providesCategoryRepo(DbHelper dbHelper) {
57+
return new BaseCache<>(new CategoryRepo(dbHelper));
58+
}
59+
60+
@Provides
61+
@NonNull
62+
@Singleton
63+
public IRepo<ExchangeRate> providesExchangeRateRepo(DbHelper dbHelper) {
64+
return new BaseCache<>(new ExchangeRateRepo(dbHelper));
65+
}
66+
67+
@Provides
68+
@NonNull
69+
@Singleton
70+
public IRepo<Record> providesRecordRepo(DbHelper dbHelper) {
71+
return new BaseCache<>(new RecordRepo(dbHelper));
72+
}
73+
74+
@Provides
75+
@NonNull
76+
@Singleton
77+
public IRepo<Transfer> providesTransferRepo(DbHelper dbHelper) {
78+
return new BaseCache<>(new TransferRepo(dbHelper));
79+
}
80+
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/RepoModule.java renamed to app/src/main/java/com/blogspot/e_kanivets/moneytracker/di/module/repo/RepoModule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blogspot.e_kanivets.moneytracker.di.module;
1+
package com.blogspot.e_kanivets.moneytracker.di.module.repo;
22

33
import android.content.Context;
44
import android.support.annotation.NonNull;
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.blogspot.e_kanivets.moneytracker.repo.cache;
2+
3+
import android.support.annotation.NonNull;
4+
import android.support.annotation.Nullable;
5+
6+
import com.blogspot.e_kanivets.moneytracker.repo.base.IRepo;
7+
8+
import java.util.List;
9+
10+
/**
11+
* Cache for {@link IRepo} instances. Use Decorator pattern.
12+
* Created on 4/19/16.
13+
*
14+
* @author Evgenii Kanivets
15+
*/
16+
public class BaseCache<T> implements IRepo<T> {
17+
@SuppressWarnings("unused")
18+
private static final String TAG = "BaseCache";
19+
20+
@NonNull
21+
private IRepo<T> repo;
22+
23+
public BaseCache(@NonNull IRepo<T> repo) {
24+
this.repo = repo;
25+
}
26+
27+
@Nullable
28+
@Override
29+
public T create(@Nullable T instance) {
30+
return repo.create(instance);
31+
}
32+
33+
@Nullable
34+
@Override
35+
public T read(long id) {
36+
return repo.read(id);
37+
}
38+
39+
@Nullable
40+
@Override
41+
public T update(@Nullable T instance) {
42+
return repo.update(instance);
43+
}
44+
45+
@Override
46+
public boolean delete(@Nullable T instance) {
47+
return repo.delete(instance);
48+
}
49+
50+
@NonNull
51+
@Override
52+
public List<T> readAll() {
53+
return repo.readAll();
54+
}
55+
56+
@NonNull
57+
@Override
58+
public List<T> readWithCondition(@Nullable String condition, @Nullable String[] args) {
59+
return repo.readWithCondition(condition, args);
60+
}
61+
}

0 commit comments

Comments
 (0)