16
16
package com .fernandocejas .android10 .sample .app .users .cache ;
17
17
18
18
import android .content .Context ;
19
+ import com .fernandocejas .android10 .sample .app .core .executor .ThreadExecutor ;
19
20
import com .fernandocejas .android10 .sample .app .data .FileManager ;
20
- import com .fernandocejas .android10 .sample .app .users . cache . serializer . JsonSerializer ;
21
+ import com .fernandocejas .android10 .sample .app .data . Serializer ;
21
22
import com .fernandocejas .android10 .sample .app .users .UserEntity ;
22
23
import com .fernandocejas .android10 .sample .app .users .UserNotFoundException ;
23
- import com .fernandocejas .android10 .sample .app .core .executor .ThreadExecutor ;
24
24
import java .io .File ;
25
25
import javax .inject .Inject ;
26
26
import javax .inject .Singleton ;
@@ -40,35 +40,35 @@ public class UserCacheImpl implements UserCache {
40
40
41
41
private final Context context ;
42
42
private final File cacheDir ;
43
- private final JsonSerializer serializer ;
43
+ private final Serializer serializer ;
44
44
private final FileManager fileManager ;
45
45
private final ThreadExecutor threadExecutor ;
46
46
47
47
/**
48
48
* Constructor of the class {@link UserCacheImpl}.
49
49
*
50
50
* @param context A
51
- * @param userCacheSerializer {@link JsonSerializer } for object serialization.
51
+ * @param serializer {@link Serializer } for object serialization.
52
52
* @param fileManager {@link FileManager} for saving serialized objects to the file system.
53
53
*/
54
- @ Inject
55
- public UserCacheImpl (Context context , JsonSerializer userCacheSerializer ,
56
- FileManager fileManager , ThreadExecutor executor ) {
57
- if (context == null || userCacheSerializer == null || fileManager == null || executor == null ) {
54
+ @ Inject UserCacheImpl (Context context , Serializer serializer , FileManager fileManager ,
55
+ ThreadExecutor executor ) {
56
+ if (context == null || serializer == null || fileManager == null || executor == null ) {
58
57
throw new IllegalArgumentException ("Invalid null parameter" );
59
58
}
60
59
this .context = context .getApplicationContext ();
61
60
this .cacheDir = this .context .getCacheDir ();
62
- this .serializer = userCacheSerializer ;
61
+ this .serializer = serializer ;
63
62
this .fileManager = fileManager ;
64
63
this .threadExecutor = executor ;
65
64
}
66
65
67
66
@ Override public Observable <UserEntity > get (final int userId ) {
68
67
return Observable .create (subscriber -> {
69
- File userEntityFile = UserCacheImpl .this .buildFile (userId );
70
- String fileContent = UserCacheImpl .this .fileManager .readFileContent (userEntityFile );
71
- UserEntity userEntity = UserCacheImpl .this .serializer .deserialize (fileContent );
68
+ final File userEntityFile = UserCacheImpl .this .buildFile (userId );
69
+ final String fileContent = UserCacheImpl .this .fileManager .readFileContent (userEntityFile );
70
+ final UserEntity userEntity =
71
+ UserCacheImpl .this .serializer .deserialize (fileContent , UserEntity .class );
72
72
73
73
if (userEntity != null ) {
74
74
subscriber .onNext (userEntity );
@@ -81,18 +81,17 @@ public UserCacheImpl(Context context, JsonSerializer userCacheSerializer,
81
81
82
82
@ Override public void put (UserEntity userEntity ) {
83
83
if (userEntity != null ) {
84
- File userEntityFile = this .buildFile (userEntity .getUserId ());
84
+ final File userEntityFile = this .buildFile (userEntity .getUserId ());
85
85
if (!isCached (userEntity .getUserId ())) {
86
- String jsonString = this .serializer .serialize (userEntity );
87
- this .executeAsynchronously (new CacheWriter (this .fileManager , userEntityFile ,
88
- jsonString ));
86
+ final String jsonString = this .serializer .serialize (userEntity , UserEntity .class );
87
+ this .executeAsynchronously (new CacheWriter (this .fileManager , userEntityFile , jsonString ));
89
88
setLastCacheUpdateTimeMillis ();
90
89
}
91
90
}
92
91
}
93
92
94
93
@ Override public boolean isCached (int userId ) {
95
- File userEntityFile = this .buildFile (userId );
94
+ final File userEntityFile = this .buildFile (userId );
96
95
return this .fileManager .exists (userEntityFile );
97
96
}
98
97
@@ -133,7 +132,7 @@ private File buildFile(int userId) {
133
132
* Set in millis, the last time the cache was accessed.
134
133
*/
135
134
private void setLastCacheUpdateTimeMillis () {
136
- long currentMillis = System .currentTimeMillis ();
135
+ final long currentMillis = System .currentTimeMillis ();
137
136
this .fileManager .writeToPreferences (this .context , SETTINGS_FILE_NAME ,
138
137
SETTINGS_KEY_LAST_CACHE_UPDATE , currentMillis );
139
138
}
0 commit comments