/* ==================================================================
* 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.engine.macrocode;
import java.util.Map;
import com.jinhe.tss.portal.engine.HTMLGenerator;
import com.jinhe.tss.portal.engine.model.AbstractElementNode;
import com.jinhe.tss.portal.engine.model.DecoratorNode;
import com.jinhe.tss.portal.engine.model.LayoutNode;
import com.jinhe.tss.portal.engine.model.PortletNode;
/**
* 宏代码执行容器
*/
public class MacrocodeContainerFactory {
/**
* <p>
* 实例化DecoratorNode宏代码容器
* </p>
* @param code
* 包含宏代码的字符串
* @param node
* 包含此字符串的Node节点 DecoratorNode
* @param content
* 所修饰的对象(Element)
* @return
*/
public static AbstractMacrocodeContainer newInstance(String code, DecoratorNode node, Object content){
return new DecoratorMacrocodeContainer(code, node, content);
}
/**
* <p>
* 实例化LayoutNode宏代码容器
* </p>
* @param code
* 包含宏代码的字符串
* @param node
* 包含此字符串的Node节点 LayoutNode
* @param children
* 布局器所在的页面或版面包含的子节点HTMLGenerator.Element对象集合(即布局器的多个窗口(port0,port1,port2)包含着的)
* @return
*/
public static AbstractMacrocodeContainer newInstance(String code, LayoutNode node,
Map<String, HTMLGenerator.Element> children) {
return new LayoutMacrocodeContainer(code, node, children);
}
/**
* <p>
* 实例化AbstractElementNode(DecoratorNode/LayoutNode/PortletNode)宏代码容器
* </p>
* @param code
* 包含宏代码的字符串
* @param node
* 包含此code字符串的Node节点
* @return
*/
public static AbstractMacrocodeContainer newInstance(String code, AbstractElementNode node){
if(node instanceof DecoratorNode)
return new DecoratorMacrocodeContainer(code, (DecoratorNode) node);
if(node instanceof LayoutNode)
return new LayoutMacrocodeContainer(code, (LayoutNode) node);
if(node instanceof PortletNode)
return new PortletMacrocodeContainer(code, (PortletNode) node);
return null;
}
}