PortletHome.java
- /*
- * Copyright (c) 2002-2022, City of Paris
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice
- * and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice
- * and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * License 1.0
- */
- package fr.paris.lutece.portal.business.portlet;
- import fr.paris.lutece.portal.business.stylesheet.StyleSheet;
- import fr.paris.lutece.portal.service.portlet.PortletEvent;
- import fr.paris.lutece.portal.service.portlet.PortletEventListener;
- import fr.paris.lutece.portal.service.spring.SpringContextService;
- import fr.paris.lutece.portal.service.util.AppLogService;
- import fr.paris.lutece.portal.service.util.AppPropertiesService;
- import fr.paris.lutece.util.ReferenceList;
- import java.util.Collection;
- import java.util.List;
- /**
- * This class provides instances management methods (create, find, ...) for Portlet objects
- */
- public abstract class PortletHome implements PortletHomeInterface
- {
- private static final String PROPERTY_PORTLET_CREATION_STATUS = "lutece.portlet.creation.status";
- private static final int CONSTANT_DEFAULT_STATUS = Portlet.STATUS_PUBLISHED;
- // Static variable pointed at the DAO instance
- private static IPortletDAO _dao = SpringContextService.getBean( "portletDAO" );
- // /////////////////////////////////////////////////////////////////////////
- // Finders
- /**
- * Returns the Portlet whose primary key is specified in parameter
- *
- * @param nKey
- * the portlet identifier
- * @return The portlet object
- */
- public static Portlet findByPrimaryKey( int nKey )
- {
- Portlet portlet = _dao.load( nKey );
- String strHomeClass = portlet.getHomeClassName( );
- Portlet p = null;
- try
- {
- PortletHomeInterface home = (PortletHomeInterface) Class.forName( strHomeClass ).newInstance( );
- p = home.getDAO( ).load( nKey );
- p.copy( portlet );
- }
- catch( IllegalAccessException | InstantiationException | ClassNotFoundException e )
- {
- AppLogService.error( e.getMessage( ), e );
- }
- return p;
- }
- /**
- * Returns a collection of portlets according to the selected type
- *
- * @param strIdPortletType
- * the portlet type
- * @return the portlets in form of Collection
- */
- public static List<Portlet> findByType( String strIdPortletType )
- {
- return _dao.selectPortletsByType( strIdPortletType );
- }
- /**
- * Returns the list of portlets for the search on publishing
- *
- * @param strPortletName
- * STh name of the portlet
- * @return the list in form of Collection
- */
- public static Collection<PortletImpl> getPortletsListbyName( String strPortletName )
- {
- return _dao.selectPortletsListbyName( strPortletName );
- }
- /**
- * Returns the stylesheet of the portlet according to the mode
- *
- * @param nIdPortlet
- * the identifier of the portlet
- * @param nIdMode
- * the selected mode
- * @return the stylesheet
- */
- static StyleSheet getXsl( int nIdPortlet, int nIdMode )
- {
- return _dao.selectXslFile( nIdPortlet, nIdMode );
- }
- /**
- * Returns all the styles corresponding to a portlet typeun type de portlet
- *
- * @param strIdPortletType
- * the identifier of the portlet type
- * @return the list of styles in form of ReferenceList
- */
- public static ReferenceList getStylesList( String strIdPortletType )
- {
- return _dao.selectStylesList( strIdPortletType );
- }
- /**
- * Gets a collection of portlets associated to a given role
- *
- * @param strRole
- * The role
- * @return The collection
- */
- public static Collection<Portlet> getPortletsByRoleKey( String strRole )
- {
- return _dao.selectPortletsByRole( strRole );
- }
- /**
- * Creates a new portlet in the database
- *
- * @param portlet
- * An instance of the portlet to create
- * @return the Portlet instance created
- */
- public synchronized Portlet create( Portlet portlet )
- {
- portlet.setStatus( AppPropertiesService.getPropertyInt( PROPERTY_PORTLET_CREATION_STATUS, CONSTANT_DEFAULT_STATUS ) );
- // Creation of the portlet parent
- _dao.insert( portlet );
- // Creation of the portlet child
- getDAO( ).insert( portlet );
- // Invalidate the portlet
- invalidate( portlet );
- return portlet;
- }
- /**
- * Deletes the portlet in the database
- *
- * @param portlet
- * the portlet to remove
- */
- public synchronized void remove( Portlet portlet )
- {
- // Deleting of the portlet child
- getDAO( ).delete( portlet.getId( ) );
- // Deleting of the portlet parent and its alias if exist
- _dao.delete( portlet.getId( ) );
- // Invalidate the portlet
- invalidate( portlet );
- }
- /**
- * Updates a portlet with the values of the specified portlet instance
- *
- * @param portlet
- * portlet to update
- */
- public void update( Portlet portlet )
- {
- getDAO( ).store( portlet );
- _dao.store( portlet );
- // Invalidate the portlet
- invalidate( portlet );
- }
- /**
- * Invalidate the portlet which is specified in parameter Invalidates the alias portlets connected to this portlet too.
- *
- * @param portlet
- * the portlet instance
- */
- public static void invalidate( Portlet portlet )
- {
- PortletEvent event = new PortletEvent( PortletEvent.INVALIDATE, portlet.getId( ), portlet.getPageId( ) );
- notifyListeners( event );
- // invalidate aliases
- Collection<Portlet> listAliases = getAliasList( portlet.getId( ) );
- for ( Portlet alias : listAliases )
- {
- PortletEvent eventAlias = new PortletEvent( PortletEvent.INVALIDATE, alias.getId( ), alias.getPageId( ) );
- notifyListeners( eventAlias );
- }
- }
- /**
- * Invalidate a portlet whose identifier is specified in paramaeter
- *
- * @param nIdPortlet
- * the portlet identifier
- */
- public static void invalidate( int nIdPortlet )
- {
- Portlet portlet = findByPrimaryKey( nIdPortlet );
- if ( portlet != null )
- {
- invalidate( portlet );
- }
- }
- /**
- * Indicates if the portlet has alias
- *
- * @param nIdPortlet
- * the portlet identifier
- * @return true if the portlet has alias, false if not.
- */
- public static boolean hasAlias( int nIdPortlet )
- {
- return _dao.hasAlias( nIdPortlet );
- }
- /**
- * Update the status of portlet
- *
- * @param portlet
- * the portlet to remove
- * @param nStatus
- * The status to update
- */
- public static void updateStatus( Portlet portlet, int nStatus )
- {
- // Deleting of the portlet child
- _dao.updateStatus( portlet, nStatus );
- // Invalidate the portlet
- invalidate( portlet );
- }
- /**
- * Update the status of portlet
- *
- * @param portlet
- * the portlet to remove
- * @param nStatus
- * The status to update
- */
- public static void updatePosition( Portlet portlet, int nColumn, int nOrder )
- {
- // Deleting of the portlet child
- _dao.updatePosition( portlet, nColumn, nOrder );
- // Invalidate the portlet
- invalidate( portlet );
- }
- /**
- * Returns the instance of the PortletType whose identifier is specified in parameter
- *
- * @param strPortletTypeId
- * the identifier of the portlet type
- * @return the instance of the portlet type
- */
- public static PortletType getPortletType( String strPortletTypeId )
- {
- return _dao.selectPortletType( strPortletTypeId );
- }
- /**
- * Returns the collection of the StyleSheet objects associated to the Style
- *
- * @param nStyleId
- * identifier of the style
- * @return A collection of styles
- */
- public static Collection<PortletImpl> getPortletListByStyle( int nStyleId )
- {
- return _dao.selectPortletListByStyle( nStyleId );
- }
- /**
- * Returns the collection of the StyleSheet objects associated to the Style
- *
- * @param nPortletId
- * identifier of the portlet
- * @return A collection of styles
- */
- public static Collection<Portlet> getAliasList( int nPortletId )
- {
- return _dao.selectAliasesForPortlet( nPortletId );
- }
- /**
- * Get the last modified portlet
- *
- * @return the last modified portlet
- */
- public static Portlet getLastModifiedPortlet( )
- {
- return _dao.loadLastModifiedPortlet( );
- }
- /**
- * Notifies listeners
- *
- * @param event
- * the event
- */
- public static void notifyListeners( PortletEvent event )
- {
- for ( PortletEventListener listener : SpringContextService.getBeansOfType( PortletEventListener.class ) )
- {
- listener.processPortletEvent( event );
- }
- }
- /**
- * Get list of used orders for a column
- *
- * @param pageId
- * the page id
- * @param columnId
- * the column id
- * @return list of orders used for this column
- */
- public static List<Integer> getUsedOrdersForColumns( int pageId, int columnId )
- {
- return _dao.getUsedOrdersForColumns( pageId, columnId );
- }
- }