Localify is a small library which allows to load a content from files which are stored under assets and/or raw directory. It can be useful when you have to load some init data or during tests to load mock data.
dependencies {
compile 'com.github.polok.localify:localify:1.0.0'
}
<dependency>
<groupId>com.github.polok.localify</groupId>
<artifactId>localify</artifactId>
<version>1.0.0</version>
</dependency>
First you have to init a LocalifyClient (the basic version) where you have to set the AssetManager and/or the Resources
LocalifyClient localifyClient = new LocalifyClient.Builder()
.withAssetManager(getAssets()) //If you want to read from raw directory
.withResources(getResources()) //If you want to read from assets directory
.build();
String loadAssetsFile(String fileName);
String loadRawFile(@RawRes int fileNameRawId);
//Read from assets directory
String dataAssets = localifyClient.localify().loadAssetsFile("test.text");
//Read from raw directory
String dataRaw = localifyClient.localify().loadRawFile(R.raw.test);
void loadAssetsFile(String fileName, LocalifyCallback<T> callback);
void loadRawFile(@RawRes int fileNameRawId, LocalifyCallback<T> callback);
//Read from assets directory
localifyClient.localify()
.async()
.loadAssetsFile("test.txt", new LocalifyCallback<String>() {
@Override
public void onSuccess(String data) {
}
@Override
public void onError(Throwable throwable) {
}
});
//Read from raw directory
localifyClient.localify()
.async()
.loadRawFile(R.raw.test, new LocalifyCallback<String>() {
@Override
public void onSuccess(String data) {
}
@Override
public void onError(Throwable throwable) {
}
});
Observable<String> loadAssetsFile(String fileName);
Observable<String> loadRawFile(@RawRes int fileNameRawId);
localifyClient.localify()
.rx()
.loadAssetsFile("test.txt")
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
localifyClient.localify()
.rx()
.loadRawFile(R.raw.test)
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
By default asynchronous callbacks run in Android main thread. If you want this can be changed by 'withExecutor(executor)' method invoked on LocalifyCalient's builder:
LocalifyClient localifyClient = new LocalifyClient.Builder()
.withExecutor(....)
...
.build();
localifyClient.localify()
.rx()
.loadAssetsFile("test.json")
.subscribeOn(Schedulers.io())
.map(new Func1<String, User>() {
@Override
public User call(String data) {
Gson gson = new GsonBuilder().create();
return gson.fromJson(data, User.class);
}
}).subscribe(new Subscriber<User>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(User user) {
}
});
Copyright 2015 Marcin Polak
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.