Localify

Additional

Language
Java
Version
N/A
Created
May 8, 2015
Updated
Nov 8, 2017 (Retired)
Owner
Marcin Polak (polok)
Contributors
Marcin Polak (polok)
Salvador Montiel (SMontiel)
2
Activity
Badge
Generate
Download
Source code

Advertisement

Localify

Version: 1.0.0

Description

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.

Welcome to fork and pull request.

1.Integration
Using Gradle:
dependencies {
    compile 'com.github.polok.localify:localify:1.0.0'
}
Using Maven:
<dependency>
    <groupId>com.github.polok.localify</groupId>
    <artifactId>localify</artifactId>
    <version>1.0.0</version>
</dependency>
2.Usage
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();
Read a file from assets or raw directory. You can do this in three different ways:
1)
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);
2)
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) {
                }
            });
3)
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) {
                }
            });

3. Additional settings

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();

4. More examples

Load json file and map to object
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) {
                }
        });

If you want to see more details, go ahead and check the demo!

License

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.