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 }