View Javadoc
1   /*
2    * Cloudformation Plugin for SonarQube
3    * Copyright (C) 2019 James Pether Sörling
4    * james@hack23.com
5    *
6    * This program is free software; you can redistribute it and/or
7    * modify it under the terms of the GNU Lesser General Public
8    * License as published by the Free Software Foundation; either
9    * version 3 of the License, or (at your option) any later version.
10   *
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   * Lesser General Public License for more details.
15   *
16   * You should have received a copy of the GNU Lesser General Public License
17   * along with this program; if not, write to the Free Software Foundation,
18   * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19   */
20  package com.hack23.sonar.cloudformation.reports.process;
21  
22  import java.io.File;
23  import java.util.ArrayList;
24  import java.util.List;
25  
26  import org.sonar.api.batch.fs.FileSystem;
27  import org.sonar.api.batch.fs.InputFile;
28  
29  /**
30   * The Class AbstractProcessReports.
31   */
32  abstract class AbstractProcessReports {
33  
34  
35  	/**
36  	 * Find template.
37  	 *
38  	 * @param fileSystem the file system
39  	 * @param templateName the template name
40  	 * @param filepath the filepath
41  	 * @return the input file
42  	 */
43  	InputFile findTemplate(final FileSystem fileSystem, final String templateName, final String filepath) {
44  		final List<InputFile> potentialReportTargets = new ArrayList<>();
45  		fileSystem.inputFiles(fileSystem.predicates().all()).forEach(potentialReportTargets::add);
46  		final String filterPath = filterPath(filepath);
47  		for (final InputFile inputFile : potentialReportTargets) {
48  			if (templateName.equals(inputFile.filename()) && inputFile.uri().toString().contains(filterPath)) {
49  				return inputFile;
50  			}
51  		}
52  		return null;
53  	}
54  
55  	/**
56  	 * Filter path.
57  	 *
58  	 * @param filepath the filepath
59  	 * @return the string
60  	 */
61  	private static String filterPath(final String filepath) {
62  		return filepath.replace("." + File.separator, "").replace(".." + File.separator, "");
63  	}
64  
65  }