View Javadoc
1   /*
2    * Copyright (c) 2002-2018, 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.directory.service.file;
35  
36  import fr.paris.lutece.plugins.directory.business.File;
37  import fr.paris.lutece.plugins.directory.business.FileHome;
38  import fr.paris.lutece.plugins.directory.business.PhysicalFileHome;
39  import fr.paris.lutece.plugins.directory.business.RecordField;
40  import fr.paris.lutece.plugins.directory.business.RecordFieldFilter;
41  import fr.paris.lutece.plugins.directory.business.RecordFieldHome;
42  import fr.paris.lutece.plugins.directory.service.DirectoryPlugin;
43  import fr.paris.lutece.portal.service.i18n.I18nService;
44  import fr.paris.lutece.portal.service.plugin.PluginService;
45  import fr.paris.lutece.portal.service.util.AppLogService;
46  import fr.paris.lutece.util.sql.TransactionManager;
47  import java.util.ArrayList;
48  import java.util.List;
49  import java.util.Locale;
50  
51  public class DirectoryFileService
52  {
53  
54      private static final String MESSAGE_PURGE_FILE_TITLE = "directory.file.purge.fileTitle";
55  
56      /**
57       * Purge the given file
58       * 
59       * @param file
60       *            The file
61       */
62      public void purge( File file )
63      {
64          try
65          {
66              TransactionManager.beginTransaction( PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
67              file.setTitle( I18nService.getLocalizedString( MESSAGE_PURGE_FILE_TITLE, Locale.getDefault( ) ) );
68              FileHome.purge( file, PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
69              PhysicalFileHome.purge( file.getPhysicalFile( ), PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
70              TransactionManager.commitTransaction( PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
71          }
72          catch( Exception e )
73          {
74              TransactionManager.rollBack( null );
75              AppLogService.error( "Unable to purge file with id " + file.getIdFile( ), e );
76              throw e;
77          }
78      }
79  
80      /**
81       * Get the files list
82       * 
83       * @return the file list
84       */
85      public List<File> getFilesList( )
86      {
87          return FileHome.getFilesList( PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
88      }
89  
90      /**
91       * Update the file
92       * 
93       * @param file
94       *            the file to update
95       */
96      public void update( File file )
97      {
98          FileHome.update( file, PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
99      }
100 
101     /**
102      * Get the associated files of a given resource
103      * 
104      * @param nIdResource 
105      * 				the resource Id
106      * @return the associated files of a given resource
107      */
108     public List<File> getAssociatedFiles( int nIdResource )
109     {
110         List<File> listFiles = new ArrayList<>( );
111 
112         // Set an entry filter
113         RecordFieldFilter filter = new RecordFieldFilter( );
114         filter.setIdRecord( nIdResource );
115         filter.setContainsFile( true );
116         List<RecordField> listRecordFields = RecordFieldHome.getRecordFieldList( filter, PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
117 
118         for ( RecordField recordField : listRecordFields )
119         {
120             listFiles.add( recordField.getFile( ) );
121         }
122         return listFiles;
123     }
124 
125     /**
126      * Get the file from the given file id
127      * 
128      * @param strFileId
129      *            the file id
130      * @return the file corresponding to the given file id
131      */
132     public File getFile( String strFileId )
133     {
134         int nIdFile = Integer.parseInt( strFileId );
135         return FileHome.findByPrimaryKey( nIdFile, PluginService.getPlugin( DirectoryPlugin.PLUGIN_NAME ) );
136     }
137 
138 }