/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.component.dynproperty;
import java.util.List;
import com.jinhe.tss.component.dynproperty.entity.DynableEntity;
import com.jinhe.tss.component.dynproperty.entity.GridTemplate;
import com.jinhe.tss.component.dynproperty.entity.PropertyDef;
import com.jinhe.tss.component.dynproperty.entity.XFormTemplate;
import com.jinhe.tss.component.dynproperty.entity.XFormTemplateTab;
import com.jinhe.tss.component.dynproperty.support.IRemotePropertyService;
import com.jinhe.tss.core.exception.BusinessException;
/**
* <p> IPropertyService.java </p>
* 动态属性service接口,继承 动态属性远程调用service接口。
*
* @author Jon.Jing 2008/04/14 10:18:54 $
*/
public interface PropertyService extends IRemotePropertyService{
/**
* 导入动态实体以及实体基本属性和模板信息。(远程)
* @param docXmlStr
*/
void importDynableEntity(String docXmlStr, Long groupId);
/**
* 获取所有的动态实体组、动态实体以及各个实体包含的所有属性、还有实体的模板信息(包括Grid、Xform模板).
* 并相应的组装起来。
*
* @param isOnlyGroup
* 是否只取动态实体组,移动的时候用到。
* @return
*/
List<?> getDynableEntities(boolean isOnlyGroup);
/****************************************************************************************************
**************************** 实体组实体维护(实体维 护更多在父接口中) *******************************
*****************************************************************************************************/
/**
* 根据id获取动态实体组或实体对象
* @return
*/
DynableEntity getGroupOrEntityById(Long id);
/**
* 保存动态实体组
* @param group
* @return
*/
DynableEntity saveGroup(DynableEntity group);
/**
* 删除实体组或实体。
* 如果是实体组则,将该组下拥有的动态实体组和动态实体移动到根目录下;
* 如果是实体,调用deleteDynableEntity(String entityCode)。
* @param id
*/
void deleteGroupOrEntity(Long id);
/**
* 获取可以移动至的实体组列表
* @param id
* @return
*/
List<?> getCanMoveToGroups(Long id);
/**
* 移动动态实体
* @param id
* @param targetId
* 目标组ID
*/
void moveGroupOrEntity(Long id, Long targetId);
/****************************************************************************************************
********************************************* 属性维护 ********************************************
*****************************************************************************************************/
/**
* 根据id值获取属性对象
* @param propertyId
* @return
*/
PropertyDef getPropertyById(Long propertyId);
/**
* 保存属性
* @param property
* @return
*/
PropertyDef saveProperty(PropertyDef property);
/**
* 删除动态属性以及动态属性值
* @param id
*/
void deleteProperty(Long id);
/**
* 在当前动态实体下复制一个属性
* @param id
* @return
*/
PropertyDef copyProperty(Long id);
/**
* 复制属性到指定的动态实体。
* 如果
* @param id
* 属性id
* @param targetId
* 目标实体id
* @return
*/
PropertyDef copyPropertyTo(Long id, Long targetId);
/**
* 属性排序
* @param propertyId
* @param targetId
* @param direction
*/
void sortProperty(Long propertyId, Long targetId, int direction);
/****************************************************************************************************
********************************************* 模板维护 ********************************************
*****************************************************************************************************/
/**
* 保存XForm模板布局.
* 保存XForm模板declare节点和layout节点信息,并记录实体属性值保存到了哪个tab中.
* @param tab
*/
void saveXForm(String layoutStr);
/**
* 新增或修改一个XForm模板
* @param xTemplate
*/
XFormTemplate saveXFormTemplate(XFormTemplate xTemplate);
/**
* 新增或修改一个XForm模板Tab页.
* 保存XForm模板declare节点和layout节点信息,并记录实体属性值保存到了哪个tab中.
* @param tab
*/
XFormTemplateTab saveXFormTemplateTab(XFormTemplateTab tab, String entityCode);
XFormTemplateTab saveXFormTemplateTab(XFormTemplateTab tab);
/**
* 删除一个XForm模板包括其下所有的Tab页
* @param xTemplate
*/
void deleteXFormTemplate(Long xTemplateId);
/**
* 删除一个XForm模板Tab页,同时删除该tab页在PropertyTab表中和属性的对应关系
* @param tab
*/
void deleteXFormTemplateTab(Long tabId);
/**
* 获取某个动态对象实体所有的属性、某组XForm模板及其所有tab页信息。
* @param entityCode
* @param templateCode
* 模板code
* @return
*/
Object[] getXFormTempalteInfo(String entityCode, String xCode);
/**
* 新增或修改一个Grid模板
* @param gTemplate
*/
GridTemplate saveGridTemplate(GridTemplate gTemplate);
/**
* 删除一个Grid模板包括其下所有的Tab页
* @param gTemplate
*/
void deleteGridTemplate(Long gTemplateId);
/**
* 获取某个指定的Grid模板,维护的时候用.
* 区别远程接口中的getGridTemplate(String entityCode, String gCode)。
*
* @param entityCode
* @param templateCode
* 模板code
* @return
*/
String getGridTemplateInfo(String entityCode, String gCode);
/**
* 根据code值获取对应的动态实体对象
* @param entityCode
* @return
*/
DynableEntity getDynableEntity(String entityCode) throws BusinessException;
/**
* 根据动态实体的code值和XForm模板的code值获取对象XForm模板
* @param entityCode
* @param xCode
* @return
*/
XFormTemplate getXFormTemplateByCode(String entityCode, String xCode) throws BusinessException;
/**
* 根据动态实体的code值和Grid模板的code值获取对象Grid模板
* @param entityCode
* @param gCode
* @return
* @throws BusinessException
*/
GridTemplate getGridTemplateByCode(String entityCode, String gCode) throws BusinessException;
/**
* 获取一个对象,提供本方法主要是方便action中获取对象。
* @param clazz
* @param id
* @return
*/
Object getEntity(Class<?> clazz, Long id);
}