View Javadoc
1   /*
2    * Copyright (c) 2002-2015, 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  
35  package fr.paris.lutece.plugins.directory.modules.exportfile.business;
36  
37  import fr.paris.lutece.portal.service.plugin.Plugin;
38  import fr.paris.lutece.util.sql.DAOUtil;
39  
40  import java.util.ArrayList;
41  import java.util.Collection;
42  
43  /**
44   * This class provides Data Access methods for File objects
45   */
46  
47  public final class FileDAO implements IFileDAO
48  {
49      // Constants
50      private static final String SQL_QUERY_NEW_PK = "SELECT max( id_file ) FROM exportfile_file";
51      private static final String SQL_QUERY_SELECT = "SELECT id_file, idDirectory, idFile, isCreated FROM exportfile_file WHERE id_file = ?";
52      private static final String SQL_QUERY_INSERT = "INSERT INTO exportfile_file ( id_file, idDirectory, idFile, isCreated ) VALUES ( ?, ?, ?, ? ) ";
53      private static final String SQL_QUERY_DELETE = "DELETE FROM exportfile_file WHERE id_file = ? ";
54      private static final String SQL_QUERY_UPDATE = "UPDATE exportfile_file SET id_file = ?, idDirectory = ?, idFile = ?, isCreated = ? WHERE id_file = ?";
55      private static final String SQL_QUERY_SELECTALL = "SELECT id_file, idDirectory, idFile, isCreated FROM exportfile_file";
56      private static final String SQL_QUERY_SELECTALL_ID = "SELECT id_file FROM exportfile_file";
57      private static final String SQL_QUERY_SELECT_BY_ID_FILE = "SELECT id_file, idDirectory, idFile, isCreated FROM exportfile_file WHERE idFile = ? AND idDirectory = ?";
58  
59      /**
60       * Generates a new primary key
61       * 
62       * @param plugin
63       *            The Plugin
64       * @return The new primary key
65       */
66      public int newPrimaryKey( Plugin plugin )
67      {
68          DAOUtil daoUtil = new DAOUtil( SQL_QUERY_NEW_PK, plugin );
69          daoUtil.executeQuery( );
70  
71          int nKey = 1;
72  
73          if ( daoUtil.next( ) )
74          {
75              nKey = daoUtil.getInt( 1 ) + 1;
76          }
77  
78          daoUtil.free( );
79  
80          return nKey;
81      }
82  
83      /**
84       * {@inheritDoc }
85       */
86      @Override
87      public void insert( File file, Plugin plugin )
88      {
89          DAOUtil daoUtil = new DAOUtil( SQL_QUERY_INSERT, plugin );
90  
91          file.setId( newPrimaryKey( plugin ) );
92  
93          daoUtil.setInt( 1, file.getId( ) );
94          daoUtil.setInt( 2, file.getIdDirectory( ) );
95          daoUtil.setInt( 3, file.getIdFile( ) );
96          daoUtil.setBoolean( 4, file.getIsCreated( ) );
97  
98          daoUtil.executeUpdate( );
99          daoUtil.free( );
100     }
101 
102     /**
103      * {@inheritDoc }
104      */
105     @Override
106     public File load( int nKey, Plugin plugin )
107     {
108         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT, plugin );
109         daoUtil.setInt( 1, nKey );
110         daoUtil.executeQuery( );
111 
112         File file = null;
113 
114         if ( daoUtil.next( ) )
115         {
116             file = new File( );
117             file.setId( daoUtil.getInt( 1 ) );
118             file.setIdDirectory( daoUtil.getInt( 2 ) );
119             file.setIdFile( daoUtil.getInt( 3 ) );
120             file.setIsCreated( daoUtil.getBoolean( 4 ) );
121         }
122 
123         daoUtil.free( );
124         return file;
125     }
126 
127     /**
128      * {@inheritDoc }
129      */
130     @Override
131     public File load( int nIdFile, int nIdDirectory, Plugin plugin )
132     {
133         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_BY_ID_FILE, plugin );
134         daoUtil.setInt( 1, nIdFile );
135         daoUtil.setInt( 2, nIdDirectory );
136         daoUtil.executeQuery( );
137 
138         File file = null;
139 
140         if ( daoUtil.next( ) )
141         {
142             file = new File( );
143             file.setId( daoUtil.getInt( 1 ) );
144             file.setIdDirectory( daoUtil.getInt( 2 ) );
145             file.setIdFile( daoUtil.getInt( 3 ) );
146             file.setIsCreated( daoUtil.getBoolean( 4 ) );
147         }
148 
149         daoUtil.free( );
150         return file;
151     }
152 
153     /**
154      * {@inheritDoc }
155      */
156     @Override
157     public void delete( int nKey, Plugin plugin )
158     {
159         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE, plugin );
160         daoUtil.setInt( 1, nKey );
161         daoUtil.executeUpdate( );
162         daoUtil.free( );
163     }
164 
165     /**
166      * {@inheritDoc }
167      */
168     @Override
169     public void store( File file, Plugin plugin )
170     {
171         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_UPDATE, plugin );
172 
173         daoUtil.setInt( 1, file.getId( ) );
174         daoUtil.setInt( 2, file.getIdDirectory( ) );
175         daoUtil.setInt( 3, file.getIdFile( ) );
176         daoUtil.setBoolean( 4, file.getIsCreated( ) );
177         daoUtil.setInt( 5, file.getId( ) );
178 
179         daoUtil.executeUpdate( );
180         daoUtil.free( );
181     }
182 
183     /**
184      * {@inheritDoc }
185      */
186     @Override
187     public Collection<File> selectFilesList( Plugin plugin )
188     {
189         Collection<File> fileList = new ArrayList<File>( );
190         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL, plugin );
191         daoUtil.executeQuery( );
192 
193         while ( daoUtil.next( ) )
194         {
195             File file = new File( );
196 
197             file.setId( daoUtil.getInt( 1 ) );
198             file.setIdDirectory( daoUtil.getInt( 2 ) );
199             file.setIdFile( daoUtil.getInt( 3 ) );
200             file.setIsCreated( daoUtil.getBoolean( 4 ) );
201 
202             fileList.add( file );
203         }
204 
205         daoUtil.free( );
206         return fileList;
207     }
208 
209     /**
210      * {@inheritDoc }
211      */
212     @Override
213     public Collection<Integer> selectIdFilesList( Plugin plugin )
214     {
215         Collection<Integer> fileList = new ArrayList<Integer>( );
216         DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECTALL_ID, plugin );
217         daoUtil.executeQuery( );
218 
219         while ( daoUtil.next( ) )
220         {
221             fileList.add( daoUtil.getInt( 1 ) );
222         }
223 
224         daoUtil.free( );
225         return fileList;
226     }
227 }