package com.sun.bingo.control;
import android.content.Context;
import com.framework.annotation.AsyncAtomMethod;
import com.framework.base.BaseControl;
import com.framework.proxy.MessageProxy;
import com.sun.bingo.model.BingoEntity;
import com.sun.bingo.model.UserEntity;
import java.util.List;
import cn.bmob.v3.BmobQuery;
import cn.bmob.v3.BmobUser;
import cn.bmob.v3.listener.FindListener;
/**
* Created by sunfusheng on 15/7/21.
*/
public class PageControl extends BaseControl {
public static final int PAGE_SIZE_LIMIT = 10;
private int pageSize = PAGE_SIZE_LIMIT;
private int lastPageSize = 0;
public PageControl(MessageProxy mMessageCallBack) {
super(mMessageCallBack);
}
/**
* Bingo首页
*/
@AsyncAtomMethod
public void getSquareBingoListData(Context context) {
if (context == null) return;
pageSize = PAGE_SIZE_LIMIT;
BmobQuery<BingoEntity> list = new BmobQuery<>();
list.setLimit(PAGE_SIZE_LIMIT);
list.order("-createdAt");
list.include("userEntity");
list.findObjects(context, new FindListener<BingoEntity>() {
@Override
public void onSuccess(List<BingoEntity> entities) {
mModel.put(1, entities);
if (entities.size() == 0) {
sendMessage("getDataEmpty");
} else if (entities.size() == PAGE_SIZE_LIMIT) {
sendMessage("getDataAdequate");
} else {
sendMessage("getDataInadequate");
}
}
@Override
public void onError(int i, String s) {
dealWithExceptionMessage(s);
sendMessage("getDataFail");
}
});
}
/**
* Bingo首页 (More)
*/
@AsyncAtomMethod
public void getSquareBingoListDataMore(Context context) {
if (context == null) return;
if (lastPageSize == pageSize) {
return ;
} else {
lastPageSize = pageSize;
}
BmobQuery<BingoEntity> list = new BmobQuery<>();
list.setSkip(pageSize);
list.setLimit(PAGE_SIZE_LIMIT);
list.order("-createdAt");
list.include("userEntity");
list.findObjects(context, new FindListener<BingoEntity>() {
@Override
public void onSuccess(List<BingoEntity> entities) {
pageSize += entities.size();
mModel.put(2, entities);
if (entities.size() == 0) {
sendMessage("getMoreDataEmpty");
} else if (entities.size() == PAGE_SIZE_LIMIT) {
sendMessage("getMoreDataAdequate");
} else {
sendMessage("getMoreDataInadequate");
}
}
@Override
public void onError(int i, String s) {
dealWithExceptionMessage(s);
sendMessage("getMoreDataFail");
}
});
}
/**
* 我的Bingo
*/
@AsyncAtomMethod
public void getMyBingoListData(Context context, String uid) {
if (context == null) return;
pageSize = PAGE_SIZE_LIMIT;
BmobQuery<BingoEntity> list = new BmobQuery<>();
list.setLimit(PAGE_SIZE_LIMIT);
list.addWhereEqualTo("userEntity", uid);
list.order("-createdAt");
list.include("userEntity");
list.findObjects(context, new FindListener<BingoEntity>() {
@Override
public void onSuccess(List<BingoEntity> entities) {
mModel.put(1, entities);
if (entities.size() == 0) {
sendMessage("getDataEmpty");
} else if (entities.size() == PAGE_SIZE_LIMIT) {
sendMessage("getDataAdequate");
} else {
sendMessage("getDataInadequate");
}
}
@Override
public void onError(int i, String s) {
dealWithExceptionMessage(s);
sendMessage("getDataFail");
}
});
}
/**
* 我的Bingo (More)
*/
@AsyncAtomMethod
public void getMyBingoListDataMore(Context context, String uid) {
if (context == null) return;
if (lastPageSize == pageSize) {
return ;
} else {
lastPageSize = pageSize;
}
BmobQuery<BingoEntity> list = new BmobQuery<>();
list.setSkip(pageSize);
list.setLimit(PAGE_SIZE_LIMIT);
list.addWhereEqualTo("userEntity", uid);
list.order("-createdAt");
list.include("userEntity");
list.findObjects(context, new FindListener<BingoEntity>() {
@Override
public void onSuccess(List<BingoEntity> entities) {
pageSize += entities.size();
mModel.put(2, entities);
if (entities.size() == 0) {
sendMessage("getMoreDataEmpty");
} else if (entities.size() == PAGE_SIZE_LIMIT) {
sendMessage("getMoreDataAdequate");
} else {
sendMessage("getMoreDataInadequate");
}
}
@Override
public void onError(int i, String s) {
dealWithExceptionMessage(s);
sendMessage("getMoreDataFail");
}
});
}
/**
* 我的收藏
*/
@AsyncAtomMethod
public void getFavoriteBingoListData(Context context) {
if (context == null) return;
pageSize = PAGE_SIZE_LIMIT;
UserEntity userEntity = BmobUser.getCurrentUser(context, UserEntity.class);
List<String> favoriteList = userEntity.getFavoriteList();
BmobQuery<BingoEntity> list = new BmobQuery<>();
list.setLimit(PAGE_SIZE_LIMIT);
list.addWhereContainedIn("objectId", favoriteList);
list.include("userEntity");
list.findObjects(context, new FindListener<BingoEntity>() {
@Override
public void onSuccess(List<BingoEntity> entities) {
mModel.put(1, entities);
if (entities.size() == 0) {
sendMessage("getDataEmpty");
} else if (entities.size() == PAGE_SIZE_LIMIT) {
sendMessage("getDataAdequate");
} else {
sendMessage("getDataInadequate");
}
}
@Override
public void onError(int i, String s) {
dealWithExceptionMessage(s);
sendMessage("getDataFail");
}
});
}
/**
* 我的收藏 (More)
*/
@AsyncAtomMethod
public void getFavoriteBingoListDataMore(Context context) {
if (context == null) return;
if (lastPageSize == pageSize) {
return ;
} else {
lastPageSize = pageSize;
}
UserEntity userEntity = BmobUser.getCurrentUser(context, UserEntity.class);
List<String> favoriteList = userEntity.getFavoriteList();
BmobQuery<BingoEntity> list = new BmobQuery<>();
list.setSkip(pageSize);
list.setLimit(PAGE_SIZE_LIMIT);
list.addWhereContainedIn("objectId", favoriteList);
list.include("userEntity");
list.findObjects(context, new FindListener<BingoEntity>() {
@Override
public void onSuccess(List<BingoEntity> entities) {
pageSize += entities.size();
mModel.put(2, entities);
if (entities.size() == 0) {
sendMessage("getMoreDataEmpty");
} else if (entities.size() == PAGE_SIZE_LIMIT) {
sendMessage("getMoreDataAdequate");
} else {
sendMessage("getMoreDataInadequate");
}
}
@Override
public void onError(int i, String s) {
dealWithExceptionMessage(s);
sendMessage("getMoreDataFail");
}
});
}
}