View Javadoc
1   /*
2    * Copyright (c) 2002-2024, City of 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.workflow.modules.appointmentants.business.history;
35  
36  import fr.paris.lutece.plugins.workflow.modules.appointmentants.service.WorkflowAppointmentAntsPlugin;
37  import fr.paris.lutece.portal.service.plugin.Plugin;
38  import fr.paris.lutece.util.sql.DAOUtil;
39  
40  /**
41   * 
42   * Provide Data Access methods for the history of the ANTS related tasks
43   *
44   */
45  public class TaskAntsAppointmentHistoryDAO implements ITaskAntsAppointmentHistoryDAO
46  {
47  	public static final String BEAN_NAME = WorkflowAppointmentAntsPlugin.PLUGIN_NAME + ".taskAntsAppointmentHistoryDAO";
48  
49  	/**
50  	 * SQL Queries
51  	 */
52  	private static final String SQL_QUERY_SELECT = "SELECT id_history, id_task, is_task_successful, value_ants_application_numbers FROM workflow_task_ants_appointment_history WHERE id_history = ? AND id_task = ?";
53      private static final String SQL_QUERY_INSERT = "INSERT INTO workflow_task_ants_appointment_history ( id_history, id_task, is_task_successful, value_ants_application_numbers ) VALUES ( ?, ?, ?, ? )";
54      private static final String SQL_QUERY_DELETE_BY_HISTORY = "DELETE FROM workflow_task_ants_appointment_history WHERE id_history = ? AND id_task = ?";
55      private static final String SQL_QUERY_DELETE_BY_TASK = "DELETE FROM workflow_task_ants_appointment_history WHERE id_task = ?";
56  
57      /**
58       * {@inheritDoc}
59       */
60  	@Override
61  	public void insert( TaskAntsAppointmentHistory history, Plugin plugin )
62  	{
63  		try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, plugin ) )
64          {
65              int nIndex = 0;
66              daoUtil.setInt( ++nIndex, history.getIdResourceHistory( ) );
67              daoUtil.setInt( ++nIndex, history.getIdTask( ) );
68              daoUtil.setBoolean( ++nIndex, history.isTaskSuccessful( ) );
69              daoUtil.setString( ++nIndex, history.getAntsApplicationNumbers( ) );
70  
71              daoUtil.executeUpdate( );
72          }
73  	}
74  
75  	/**
76       * {@inheritDoc}
77       */
78  	@Override
79  	public TaskAntsAppointmentHistory load( int idHistory, int idTask, Plugin plugin )
80  	{
81  		try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT, plugin ) )
82          {
83  			int nIndex = 0;
84  			daoUtil.setInt( ++nIndex, idHistory );
85              daoUtil.setInt( ++nIndex, idTask );
86              daoUtil.executeQuery( );
87  
88              TaskAntsAppointmentHistory taskAntsAppointmentHistory = null;
89  
90              if ( daoUtil.next( ) )
91              {
92              	taskAntsAppointmentHistory = new TaskAntsAppointmentHistory( );
93                  nIndex = 0;
94  
95                  taskAntsAppointmentHistory.setIdResourceHistory( daoUtil.getInt( ++nIndex ) );
96                  taskAntsAppointmentHistory.setIdTask( daoUtil.getInt( ++nIndex ) );
97                  taskAntsAppointmentHistory.setTaskSuccessState( daoUtil.getBoolean( ++nIndex ) );
98                  taskAntsAppointmentHistory.setAntsApplicationNumbers( daoUtil.getString( ++nIndex ) );
99              }
100             return taskAntsAppointmentHistory;
101         }
102 	}
103 
104 	/**
105      * {@inheritDoc}
106      */
107 	@Override
108 	public void deleteByHistory(int idHistory, int idTask, Plugin plugin)
109 	{
110 		try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_BY_HISTORY, plugin ) )
111         {
112             int nIndex = 0;
113             daoUtil.setInt( ++nIndex, idHistory );
114             daoUtil.setInt( ++nIndex, idTask );
115 
116             daoUtil.executeUpdate( );
117         }
118 	}
119 
120 	/**
121      * {@inheritDoc}
122      */
123 	@Override
124 	public void deleteByTask(int idTask, Plugin plugin)
125 	{
126 		try ( DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE_BY_TASK, plugin ) )
127         {
128             int nIndex = 0;
129             daoUtil.setInt( ++nIndex, idTask );
130 
131             daoUtil.executeUpdate( );
132         }
133 	}
134 }