155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann/*******************************************************************************
2b9d1b54e300318b470d9fedccc69d75187016444Evgeny Mandrikov * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * All rights reserved. This program and the accompanying materials
455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * are made available under the terms of the Eclipse Public License v1.0
555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * which accompanies this distribution, and is available at
655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * http://www.eclipse.org/legal/epl-v10.html
755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *
855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Contributors:
955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *    Evgeny Mandrikov - initial API and implementation
1055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *    Kyle Lieber - implementation of CheckMojo
1155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *    Marc Hoffmann - redesign using report APIs
1255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *
1355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *******************************************************************************/
1455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannpackage org.jacoco.maven;
1555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
1655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport java.util.List;
1755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
1855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.codehaus.plexus.util.StringUtils;
1955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.jacoco.core.analysis.ICoverageNode.ElementType;
2055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.jacoco.report.check.Limit;
2155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannimport org.jacoco.report.check.Rule;
2255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
2355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann/**
2455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann * Wrapper for {@link Rule} objects to allow Maven style includes/excludes lists
2555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann *
2655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann */
2755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmannpublic class RuleConfiguration {
2855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
2955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	final Rule rule;
3055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
3155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	/**
3255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 * Create a new configuration instance.
3355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 */
3455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	public RuleConfiguration() {
3555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann		rule = new Rule();
3655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	}
3755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
3855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	/**
3955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 * @param element
4055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 *            element type this rule applies to
41b46b0dc55acdd743c6c4ed0e2ba25b7f68493006Mirko Friedenhagen	 * TODO: use ElementType directly once Maven 3 is required.
4255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 */
430dbd9687afce808c115bd843ae596d3c10db9ac5Mirko Friedenhagen	public void setElement(final String element) {
440dbd9687afce808c115bd843ae596d3c10db9ac5Mirko Friedenhagen		rule.setElement(ElementType.valueOf(element));
4555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	}
4655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
4755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	/**
4855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 * @param includes
4955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 *            includes patterns
5055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 */
5155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	public void setIncludes(final List<String> includes) {
5255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann		rule.setIncludes(StringUtils.join(includes.iterator(), ":"));
5355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	}
5455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
5555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	/**
5655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 *
5755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 * @param excludes
5855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 *            excludes patterns
5955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 */
6055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	public void setExcludes(final List<String> excludes) {
6155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann		rule.setExcludes(StringUtils.join(excludes.iterator(), ":"));
6255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	}
6355fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
6455fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	/**
6555fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 * @param limits
6655fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 *            list of {@link Limit}s configured for this rule
6755fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	 */
6855fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	public void setLimits(final List<Limit> limits) {
6955fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann		rule.setLimits(limits);
7055fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann	}
7155fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann
7255fae171b754e20062fae7cdb2d5feae8ee54017Marc R. Hoffmann}
73