View Javadoc

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      private File file;
16  
17      /***
18       * @param file the file to read
19       */
20      public FileDataSource(File file) {
21          this.file = file;
22      }
23  
24      public InputStream getInputStream() throws IOException {
25          return new FileInputStream(file);
26      }
27  
28      public String getNiceFileName(boolean shortNames, String inputFileName) {
29          return glomName(shortNames, inputFileName, file);
30      }
31  
32      private String glomName(boolean shortNames, String inputFileName, File file) {
33          if (shortNames && inputFileName.indexOf(',') == -1) {
34              if ((new File(inputFileName)).isDirectory()) {
35                  return trimAnyPathSep(file.getAbsolutePath().substring(inputFileName.length()));
36              } else {
37                  if (inputFileName.indexOf(System.getProperty("file.separator").charAt(0)) == -1) {
38                      return inputFileName;
39                  }
40                  return trimAnyPathSep(inputFileName.substring(inputFileName.lastIndexOf(System.getProperty("file.separator"))));
41              }
42          } else {
43              return file.getAbsolutePath();
44          }
45      }
46  
47      private String trimAnyPathSep(String name) {
48          if (name.startsWith(System.getProperty("file.separator"))) {
49              return name.substring(1);
50          }
51          return name;
52      }
53  
54  
55  }