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  }