1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package net.sourceforge.pmd;
5
6 import java.io.File;
7 import java.io.FileInputStream;
8 import java.io.IOException;
9 import java.io.InputStream;
10
11 /***
12 * DataSource implementation to read data from a file.
13 */
14 public class FileDataSource implements DataSource {
15
16 private static final String fileSeparator = System.getProperty("file.separator");
17
18 private File file;
19
20 /***
21 * @param file the file to read
22 */
23 public FileDataSource(File file) {
24 this.file = file;
25 }
26
27 public InputStream getInputStream() throws IOException {
28 return new FileInputStream(file);
29 }
30
31 public String getNiceFileName(boolean shortNames, String inputFileName) {
32 return glomName(shortNames, inputFileName, file);
33 }
34
35 private String glomName(boolean shortNames, String inputFileName, File file) {
36 if (shortNames && inputFileName.indexOf(',') == -1) {
37 if ((new File(inputFileName)).isDirectory()) {
38 return trimAnyPathSep(file.getAbsolutePath().substring(inputFileName.length()));
39 } else {
40 if (inputFileName.indexOf(fileSeparator.charAt(0)) == -1) {
41 return inputFileName;
42 }
43 return trimAnyPathSep(inputFileName.substring(inputFileName.lastIndexOf(System.getProperty("file.separator"))));
44 }
45 }
46
47 return file.getAbsolutePath();
48 }
49
50 private String trimAnyPathSep(String name) {
51
52 return name.startsWith(fileSeparator) ?
53 name.substring(1) :
54 name;
55 }
56 }