View Javadoc

1   // ========================================================================
2   // Copyright 2006-2007 Sabre Holdings.
3   // ------------------------------------------------------------------------
4   // Licensed under the Apache License, Version 2.0 (the "License");
5   // you may not use this file except in compliance with the License.
6   // You may obtain a copy of the License at
7   // http://www.apache.org/licenses/LICENSE-2.0
8   // Unless required by applicable law or agreed to in writing, software
9   // distributed under the License is distributed on an "AS IS" BASIS,
10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11  // See the License for the specific language governing permissions and
12  // limitations under the License.
13  // ========================================================================
14  
15  package org.mortbay.jetty.ant.types;
16  
17  import java.io.File;
18  import java.util.ArrayList;
19  import java.util.Iterator;
20  import java.util.List;
21  
22  import org.apache.tools.ant.DirectoryScanner;
23  
24  /**
25   * Describes set of files matched by <fileset/> elements in ant configuration
26   * file. It is used to group application classes, libraries, and scannedTargets
27   * elements.
28   * 
29   * @author Jakub Pawlowicz
30   */
31  public class FileMatchingConfiguration
32  {
33  
34      private List directoryScanners;
35  
36      public FileMatchingConfiguration()
37      {
38          this.directoryScanners = new ArrayList();
39      }
40  
41      /**
42       * @param directoryScanner new directory scanner retrieved from the
43       *            <fileset/> element.
44       */
45      public void addDirectoryScanner(DirectoryScanner directoryScanner)
46      {
47          this.directoryScanners.add(directoryScanner);
48      }
49  
50      /**
51       * @return a list of base directories denoted by a list of directory
52       *         scanners.
53       */
54      public List getBaseDirectories()
55      {
56          List baseDirs = new ArrayList();
57          Iterator scanners = directoryScanners.iterator();
58          while (scanners.hasNext())
59          {
60              DirectoryScanner scanner = (DirectoryScanner) scanners.next();
61              baseDirs.add(scanner.getBasedir());
62          }
63  
64          return baseDirs;
65      }
66  
67      /**
68       * Checks if passed file is scanned by any of the directory scanners.
69       * 
70       * @param pathToFile a fully qualified path to tested file.
71       * @return true if so, false otherwise.
72       */
73      public boolean isIncluded(String pathToFile)
74      {
75          Iterator scanners = directoryScanners.iterator();
76          while (scanners.hasNext())
77          {
78              DirectoryScanner scanner = (DirectoryScanner) scanners.next();
79              scanner.scan();
80              String[] includedFiles = scanner.getIncludedFiles();
81  
82              for (int i = 0; i < includedFiles.length; i++)
83              {
84                  File includedFile = new File(scanner.getBasedir(), includedFiles[i]);
85                  if (pathToFile.equalsIgnoreCase(includedFile.getAbsolutePath()))
86                  {
87                      return true;
88                  }
89              }
90          }
91  
92          return false;
93      }
94  }