Coverage Report - fr.paris.lutece.plugins.announce.modules.workflow.service.prerequisite.PublicationDatePrerequisite
 
Classes in this File Line Coverage Branch Coverage Complexity
PublicationDatePrerequisite
0 %
0/19
0 %
0/6
1,714
 
 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.announce.modules.workflow.service.prerequisite;
 35  
 
 36  
 import fr.paris.lutece.plugins.announce.business.Announce;
 37  
 import fr.paris.lutece.plugins.announce.business.AnnounceHome;
 38  
 import fr.paris.lutece.plugins.announce.modules.workflow.business.prerequisite.PublicationDatePrerequisiteConfig;
 39  
 import fr.paris.lutece.plugins.workflowcore.business.prerequisite.IPrerequisiteConfig;
 40  
 import fr.paris.lutece.plugins.workflowcore.service.prerequisite.IAutomaticActionPrerequisiteService;
 41  
 import fr.paris.lutece.portal.service.template.AppTemplateService;
 42  
 import fr.paris.lutece.util.html.HtmlTemplate;
 43  
 
 44  
 import org.apache.commons.lang.StringUtils;
 45  
 
 46  
 import java.util.Calendar;
 47  
 import java.util.GregorianCalendar;
 48  
 import java.util.HashMap;
 49  
 import java.util.Locale;
 50  
 import java.util.Map;
 51  
 
 52  
 import javax.servlet.http.HttpServletRequest;
 53  
 
 54  
 
 55  
 /**
 56  
  * Prerequisite that check that an announce has been publicated for longer than
 57  
  * a given number of days
 58  
  */
 59  0
 public class PublicationDatePrerequisite implements IAutomaticActionPrerequisiteService
 60  
 {
 61  
     private static final String CONFIGURATION_DAO_BEAN_NAME = "announce-workflow.publicationDatePrerequisiteConfigDAO";
 62  
 
 63  
     private static final String TEMPLATE_PULICATION_DATE_PREREQUISITE_CONFIG = "admin/plugins/announce/modules/workflow/prerequisite_publication_date_config.html";
 64  
 
 65  
     private static final String MESSAGE_PREREQUISITE_PUBLICATION_DATE = "module.announce.workflow.publication_date_prerequisite.title";
 66  
 
 67  
     private static final String MARK_CONFIG = "config";
 68  
 
 69  
     /**
 70  
      * {@inheritDoc}
 71  
      */
 72  
     @Override
 73  
     public String getPrerequisiteType( )
 74  
     {
 75  0
         return PublicationDatePrerequisiteConfig.PREREQUISITE_TYPE;
 76  
     }
 77  
 
 78  
     /**
 79  
      * {@inheritDoc}
 80  
      */
 81  
     @Override
 82  
     public String getTitleI18nKey( )
 83  
     {
 84  0
         return MESSAGE_PREREQUISITE_PUBLICATION_DATE;
 85  
     }
 86  
 
 87  
     /**
 88  
      * {@inheritDoc}
 89  
      */
 90  
     @Override
 91  
     public boolean hasConfiguration( )
 92  
     {
 93  0
         return true;
 94  
     }
 95  
 
 96  
     /**
 97  
      * {@inheritDoc}
 98  
      */
 99  
     @Override
 100  
     public IPrerequisiteConfig getEmptyConfiguration( )
 101  
     {
 102  0
         return new PublicationDatePrerequisiteConfig( );
 103  
     }
 104  
 
 105  
     /**
 106  
      * {@inheritDoc}
 107  
      */
 108  
     @Override
 109  
     public String getConfigurationDaoBeanName( )
 110  
     {
 111  0
         return CONFIGURATION_DAO_BEAN_NAME;
 112  
     }
 113  
 
 114  
     /**
 115  
      * {@inheritDoc}
 116  
      */
 117  
     @Override
 118  
     public String getConfigHtml( IPrerequisiteConfig config, HttpServletRequest request, Locale locale )
 119  
     {
 120  0
         Map<String, Object> model = new HashMap<String, Object>( );
 121  0
         model.put( MARK_CONFIG, config );
 122  
 
 123  0
         HtmlTemplate template = AppTemplateService.getTemplate( TEMPLATE_PULICATION_DATE_PREREQUISITE_CONFIG, locale,
 124  
                 model );
 125  
 
 126  0
         return template.getHtml( );
 127  
     }
 128  
 
 129  
     /**
 130  
      * {@inheritDoc}
 131  
      */
 132  
     @Override
 133  
     public boolean canActionBePerformed( int nIdResource, String strResourceType, IPrerequisiteConfig config,
 134  
             int nIdAction )
 135  
     {
 136  0
         if ( StringUtils.equals( Announce.RESOURCE_TYPE, strResourceType ) )
 137  
         {
 138  0
             Announce announce = AnnounceHome.findByPrimaryKey( nIdResource );
 139  0
             if ( announce.getTimePublication( ) <= 0 )
 140  
             {
 141  0
                 return false;
 142  
             }
 143  0
             Calendar calendar = new GregorianCalendar( );
 144  0
             calendar.add( Calendar.DATE, -1 * ( (PublicationDatePrerequisiteConfig) config ).getNbDays( ) );
 145  
 
 146  0
             if ( announce.getTimePublication( ) > calendar.getTimeInMillis( ) )
 147  
             {
 148  0
                 return false;
 149  
             }
 150  
         }
 151  0
         return true;
 152  
     }
 153  
 
 154  
 }