package com.blinkcoder.kit;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.ehcache.CacheKit;
import com.jfinal.plugin.ehcache.IDataLoader;
import java.util.List;
/**
* User: Michael Chen
* Email: yidongnan@gmail.com
* Date: 13-10-11
* Time: 下午10:22
*/
public class ModelKit {
private Model dao;
private String cacheNameForOneModel;
public ModelKit(Model dao, String cacheNameForOneModel) {
this.dao = dao;
this.cacheNameForOneModel = cacheNameForOneModel;
}
public <M> Page<M> loadModelPage(Page<M> page) {
List<M> modelList = page.getList();
for (int i = 0; i < modelList.size(); i++) {
Model model = (Model) modelList.get(i);
M obj = getModel(model.getInt("id"));
modelList.set(i, obj);
}
return page;
}
public <M> List<M> loadModel(List<M> modelList) {
for (int i = 0; i < modelList.size(); i++) {
Model model = (Model) modelList.get(i);
M obj = getModel(model.getInt("id"));
modelList.set(i, obj);
}
return modelList;
}
public <M> M getModel(int id) {
final int ID = id;
final Model DAO = dao;
return CacheKit.get(cacheNameForOneModel, ID, new IDataLoader() {
@Override
public Object load() {
return DAO.findById(ID);
}
});
}
}