<#assign nBeginIndex = portlet.pluginPortletTypeName?last_index_of("_")> <#assign portletName = portlet.pluginPortletTypeName?substring(0, nBeginIndex)?lower_case> <#switch portlet_file_type> <#case "1"> /* * Copyright (c) 2002-2013, Mairie de 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.plugins.${plugin_name}.business.portlet; import fr.paris.lutece.portal.business.portlet.IPortletInterfaceDAO; import fr.paris.lutece.portal.business.portlet.PortletHome; import fr.paris.lutece.portal.business.portlet.PortletTypeHome; import fr.paris.lutece.portal.service.spring.SpringContextService; /** * This class provides instances management methods for ${portletName?cap_first} objects */ public class ${portletName?cap_first}PortletHome extends PortletHome { // Static variable pointed at the DAO instance private static I${portletName?cap_first}PortletDAO _dao = (I${portletName?cap_first}PortletDAO) SpringContextService.getPluginBean( "${plugin_name}", "${portletName?lower_case}PortletDAO" ); /* This class implements the Singleton design pattern. */ private static ${portletName?cap_first}PortletHome _singleton; /** * Constructor */ public ${portletName?cap_first}PortletHome( ) { if ( _singleton == null ) { _singleton = this; } } /** * Returns the identifier of the portlet type * * @return the portlet type identifier */ public String getPortletTypeId( ) { String strCurrentClassName = this.getClass( ).getName( ); String strPortletTypeId = PortletTypeHome.getPortletTypeId( strCurrentClassName ); return strPortletTypeId; } /** * Returns the instance of ${portletName?cap_first} Portlet * * @return the ${portletName?cap_first} Portlet instance */ public static PortletHome getInstance( ) { if ( _singleton == null ) { _singleton = new ${portletName?cap_first}PortletHome( ); } return _singleton; } /** * Returns the instance of the portlet DAO singleton * * @return the instance of the DAO singleton */ public IPortletInterfaceDAO getDAO( ) { return _dao; } /** * Checks whether the ${portletName} feed is linked to a portlet * @return The boolean result * @param nId${portletName?cap_first}Feed The identifier of the ${portletName} feed */ public static boolean checkNoPortletLinked( int nId${portletName?cap_first}Feed ) { return _dao.checkNoPortletLinked( nId${portletName?cap_first}Feed ); } } <#break> <#case "2"> /* * Copyright (c) 2002-2013, Mairie de 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.plugins.${plugin_name}.business.portlet; import fr.paris.lutece.portal.business.portlet.IPortletInterfaceDAO; import fr.paris.lutece.portal.business.portlet.Portlet; /** * * @author */ public interface I${portletName?cap_first}PortletDAO extends IPortletInterfaceDAO { /** * Delete record from table * * * @param nPortletId The indentifier of the Portlet */ void delete( int nPortletId ); /** * Insert a new record in the table. * * * @param portlet The Instance of the Portlet */ void insert( Portlet portlet ); /** * load the data of dbpagePortlet from the table * * @param nIdPortlet The identifier of the portlet * @return portlet The instance of the object portlet */ Portlet load( int nIdPortlet ); /** * Update the record in the table * * * @param portlet The reference of the portlet */ void store( Portlet portlet ); /** * Checks if a feed is linked to a portlet * @return A boolean * @param nId${portletName?cap_first}Feed The identifier of the ${portletName?cap_first} feed */ boolean checkNoPortletLinked( int nId${portletName?cap_first}Feed ); } <#break> <#case "3"> /* * Copyright (c) 2002-2013, Mairie de 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.plugins.${plugin_name}.business.portlet; import fr.paris.lutece.portal.business.portlet.Portlet; import fr.paris.lutece.util.xml.XmlUtil; import javax.servlet.http.HttpServletRequest; /** * This class represents business objects ${portletName?cap_first}Portlet */ public class ${portletName?cap_first}Portlet extends Portlet { ///////////////////////////////////////////////////////////////////////////////// // Constants private String _str${portletName?cap_first}FeedId; private static final String TAG_${portletName?upper_case}_PORTLET = "${portletName?lower_case}-portlet"; private static final String TAG_${portletName?upper_case}_PORTLET_CONTENT = "${portletName?lower_case}-portlet-content"; /** * Sets the identifier of the portlet type to value specified */ public ${portletName?cap_first}Portlet( ) { setPortletTypeId( ${portletName?cap_first}PortletHome.getInstance( ).getPortletTypeId( ) ); } /** * Sets the url of the portlet * * @param str${portletName?cap_first}FeedId the ${portletName?cap_first} portlet url */ public void set${portletName?cap_first}FeedId( String str${portletName?cap_first}FeedId ) { _str${portletName?cap_first}FeedId = str${portletName?cap_first}FeedId; } /** * Returns the ${portletName?cap_first} Feed Id of the ${portletName?cap_first} portlet * * @return the ${portletName?cap_first} Portlet url */ public String get${portletName?cap_first}FeedId( ) { return _str${portletName?cap_first}FeedId; } /** * Returns the Xml code of the ${portletName?cap_first} portlet with XML heading * * @param request The HTTP servlet request * @return the Xml code of the ${portletName?cap_first} portlet */ public String getXmlDocument( HttpServletRequest request ) { return XmlUtil.getXmlHeader( ) + getXml( request ); } /** * Returns the Xml code of the ${portletName?cap_first} portlet without XML heading * * @param request The HTTP servlet request * @return the Xml code of the ${portletName?cap_first} portlet content */ public String getXml( HttpServletRequest request ) { StringBuffer strXml = new StringBuffer( ); XmlUtil.beginElement( strXml, TAG_${portletName?upper_case}_PORTLET ); XmlUtil.addElementHtml( strXml, TAG_${portletName?upper_case}_PORTLET_CONTENT, _str${portletName?cap_first}FeedId ); XmlUtil.endElement( strXml, TAG_${portletName?upper_case}_PORTLET ); return addPortletTags( strXml ); } /** * Updates the current instance of the ${portletName?cap_first}Portlet object */ public void update( ) { ${portletName?cap_first}PortletHome.getInstance( ).update( this ); } /** * Removes the current instance of the ${portletName?cap_first}Portlet object */ public void remove( ) { ${portletName?cap_first}PortletHome.getInstance( ).remove( this ); } } <#break> <#case "4"> /* * Copyright (c) 2002-2013, Mairie de 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.plugins.${plugin_name}.business.portlet; import fr.paris.lutece.portal.business.portlet.Portlet; import fr.paris.lutece.util.sql.DAOUtil; /** * this class provides Data Access methods for ${portletName?cap_first}Portlet objects */ public final class ${portletName?cap_first}PortletDAO implements I${portletName?cap_first}PortletDAO { //////////////////////////////////////////////////////////////////////////// // Constants private static final String SQL_QUERY_SELECT = "SELECT id_portlet, ${portletName?lower_case}_feed_id FROM ${portletName?lower_case}_portlet WHERE id_portlet = ? "; private static final String SQL_QUERY_INSERT = "INSERT INTO ${portletName?lower_case}_portlet ( id_portlet, ${portletName?lower_case}_feed_id ) VALUES ( ?, ? )"; private static final String SQL_QUERY_DELETE = "DELETE FROM ${portletName?lower_case}_portlet WHERE id_portlet = ? "; private static final String SQL_QUERY_UPDATE = "UPDATE ${portletName?lower_case}_portlet SET id_portlet = ?, ${portletName?lower_case}_feed_id = ? WHERE id_portlet = ? "; private static final String SQL_QUERY_CHECK_PORTLET_LINKED = "SELECT ${portletName?lower_case}_feed_id FROM ${portletName?lower_case}_portlet WHERE ${portletName?lower_case}_feed_id = ? "; /////////////////////////////////////////////////////////////////////////////////////// // Access methods to data /** * Insert a new record in the table. * * @param portlet The Instance of the Portlet */ public void insert( Portlet portlet ) { ${portletName?cap_first}Portlet p = (${portletName?cap_first}Portlet) portlet; DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT ); daoUtil.setInt( 1, p.getId( ) ); daoUtil.setString( 2, p.get${portletName?cap_first}FeedId( ) ); daoUtil.executeUpdate( ); daoUtil.free( ); } /** * Delete record from table * * @param nPortletId The indentifier of the Portlet */ public void delete( int nPortletId ) { DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE ); daoUtil.setInt( 1, nPortletId ); daoUtil.executeUpdate( ); daoUtil.free( ); } /** * Update the record in the table * * @param portlet The reference of the portlet */ public void store( Portlet portlet ) { ${portletName?cap_first}Portlet p = (${portletName?cap_first}Portlet) portlet; DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE ); daoUtil.setInt( 1, p.getId( ) ); daoUtil.setString( 2, p.get${portletName?cap_first}FeedId( ) ); daoUtil.setInt( 3, p.getId( ) ); daoUtil.executeUpdate( ); daoUtil.free( ); } /** * load the data of dbpagePortlet from the table * @return portlet The instance of the object portlet * @param nIdPortlet The identifier of the portlet */ public Portlet load( int nIdPortlet ) { ${portletName?cap_first}Portlet portlet = new ${portletName?cap_first}Portlet( ); DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT ); daoUtil.setInt( 1, nIdPortlet ); daoUtil.executeQuery( ); if ( daoUtil.next( ) ) { portlet.setId( daoUtil.getInt( 1 ) ); portlet.set${portletName?cap_first}FeedId( daoUtil.getString( 2 ) ); } daoUtil.free( ); return portlet; } /** * Checks if a feed is linked to a portlet * @return A boolean * @param nId${portletName?cap_first}Feed The identifier of the ${portletName?cap_first} feed */ public boolean checkNoPortletLinked( int nId${portletName?cap_first}Feed ) { DAOUtil daoUtil = new DAOUtil( SQL_QUERY_CHECK_PORTLET_LINKED ); daoUtil.setInt( 1, nId${portletName?cap_first}Feed ); daoUtil.executeQuery( ); if ( daoUtil.next( ) ) { daoUtil.free( ); return false; } daoUtil.free( ); return true; } } <#break> <#default>