package net.tsz.afinal.db.sqlite;
import net.tsz.afinal.FinalDb;
import java.util.ArrayList;
import java.util.List;
/**
*
* 一对多延迟加载类
* Created by pwy on 13-7-25.
* @param <O> 宿主实体的class
* @param <M> 多放实体class
*/
public class ManyToOneLazyLoader<M,O> {
M manyEntity;
Class<M> manyClazz;
Class<O> oneClazz;
FinalDb db;
/**
* 用于
*/
private Object fieldValue;
public ManyToOneLazyLoader(M manyEntity, Class<M> manyClazz, Class<O> oneClazz, FinalDb db){
this.manyEntity = manyEntity;
this.manyClazz = manyClazz;
this.oneClazz = oneClazz;
this.db = db;
}
O oneEntity;
boolean hasLoaded = false;
/**
* 如果数据未加载,则调用loadManyToOne填充数据
* @return
*/
public O get(){
if(oneEntity==null && !hasLoaded){
this.db.loadManyToOne(null,this.manyEntity,this.manyClazz,this.oneClazz);
hasLoaded = true;
}
return oneEntity;
}
public void set(O value){
oneEntity = value;
}
public Object getFieldValue() {
return fieldValue;
}
public void setFieldValue(Object fieldValue) {
this.fieldValue = fieldValue;
}
}