⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 portletsjahiacontentserializer.java

📁 java 写的一个新闻发布系统
💻 JAVA
字号:
package org.jahia.layout;/** * Title: * Description: * Copyright:    Copyright (c) 2002 * Company:     Jahia Ltd * @author * @version 1.0 */import org.jahia.exceptions.*;import org.jahia.data.*;import org.jahia.data.fields.*;import org.jahia.data.containers.*;import org.jahia.registries.ServicesRegistry;import org.jahia.utils.JahiaConsole;import java.util.*;/** * Portlet serialization class for shared portlets. Storage is done using Jahia's * content definition system, effectively using containers and fields to store * information relative to portlets. * * The serializer must be created with a JahiaData object in order for the * declaration of the field to be done properly. The portlet group name must be * also specified. The portlet group name is the name of the instance of a * portlet layout manager. This allows a page to have multiple portlet layouts * * @author Serge Huber * @version 1.0 */public class PortletsJahiaContentSerializer {    private static final String     METADATA_CONTAINER_SUFFIT = "MetaData";    // PortletsAPI Default Parameters    private static final int		defaultPortletID = 0;    private static final int		defaultPortletSourceID = 0;    private static final int        defaultPortletW = 100;    private static final int        defaultPortletH = 100;    private static final int        defaultPortletColumn = 0;    private static final int        defaultPortletRow = 0;    private JahiaData jData;    private String portletGroupName;    /**     * The serializer constructor enforces the relationship between a JahiaData     * object, a portletGroupName string and the serializer itself. For a single     * page we may use multiple serializer if we are processing multiple portlet     * groups     */    public PortletsJahiaContentSerializer(JahiaData jData, String portletGroupName)    throws JahiaException {        this.jData = jData;        this.portletGroupName = portletGroupName + METADATA_CONTAINER_SUFFIT;            // this concatenation is done to keep a relationship between the            // content container and the metadata container        declareJahiaTemplatePortlets();    }    /**     * Since we are using Jahia's content storage feature, we need to declare     * the storage containers and fields. This function does just that, plus     * it defines default values for the field.     */    private void declareJahiaTemplatePortlets()    throws JahiaException {        PortletBean defaultPortlet = new PortletBean(defaultPortletID,                                                     defaultPortletSourceID,                                                     defaultPortletW,                                                     defaultPortletH,                                                     defaultPortletColumn,                                                     defaultPortletRow);        declareJahiaTemplatePortlets(defaultPortlet);    }    /**     * Since we are using Jahia's content storage feature, we need to declare     * the storage containers and fields. This function also allows us to define     * a set of default values to customize the default values of the fields     */    private void declareJahiaTemplatePortlets(PortletBean defaultValues)    throws JahiaException {        try {            jData.containers().declareField( "PortletID", "ID", FieldTypes.SMALLTEXT,                                             Integer.toString(defaultValues.getPortletID()) );            jData.containers().declareField( "PortletSourceID", "Source ID", FieldTypes.SMALLTEXT,                                             Integer.toString(defaultValues.getPortletSourceID()) );            jData.containers().declareField( "PortletW", "Width", FieldTypes.SMALLTEXT,                                             Integer.toString(defaultValues.getPortletW()) );            jData.containers().declareField( "PortletH", "Height", FieldTypes.SMALLTEXT,                                             Integer.toString(defaultValues.getPortletH()) );            jData.containers().declareField( "PortletColumn", "Column", FieldTypes.SMALLTEXT,                                             Integer.toString(defaultValues.getPortletColumn()) );            jData.containers().declareField( "PortletRow", "Row", FieldTypes.SMALLTEXT,                                             Integer.toString(defaultValues.getPortletRow()) );            Vector theFieldList = new Vector();            theFieldList.add( "PortletID");            theFieldList.add( "PortletSourceID" );            theFieldList.add( "PortletW" );            theFieldList.add( "PortletH" );            theFieldList.add( "PortletColumn" );            theFieldList.add( "PortletRow" );            jData.containers().declareContainer( portletGroupName, "Portlet List Meta Data", theFieldList );            JahiaConsole.println("PortletsJahiaContentSerializer",                                 "Container for portlet list meta data [" +                                 portletGroupName + "] declared");        } catch (JahiaException je) {            // this probably means we have already declared the portlet            // definition.            /** @todo find a cleaner way to handle multiple definitions */            JahiaConsole.println("PortletsJahiaContentSerializer.declareJahiaTemplatePortlets",                                 "Portlets already defined...");        }    }    /**     * Returns an enumeration of PortletBean objects that are contained in the     * page     */    public Enumeration getPortlets(String currentUserName) throws JahiaException {        // this first call must be done before any access. It will only declare        // the portlets once for each page        JahiaContainerList portletContainerList = jData.containers().getContainerList(portletGroupName);        Enumeration portletContainerEnumeration = portletContainerList.getContainers();        Vector resultPortletList = new Vector();        while (portletContainerEnumeration.hasMoreElements()) {            JahiaContainer portletContainer = (JahiaContainer) portletContainerEnumeration.nextElement();            resultPortletList.add(containerToPortlet(portletContainer));        }        return resultPortletList.elements();    }    private PortletBean containerToPortlet(JahiaContainer container) throws JahiaException {        PortletBean resultPortlet = null;        resultPortlet = new PortletBean(container.getField("PortletID").getValue(),                                        container.getField("PortletSourceID").getValue(),                                        container.getField("PortletW").getValue(),                                        container.getField("PortletH").getValue(),                                        container.getField("PortletColumn").getValue(),                                        container.getField("PortletRow").getValue(),                                        container.getID()                                        );        return resultPortlet;    }    private void portletToContainer(PortletBean pb, JahiaContainer container) throws JahiaException {        container.getField("PortletID").setValue(Integer.toString(pb.getPortletID()));        container.getField("PortletSourceID").setValue(Integer.toString(pb.getPortletSourceID()));        container.getField("PortletW").setValue(Integer.toString(pb.getPortletW()));        container.getField("PortletH").setValue(Integer.toString(pb.getPortletH()));        container.getField("PortletColumn").setValue(Integer.toString(pb.getPortletColumn()));        container.getField("PortletRow").setValue(Integer.toString(pb.getPortletRow()));    }    public PortletBean getPortlet(String currentUserName,                                  int portletID) throws JahiaException {        JahiaContainerList portletContainerList = jData.containers().getContainerList(portletGroupName);        Enumeration portletContainerEnumeration = portletContainerList.getContainers();        while (portletContainerEnumeration.hasMoreElements()) {            JahiaContainer portletContainer = (JahiaContainer) portletContainerEnumeration.nextElement();            PortletBean portlet = containerToPortlet(portletContainer);            if (portlet.getPortletID() == portletID)                return portlet;        }        return null;    }   /**     * Retrieves a list of portlets for the specified column     *     * @todo this should probably return a sorted list     *     */    public Enumeration getPortletsFromColumn(int theColumn, String currentUserName) throws JahiaException {        Enumeration allPortlets = getPortlets(currentUserName);        Vector portletList = new Vector();        while (allPortlets.hasMoreElements()) {            PortletBean portlet = (PortletBean) allPortlets.nextElement();            if (portlet.getPortletColumn() == theColumn) {                portletList.add(portlet);            }        }        return portletList.elements();    } // end getPortletsFromColumn()    public boolean isPortletInStore(PortletBean portlet,                                    String currentUserName) throws JahiaException {        return (getPortlet(currentUserName, portlet.getPortletID()) != null);    }    private JahiaContainer lookupPortletContainer(PortletBean portlet,                                                  String currentUserName)    throws JahiaException    {        //JahiaConsole.println("PorletsJahiaContentSerializer.lookupPortletContainer",        //                     "Looking up portlet " + portlet.getPortletSourceID() + " for user currentUserName");        JahiaContainerList portletContainerList = jData.containers().getContainerList(portletGroupName);        Enumeration portletContainerEnumeration = portletContainerList.getContainers();        while (portletContainerEnumeration.hasMoreElements()) {            JahiaContainer portletContainer = (JahiaContainer) portletContainerEnumeration.nextElement();            int containerPortletID = Integer.parseInt(portletContainer.getField("PortletSourceID").getValue());            //JahiaConsole.println("PortletsJahiaContentSerializer.lookupPortletContainer", "Source ID = " + Integer.toString(containerPortletID));            if (containerPortletID == portlet.getPortletSourceID()) {                return portletContainer;            }        }        return null;    }    public void storePortlet(PortletBean portlet,                             String currentUserName)    throws JahiaException {        JahiaConsole.println("PorletsJahiaContentSerializer.storePortlet",                             "Storing portlet " + portlet.getPortletSourceID() + " meta data for user currentUserName");        JahiaContainer portletContainer = lookupPortletContainer(portlet, currentUserName);        if (portletContainer != null) {            JahiaConsole.println("PortletsJahiaContentSerializer.storePortlet", "Updating portlet container...");            portletToContainer(portlet, portletContainer);            ServicesRegistry.getInstance().getJahiaContainersService().saveContainer(portletContainer, 0, jData.params());        } else {            // container not found, let's try to create it then...            JahiaConsole.println("PorletsJahiaContentSerializer.storePortlet",                                 "Creating portlet " + portlet.getPortletSourceID() + " meta data for user currentUserName");            JahiaContainerList portletList = jData.containers().getContainerList(this.portletGroupName);            ServicesRegistry.getInstance().getJahiaContainersService().saveContainerListInfo(portletList, jData.page().getAclID());            portletList = jData.containers().getContainerList(this.portletGroupName);            JahiaConsole.println("PortletsJahiaContentSerializer.storePortlet",                                 "ACL ID of container list=" + Integer.toString(portletList.getAclID()));            portletContainer = new JahiaContainer(0, jData.params().getJahiaID(),                                                  jData.params().getPageID(),                                                  portletList.getID(),                                                  0, /* rank */                                                  portletList.getAclID(),                                                  portletList.getctndefid());            JahiaConsole.println("PortletsJahiaContentSerializer.storePortlet",                                 "Setting field values in container");            portletToContainer(portlet, portletContainer);            JahiaConsole.println("PortletsJahiaContentSerializer.storePortlet",                                 "Saving container and field data to persistance storage...");            ServicesRegistry.getInstance().getJahiaContainersService().saveContainer(portletContainer, 0, jData.params());            /*            throw new JahiaException("Couldn't save portlet data",                                     "Container not found for storing portlet metadata",                                     JahiaException.APPLICATION_ERROR,                                     JahiaException.ERROR);            */        }    }    public void removePortlet(PortletBean portlet,                              String currentUserName) throws JahiaException {        JahiaContainer portletContainer = lookupPortletContainer(portlet, currentUserName);        if (portletContainer != null) {            ServicesRegistry.getInstance().getJahiaContainersService().deleteContainer( portletContainer.getID(), jData.params() );        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -