java 存储库模式的Android LocalDataSource示例。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 存储库模式的Android LocalDataSource示例。相关的知识,希望对你有一定的参考价值。
package com.dev.data.source.local;
import com.dev.data.models.User;
import com.dev.data.source.UserDataSource;
import io.realm.Realm;
import io.realm.RealmConfiguration;
/**
* Concrete implementation of a User's data source as a Realm db.
*/
public class UserLocalDataSource implements UserDataSource {
private User userObj;
private Realm realm;
private final int ID_USER = 0;
/**realm initialization
*/
private void startRealm(){
final RealmConfiguration config = new RealmConfiguration
.Builder()
.deleteRealmIfMigrationNeeded()
.build();
realm = Realm.getInstance(config);
userObj = new User();
}
/**@param callback - GetuserCallback object
* @return userObj;
*/
// get user as object if database is not empty
@Override
public void getUser(GetUserCallback callback) {
if (callback != null)
startRealm();
userObj = realm.where(User.class)
.equalTo("id", ID_USER).findFirst();
if (userObj == null) {
realm.commitTransaction();
callback.onDataNotAvailable(new Error("Data is null"));
} else {
realm.commitTransaction();
callback.onUserLoaded(userObj);
}
}
/** user local saving
* @param user - object of User.class
*/
@Override
public void saveUser(User user) {
startRealm();
realm.beginTransaction();
userObj.setId(ID_USER);
realm.copyToRealm(user);
realm.commitTransaction();
}
/**
* user updating in local db
* @param user - object of User.class
*/
@Override
public void updateUser(User user, GetUserCallback callback) {
startRealm();
realm.beginTransaction();
userObj = realm.where(User.class)
.equalTo("id", ID_USER).findFirst();
realm.copyToRealmOrUpdate(user);
realm.commitTransaction();
}
/** get user ID from local db
* @return id;
*/
@Override
public long getId() {
final long id;
startRealm();
realm.beginTransaction();
userObj = realm.where(User.class)
.equalTo("id", ID_USER).findFirst();
id = userObj.getId();
realm.commitTransaction();
return id;
}
/**
* get user gender
* @return gender
*/
@Override
public String getGender() {
final String gender;
startRealm();
realm.beginTransaction();
userObj = realm.where(User.class)
.equalTo("id", ID_USER).findFirst();
gender = userObj.getGender();
realm.commitTransaction();
return gender;
}
/**
* set user gender
* @param gender - user`s gender
*/
@Override
public void setGender(String gender) {
startRealm();
realm.beginTransaction();
userObj = realm.where(User.class)
.equalTo("id", ID_USER).findFirst();
userObj.setGender(gender);
realm.commitTransaction();
}
}
以上是关于java 存储库模式的Android LocalDataSource示例。的主要内容,如果未能解决你的问题,请参考以下文章
java 存储库模式的Android Repository类示例。
使用 maven 存储库将 java 库添加到 Android Studio 项目