1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one *
3 * or more contributor license agreements. See the NOTICE file *
4 * distributed with this work for additional information *
5 * regarding copyright ownership. The ASF licenses this file *
6 * to you under the Apache License, Version 2.0 (the *
7 * "License"); you may not use this file except in compliance *
8 * with the License. You may obtain a copy of the License at *
9 * *
10 * http://www.apache.org/licenses/LICENSE-2.0 *
11 * *
12 * Unless required by applicable law or agreed to in writing, *
13 * software distributed under the License is distributed on an *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15 * KIND, either express or implied. See the License for the *
16 * specific language governing permissions and limitations *
17 * under the License. *
18 */
19 package org.apache.rat.anttasks;
20
21 import org.apache.rat.ReportConfiguration;
22 import org.apache.rat.api.RatException;
23 import org.apache.rat.document.DocumentName;
24 import org.apache.rat.document.FileDocument;
25 import org.apache.rat.report.IReportable;
26 import org.apache.rat.report.RatReport;
27 import org.apache.tools.ant.types.Resource;
28 import org.apache.tools.ant.types.ResourceCollection;
29 import org.apache.tools.ant.types.resources.FileResource;
30
31 /**
32 * Implementation of IReportable that traverses over a resource collection
33 * internally.
34 */
35 class ResourceCollectionContainer implements IReportable {
36 /** The resources as collected by Ant */
37 private final ResourceCollection resources;
38 /** The report configuration being used for the report */
39 private final ReportConfiguration configuration;
40 /** The document name */
41 private final DocumentName name;
42
43 ResourceCollectionContainer(final DocumentName name, final ReportConfiguration configuration, final ResourceCollection resources) {
44 this.resources = resources;
45 this.configuration = configuration;
46 this.name = name;
47 }
48
49 @Override
50 public void run(final RatReport report) throws RatException {
51 for (Resource r : resources) {
52 if (r.isFilesystemOnly()) {
53 FileResource fr = (FileResource) r;
54 DocumentName dirName = DocumentName.builder(fr.getFile()).setBaseName(fr.getProject().getBaseDir()).build();
55 FileDocument document = new FileDocument(dirName, fr.getFile(), configuration.getDocumentExcluder(dirName));
56 report.report(document);
57 }
58 }
59 }
60
61 @Override
62 public DocumentName getName() {
63 return name;
64 }
65 }