package com.vci.client.uif.engine.client.compare.dataloader;
import java.util.List;
import java.util.Map;
import com.vci.client.uif.engine.client.compare.dialog.treenode.TreeNodeObject;
/**
*
数据加载接口
*
* 系统中一个完整的树节点时有与父节点的关系对象及节点主对象组成
*
* 通常的 对于系统中的业务对象,即为主对象,与父之间的链接关系即为节点关系对象
*
* @author VCI-STGK006
*
*/
public interface DataLoader {
/**
* 在执行其它接口方法之前调用,
* 预先加载数据到本地内存。
*
* 解决大数据量是查询性能较慢的问题。
*/
public void loading();
/**
* 得到所有根节点
*
* 使用根节点对象调用getKey(Object) 方法返回值即为Map的key
* @return
*/
public Map getRoots();
/**
* 得到对象的唯一标示
*
* 在左右两侧树进行绘制时,通过该方法的返回值确定两侧节点是否在同一行
*
* @param object 可能是节点主对象,也可能是关系对象
* @return 返回该对象的唯一标识
*/
public String getKey(Object object);
/**
* 根据父节点对象,得到与所有子对象的关系对象
*
* @param key 父节点主对象的唯一标识
* @param parent 父节点对象
* @return
*/
public List getLinksByParent(String parentKey, TreeNodeObject parent);
/**
* 根据关系对象得到子节点的唯一标识
* @param r
* @return
*/
public String getChildKeyByLink(R r);
/**
* 通过对象唯一标识获得主对象
*
* @param key 通过getKey(Object)方法得到的对象的唯一标识
* @return
*/
public M getObject(String key);
/**
* 通过父节点,得到所有子节点对象
*
* 使用根节点对象调用getKey(Object) 方法返回值即为Map的key
*
* @param key 父节点主对象的唯一标识
* @param parent 父节点对象
* @return
*/
public Map getChildren(String parentKey, TreeNodeObject parent);
/**
* 通过父节点及子节点得到关系对象
*
* @param parentKey 父节点主对象的唯一标识
* @param parent 父节点对象
* @param object 子对象
* @return
*/
public R getChildLink(String parentKey, TreeNodeObject parent, M object);
}