View Javadoc

1   /*
2    * JDiskCatalog
3    *
4    * Copyright 2007 Przemek Więch
5    *
6    * This file is part of JDiskCatalog.
7    *
8    * JDiskCatalog is free software; you can redistribute it and/or modify
9    * it under the terms of the GNU General Public License as published by
10   * the Free Software Foundation; either version 2 of the License, or
11   * (at your option) any later version.
12   *
13   * This program is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   * GNU General Public License for more details.
17  
18   * You should have received a copy of the GNU General Public License
19   * along with this program; if not, write to the Free Software
20   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21   */
22  
23  package net.sf.jdiskcatalog.analysis;
24  
25  import java.io.File;
26  import java.io.IOException;
27  import java.util.Date;
28  import java.util.HashMap;
29  import java.util.Map;
30  
31  import net.sf.jdiskcatalog.api.FileAnalyser;
32  import net.sf.jdiskcatalog.api.NodeInfo;
33  
34  
35  /**
36   * Provides simple file properties from the file system.
37   *
38   * @author Przemek Więch <pwiech@losthive.org>
39   * @version $Id$
40   */
41  public class BasicFileAnalyser implements FileAnalyser
42  {
43  	public static final String KEY_PERMISSIONS = "permissions";
44  	public static final String KEY_FILESIZE = "fileSize";
45  	public static final String KEY_LASTMODIFIED = "lastModified";
46  
47  	public Map<String, Object> analyse(File file, NodeInfo nodeInfo) throws IOException
48  	{
49  		Map<String, Object> properties = new HashMap<String, Object>();
50  
51  		String permissions = (file.canRead() ? "r" : "") +(file.canWrite() ? "w" : "") + (file.canExecute() ? "x" : "");
52  		properties.put(KEY_PERMISSIONS, permissions);
53  
54  		if (file.isFile())
55  			properties.put(KEY_FILESIZE, file.length());
56  
57  		properties.put(KEY_LASTMODIFIED, new Date(file.lastModified()));
58  
59  		return properties;
60  	}
61  }