View Javadoc

1   /***
2    * Copyright (c) 2003 held jointly by the individual authors.            
3    *                                                                          
4    * This library is free software; you can redistribute it and/or modify it    
5    * under the terms of the GNU Lesser General Public License as published      
6    * by the Free Software Foundation; either version 2.1 of the License, or 
7    * (at your option) any later version.                                            
8    *                                                                            
9    * This library is distributed in the hope that it will be useful, but 
10   * WITHOUT ANY WARRANTY; with out even the implied warranty of 
11   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
12   * GNU Lesser General Public License for more details.                                                  
13   *                                                                           
14   * You should have received a copy of the GNU Lesser General Public License   
15   * along with this library;  if not, write to the Free Software Foundation,   
16   * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA.              
17   *                                                                            
18   * > http://www.gnu.org/copyleft/lesser.html                                  
19   * > http://www.opensource.org/licenses/lgpl-license.php
20   */
21  package net.mlw.vlh.adapter.file;
22  
23  import java.io.File;
24  import java.text.ParseException;
25  import java.text.SimpleDateFormat;
26  import java.util.ArrayList;
27  import java.util.Date;
28  import java.util.List;
29  
30  import net.mlw.vlh.DefaultListBackedValueList;
31  import net.mlw.vlh.ValueList;
32  import net.mlw.vlh.ValueListInfo;
33  import net.mlw.vlh.adapter.AbstractValueListAdapter;
34  
35  /***
36   * This ValueListAdapter returns a ValueList of FileInfo(s).
37   * 
38   * net.mlw.vlh.adapter.file.FileSystemAdapter
39   * 
40   * @author Matthew L. Wilson
41   * @version $Revision: 1.6 $ $Date: 2005/08/19 16:04:30 $
42   */
43  public class FileSystemAdapter extends AbstractValueListAdapter
44  {
45     /*** The name of the filter defining the current directory. */
46     public static final String FOLDER        = "folder";
47  
48     /*** The default starting directory, if FOLDER was not in the filters. */
49     private String             defaultFolder = ".";
50  
51     private String             dateFormat    = "MM/dd/yyyy";
52  
53     /***
54      * Default constructor.
55      */
56     public FileSystemAdapter()
57     {
58        setAdapterType(DO_SORT);
59     }
60  
61     /***
62      * @see net.mlw.vlh.ValueListAdapter#getValueList(java.lang.String, net.mlw.vlh.ValueListInfo)
63      */
64     public ValueList getValueList(String name, ValueListInfo info)
65     {
66        SimpleDateFormat df = new SimpleDateFormat(dateFormat);
67  
68        Date startDate = null;
69        Date endDate = null;
70  
71        try
72        {
73           String stringStartDate = (String) info.getFilters().get("startDate");
74           if (stringStartDate != null && stringStartDate.length() > 0)
75           {
76              startDate = df.parse(stringStartDate);
77           }
78        }
79        catch (ParseException e)
80        {
81           e.printStackTrace();
82        }
83        try
84        {
85           String stringEndDate = (String) info.getFilters().get("endDate");
86           if (stringEndDate != null && stringEndDate.length() > 0)
87           {
88              endDate = df.parse(stringEndDate);
89           }
90        }
91        catch (ParseException e)
92        {
93           e.printStackTrace();
94        }
95  
96        if (info.getSortingColumn() == null)
97        {
98           info.setPrimarySortColumn(getDefaultSortColumn());
99           info.setPrimarySortDirection(getDefaultSortDirectionInteger());
100       }
101 
102       if (info.getPagingNumberPer() == Integer.MAX_VALUE)
103       {
104          info.setPagingNumberPer(getDefaultNumberPerPage());
105       }
106 
107       String folder = ((info.getFilters().get(FOLDER) != null) ? (String) info.getFilters().get(FOLDER) : defaultFolder);
108 
109       File dir = new File(folder);
110       File[] files = dir.listFiles();
111       List list = new ArrayList(files.length);
112       for (int i = 0; i < files.length; i++)
113       {
114          FileInfo file = new FileInfo(files[i]);
115          if (startDate == null || startDate.before(file.getLastModified()))
116          {
117             if (endDate == null || endDate.after(file.getLastModified()))
118             {
119                list.add(file);
120             }
121          }
122 
123       }
124       info.setTotalNumberOfEntries(list.size());
125       return new DefaultListBackedValueList(list, info);
126    }
127 
128    /***
129     * @param defaultFolder
130     *           The defaultFolder to set.
131     */
132    public void setDefaultFolder(String defaultFolder)
133    {
134       this.defaultFolder = defaultFolder;
135    }
136 
137 }