/* ==================================================================
* 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.portal.service;
import java.io.File;
import java.util.List;
import com.jinhe.tss.component.log.Logable;
import com.jinhe.tss.portal.entity.ElementGroup;
import com.jinhe.tss.portal.helper.IElement;
/**
* 对元素(修饰器/布局器/Portlet)及其组的进行操作的service
*/
public interface IElementService {
/**
* 获取指定类型(修饰器/布局器/Portlet)所有的元素及其组
* @param elementName
* @return
*/
List<?> getAllElementsAndGroups(int type);
/**
* 获取指定类型(修饰器/布局器/Portlet)所有的启用的元素及其组.
* (编辑 "门户结构" 选择修饰器/布局器/Portlet 的时候会用到)
* @param type
* @return
*/
List<?> getAllStartElementsAndGroups(int type);
/**
* 保存一个元素
* @param obj
* @return
*/
@Logable(operateTable="门户元素", operateType="新建/修改", operateInfo="新建/修改了 ${returnVal} 节点")
IElement saveElement(IElement obj);
/**
* 删除一个元素
* @param clazz
* @param id
* @return
*/
@Logable(operateTable="门户元素", operateType="删除", operateInfo="删除了 ID为 ${args[1]} 的 节点 (类型为:${args[0]})")
IElement deleteElement(Class<?> elementClass, Long id);
/**
* 停用、启用一个元素
* @param elementClass
* @param id
* @param disabled
*/
@Logable(operateTable="门户元素", operateType="停用/启用", operateInfo="<#if args[2]=1>停用<#else>启用</#if>了(ID: ${args[1]})节点(类型为:${args[0]})")
void disableElement(Class<?> elementClass, Long id, Integer disabled);
/**
* 获取一个元素的详细信息
* @param elementClass
* @param id
* @return
*/
IElement getElementInfo(Class<?> elementClass, Long id);
/**
* 对元素进行排序
* @param id
* @param targetId
* @param direction
* @param elementClass
*/
void sortElement(Long id, Long targetId, int direction, Class<?> elementClass);
/**
* 复制一个元素
* @param id
* @param path
* @param elementClass
* @return
*/
IElement copyElement(Long id, File path, Class<?> elementClass);
/**
* 将修饰器设置为默认修饰器
* @param decoratorId
*/
void setDecorator4Default(Long decoratorId);
/**
* 将布局器设置为默认布局器
* @param layoutId
*/
void setLayout4Default(Long layoutId);
/*****************************************************************************************************************
************************************ 以下是对元素(修饰器/布局器/Portlet)组的操作 *************************************
*****************************************************************************************************************/
/**
* 移动一个元素到另外一个组
* @param id
* @param groupId
*/
void moveTo(Long id, Long groupId);
/**
* 删除一个组
* @param id
*/
void deleteGroupById(Long id);
/**
* 对组进行排序
* @param id
* @param targetId
* @param direction
*/
void sortByType(Long id, Long targetId, int direction);
/**
* 保存一个组
* @param entity
* @return
*/
ElementGroup saveGroup(ElementGroup entity);
/**
* 获取一个组的详细信息
* @param id
* @return
*/
ElementGroup getGroupInfo(Long id);
/**
* 复制一个组,包括其下的所有子组和元素
* @param id
* @param type
* @param path
*/
List<?> copyGroup(Long id, int type, String path);
/**
* 获取某个元素类型的所有分组
* @param type
* @return
*/
List<?> getGroupsByType(Integer type);
/**
* 复制一个元素到另外一个组
* @param id
* @param groupId
* @return
*/
Object[] copyTo(Long id, Long groupId);
/**
* 获取布局器列表,用以门户自定义组件替换
* @return
*/
List<?> getLayouts();
/**
*获取修饰器列表,用以门户自定义组件替换
* @return
*/
List<?> getDecorators();
}