View Javadoc
1   /*
2    *
3    *  * Copyright (c) 2002-2017, Mairie de Paris
4    *  * All rights reserved.
5    *  *
6    *  * Redistribution and use in source and binary forms, with or without
7    *  * modification, are permitted provided that the following conditions
8    *  * are met:
9    *  *
10   *  *  1. Redistributions of source code must retain the above copyright notice
11   *  *     and the following disclaimer.
12   *  *
13   *  *  2. Redistributions in binary form must reproduce the above copyright notice
14   *  *     and the following disclaimer in the documentation and/or other materials
15   *  *     provided with the distribution.
16   *  *
17   *  *  3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its
18   *  *     contributors may be used to endorse or promote products derived from
19   *  *     this software without specific prior written permission.
20   *  *
21   *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22   *  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23   *  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24   *  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
25   *  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26   *  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27   *  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28   *  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29   *  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30   *  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31   *  * POSSIBILITY OF SUCH DAMAGE.
32   *  *
33   *  * License 1.0
34   *
35   */
36  
37  package fr.paris.lutece.plugins.tipi.business;
38  
39  import java.rmi.RemoteException;
40  import java.text.MessageFormat;
41  import java.text.SimpleDateFormat;
42  import java.util.Date;
43  import java.util.List;
44  
45  import javax.xml.rpc.ServiceException;
46  
47  import fr.paris.lutece.plugins.tipi.util.Constants;
48  import fr.paris.lutece.plugins.tipi.business.Tipi;
49  import fr.paris.lutece.plugins.tipi.business.TipiProcessor;
50  import fr.paris.lutece.portal.service.daemon.Daemon;
51  import fr.paris.lutece.portal.service.spring.SpringContextService;
52  import fr.paris.lutece.portal.service.util.AppLogService;
53  
54  /**
55   * Classe pour les règlements Tipi
56   */
57  public class TipiTask extends Daemon
58  {
59      private TipiProcessor       processor   = SpringContextService.getBean( "tipiProcessor" );
60  
61      private static final String LOG_MESSAGE = "{0}: Traitement de {1} transactions [{2} succes, {3} refus, {4} annulation]\r\n";
62  
63      @Override
64      public synchronized void run( )
65      {
66  
67          List<String> idOps = processor.getPendingTransactions( );
68  
69          if ( idOps == null || idOps.isEmpty( ) )
70          {
71              return;
72          }
73  
74          int success = 0;
75          int denied = 0;
76          int cancelled = 0;
77  
78          for ( String idOp : idOps )
79          {
80              try
81              {
82                  final Tipi tipi = Tipi.read( idOp ).process( );
83  
84                  if ( tipi.isPaymentSuccess( ) )
85                  {
86                      success++;
87                  }
88                  if ( tipi.isPaymentDenied( ) )
89                  {
90                      denied++;
91                  }
92                  if ( tipi.isPaymentCancelled( ) )
93                  {
94                      cancelled++;
95                  }
96              } catch ( RemoteException | ServiceException e )
97              {
98                  AppLogService.error( "Erreur a la recuperation des informations de paiement pour l'ID: " + idOp, e );
99              }
100         }
101 
102         SimpleDateFormat dateFormat = new SimpleDateFormat( Constants.DATE_FORMAT );
103 
104         String message = MessageFormat.format( LOG_MESSAGE, dateFormat.format( new Date( ) ), success + denied + cancelled, success, denied, cancelled );
105 
106         if ( getLastRunLogs( ) != null )
107         {
108             setLastRunLogs( getLastRunLogs( ) + message );
109         } else
110         {
111             setLastRunLogs( message );
112         }
113     }
114 
115 }