Coder Social home page Coder Social logo

trendingtechnology / androiddatastorage Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xiaofei-it/androiddatastorage

0.0 2.0 0.0 283 KB

An easy-to-use and high-performance library for storing data in the Android system.

License: Other

Java 100.00%

androiddatastorage's Introduction

AndroidDataStorage

An easy-to-use and high-performance library for storing data in the Android system.

Chinese Readme 中文文档

##Features

  1. A framework for object persistence in Android, which can store any kind of objects.

  2. Using cache to improve the performance of storing and accessing data.

  3. Easy to use, even if you have no knowledge of the mechanics of Android storage.

  4. Good Ability of fault tolerance and high stability.

##Gradle

dependencies {
    compile 'xiaofei.library:android-data-storage:1.3.0'
}

##Maven

<dependency>
  <groupId>xiaofei.library</groupId>
  <artifactId>android-data-storage</artifactId>
  <version>1.3.0</version>
  <type>pom</type>
</dependency>

##Usage

###1. Obtain the implementation of data storage

Obtain the implementation of data storage through DataStorageFactory. Now it only supports the database version of data storage and more versions will be supported in the future.

IDataStorage dataStorage = DataStorageFactory.getInstance(
                               getApplicationContext(),
                               DataStorageFactory.TYPE_DATABASE);

###2. Principle

The framework stores an object according to its class's id and its own id. The former one is called the "class id" and the latter one is called the "object id".

If the framework stores two objects which have the same class id and the same object id, the one stored earlier is replaced by the one stored later.

The following will tell you how to give an object a class id and an object id.

###3. Class id

Add a @ClassId annotation on the class you want to store. Give the annotation a value, which indicates the class id.

Distinct classes should have distinct class ids.

If you guarantee that the class name remains the same in different versions of apps even after ProGuard is used, then the @ClassId annotation is not necessary. In this case, if you do not add a @ClassId annotation, the class name will be the class id.

###4. Object id

Often the object contains an object id as a field in itself. If there is such a field, then add an @ObjectId annotation on the field. Note that this field must be of the String type.

If there is no such a field, then you should provide an object id when storing and loading the object.

The following is an example illustrating how to add @ClassId and @ObjectId:

@ClassId("Order")
public class Order {
    @ObjectId
    private String mId;

    private int mState;

    public int getState() {
        return mState;
    }
    ...
    ...
}

###5. APIs

The following introduces APIs for storing and loading data.

All of the APIs perform operations in the memory cache and put the database operations in the background, so feel free to call the APIs in the main thread.

####1. Storing

Store an order:

dataStorage.saveOrUpdate(order);

Store a list of orders:

List<Order> list = new ArrayList<Order>();
...
dataStorage.saveOrUpdate(list);

If there is no id in the Order class, then you should provide an object id:

dataStorage.saveOrUpdate(order, "1001");

List<Order> list = new ArrayList<Order>();
List<String> ids = new ArrayList<ids>();
...
// Each order in the list has a corresponding id in ids.
dataStorage.saveOrUpdate(list, ids);

####2. Loading

Load an order:

Order order = dataStorage.load(Order.class, "1001");

Load all orders:

List<Order> list = dataStorage.loadAll(Order.class);

Load the orders whose state is 10:

List<Order> list = dataStorage.load(Order.class, new Condition() {
                     @Override
                     public boolean satisfy(Order o) {
                         return o.getState() == 10;
                     }
                   });

Load a list of orders:

List<String> ids = new ArrayList<String>();
...
List<Order> list = dataStorage.load(Order.class, ids);

Each loading method has an alternative into which you can pass a comparator as a parameter. The return value of such a method will be sorted using the comparator.

List<Order> list = dataStorage.loadAll(Order.class, comparator);

I have write a helper class to provide an easy way to generate a comparator. See Here.

####3. Deleting

Delete an order:

dataStorage.delete(order);

If there is no id in the Order class, then you should provide an object id:

dataStorage.delete(Order.class, "1001");

Delete all orders:

dataStorage.deleteAll(Order.class);

Delete a list of orders:

List<Order> list = new ArrayList<Order>();
dataStorage.delete(list);

If there is no id in the Order class, then you should provide object ids:

List<String> ids = new ArrayList<String>();
...
dataStorage.delete(Order.class, ids);

Delete the orders whose state is 10:

dataStorage.delete(Order.class, new Condition() {
                     @Override
                     public boolean satisfy(Order o) {
                         return o.getState() == 10;
                     }
                   });

####4. Other APIs

There are a lot of APIs. Please See xiaofei.library.datastorage.IDataStorage.

androiddatastorage's People

Contributors

xiaofei-it avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.