View Javadoc
1   /*
2    * Copyright (c) 2002-2017, Mairie de Paris
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions
7    * are met:
8    *
9    *  1. Redistributions of source code must retain the above copyright notice
10   *     and the following disclaimer.
11   *
12   *  2. Redistributions in binary form must reproduce the above copyright notice
13   *     and the following disclaimer in the documentation and/or other materials
14   *     provided with the distribution.
15   *
16   *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
17   *     contributors may be used to endorse or promote products derived from
18   *     this software without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
24   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30   * POSSIBILITY OF SUCH DAMAGE.
31   *
32   * License 1.0
33   */
34  package fr.paris.lutece.plugins.xmlpage.web.portlet;
35  
36  import fr.paris.lutece.plugins.xmlpage.business.portlet.XmlPagePortlet;
37  import fr.paris.lutece.plugins.xmlpage.business.portlet.XmlPagePortletHome;
38  import fr.paris.lutece.plugins.xmlpage.service.XmlPageService;
39  import fr.paris.lutece.portal.business.portlet.PortletHome;
40  import fr.paris.lutece.portal.service.message.AdminMessage;
41  import fr.paris.lutece.portal.service.message.AdminMessageService;
42  import fr.paris.lutece.portal.web.constants.Messages;
43  import fr.paris.lutece.portal.web.constants.Parameters;
44  import fr.paris.lutece.portal.web.portlet.PortletJspBean;
45  import fr.paris.lutece.util.html.HtmlTemplate;
46  
47  import java.util.HashMap;
48  
49  import javax.servlet.http.HttpServletRequest;
50  
51  
52  /**
53   * This class provides the user interface to manage XmlPage Portlet features
54   */
55  public class XmlPagePortletJspBean extends PortletJspBean
56  {
57      ///////////////////////////////////////////////////////////////////////////////////
58      // Constants
59      private static final String PROPERTY_PREFIX = "portlet.xmlpage";
60      private static final String PARAMETER_PAGE_ID = "page_id";
61      private static final String PARAMETER_PORTLET_ID = "portlet_id";
62      private static final String PARAMETER_PORTLET_TYPE_ID = "portlet_type_id";
63      private static final String PARAMETER_XMLPAGE_NAME = "xmlpage_name";
64      private static final String PARAMETER_VALUE_SEPARATOR = "-";
65      private static final String CONSTANT_EMPTY_STRING = "";
66      private static final String MARK_XML_PAGES_LIST = "xml_pages_list";
67      private static final String MARK_XML_PAGE_ID = "xml_page_id";
68  
69      /**
70       * Returns the properties prefix used for XmlPage portlet and defined in lutece.properties file
71       *
72       * @return the value of the property prefix
73       */
74      public String getPropertiesPrefix(  )
75      {
76          return PROPERTY_PREFIX;
77      }
78  
79      /**
80       * Returns the XmlPage Portlet form of creation
81       *
82       * @param request The Http rquest
83       * @return the html code of the XmlPage portlet form
84       */
85      public String getCreate( HttpServletRequest request )
86      {
87          String strPageId = request.getParameter( PARAMETER_PAGE_ID );
88          String strPortletTypeId = request.getParameter( PARAMETER_PORTLET_TYPE_ID );
89          HashMap model = new HashMap(  );
90          model.put( MARK_XML_PAGES_LIST, XmlPageService.getInstance(  ).getXmlPageList(  ) );
91  
92          HtmlTemplate template = getCreateTemplate( strPageId, strPortletTypeId, model );
93  
94          return template.getHtml(  );
95      }
96  
97      /**
98       * Returns the XmlPage Portlet form for update
99       *
100      * @param request The Http request
101      * @return the html code of the XmlPage portlet form
102      */
103     public String getModify( HttpServletRequest request )
104     {
105         String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
106         int nPortletId = Integer.parseInt( strPortletId );
107         XmlPagePortlet portlet = (XmlPagePortlet) PortletHome.findByPrimaryKey( nPortletId );
108         String strParamValue = portlet.getPageName(  ).concat( PARAMETER_VALUE_SEPARATOR ).concat( portlet.getStyle(  ) );
109         HashMap model = new HashMap(  );
110         model.put( MARK_XML_PAGES_LIST, XmlPageService.getInstance(  ).getXmlPageList(  ) );
111         model.put( MARK_XML_PAGE_ID, strParamValue );
112 
113         HtmlTemplate template = getModifyTemplate( portlet, model );
114 
115         return template.getHtml(  );
116     }
117 
118     /**
119      * Treats the creation form of a new XmlPage portlet
120      *
121      * @param request The Http request
122      * @return The jsp URL which displays the view of the created XmlPage portlet
123      */
124     public String doCreate( HttpServletRequest request )
125     {
126         XmlPagePortlet portlet = new XmlPagePortlet(  );
127 
128         // recovers portlet specific attributes
129         String strPageId = request.getParameter( PARAMETER_PAGE_ID );
130         int nPageId = Integer.parseInt( strPageId );
131         String strXmlPageName = request.getParameter( PARAMETER_XMLPAGE_NAME );
132         int indexSeparator = strXmlPageName.lastIndexOf( PARAMETER_VALUE_SEPARATOR );
133         String strPageName = strXmlPageName.substring( 0, indexSeparator );
134         String strStyle = strXmlPageName.substring( indexSeparator + 1 );
135 
136         String strStyleId = request.getParameter( Parameters.STYLE );
137 
138         if ( ( strXmlPageName == null ) || strXmlPageName.trim(  ).equals( CONSTANT_EMPTY_STRING ) )
139         {
140             return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
141         }
142 
143         // recovers portlet common attributes
144         setPortletCommonData( request, portlet );
145 
146         String strName = portlet.getName(  );
147 
148         if ( ( strName == null ) || strName.trim(  ).equals( CONSTANT_EMPTY_STRING ) )
149         {
150             return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
151         }
152 
153         portlet.setPageId( nPageId );
154         portlet.setPageName( strPageName );
155         portlet.setStyle( strStyle );
156 
157         // Creates the portlet
158         XmlPagePortletHome.getInstance(  ).create( portlet );
159 
160         // displays the page with the new portlet
161         return getPageUrl( portlet.getPageId(  ) );
162     }
163 
164     /**
165      * Treats the update form of the XmlPage portlet whose identifier is in the http request
166      *
167      * @param request The Http request
168      * @return The jsp URL which displays the view of the updated portlet
169      */
170     public String doModify( HttpServletRequest request )
171     {
172         // recovers portlet attributes
173         String strPortletId = request.getParameter( PARAMETER_PORTLET_ID );
174         int nPortletId = Integer.parseInt( strPortletId );
175         XmlPagePortlet portlet = (XmlPagePortlet) PortletHome.findByPrimaryKey( nPortletId );
176 
177         String strStyleId = request.getParameter( Parameters.STYLE );
178 
179         if ( ( strStyleId == null ) || strStyleId.trim(  ).equals( CONSTANT_EMPTY_STRING ) )
180         {
181             return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
182         }
183 
184         // recovers portlet common attributes
185         setPortletCommonData( request, portlet );
186 
187         // mandatory field
188         String strName = portlet.getName(  );
189 
190         if ( strName.trim(  ).equals( CONSTANT_EMPTY_STRING ) )
191         {
192             return AdminMessageService.getMessageUrl( request, Messages.MANDATORY_FIELDS, AdminMessage.TYPE_STOP );
193         }
194 
195         // recovers portlet specific attributes
196         String strXmlPageName = request.getParameter( PARAMETER_XMLPAGE_NAME );
197         int indexSeparator = strXmlPageName.lastIndexOf( PARAMETER_VALUE_SEPARATOR );
198         String strPageName = strXmlPageName.substring( 0, indexSeparator );
199         String strStyle = strXmlPageName.substring( indexSeparator + 1 );
200         portlet.setPageName( strPageName );
201         portlet.setStyle( strStyle );
202 
203         // updates the portlet
204         portlet.update(  );
205 
206         // displays the page with the new portlet
207         return getPageUrl( portlet.getPageId(  ) );
208     }
209 }