package org.bundlemaker.core.analysis.selectors; import java.util.LinkedList; import java.util.List; import org.bundlemaker.core.analysis.IAnalysisModelVisitor; import org.bundlemaker.core.analysis.IBundleMakerArtifact; import org.bundlemaker.core.analysis.IPackageArtifact; /** * @author Nils Hartmann (nils@nilshartmann.net) * */ public class PackageSelector extends AbstractPatternBasedSelector { /** * Selects packages by their names. * * <p> * <b>Example:</b> Select the package 'org.example.test' and it's sub-packages, but do not select package * org.example.test.integration * </p> * * <pre> * new PackageSelector(myRootArtifact, "org.example.test**", "org.example.test.integration"); * </pre> * * @param artifact * The base artifact used to start the search for packages * @param includedPackages * Ant-style pattern of package names to include. Can be null (include everything) and can be comma-delimited * to specify more than one pattern * @param excludedPackages * Ant-style pattern of package names to exclude. Can be null (exclude nothing) and can be comma-delimited to * specify more than one pattern */ public PackageSelector(IBundleMakerArtifact artifact, String includedPackages, String excludedPackages) { super(artifact, includedPackages, excludedPackages); } /** * Same as <tt>PackageSelector(artifact, includedPackages, null)</tt> * * @param artifact * @param includedPackages * @see #PackageSelector(IBundleMakerArtifact, String, String) */ public PackageSelector(IBundleMakerArtifact artifact, String includedPackages) { super(artifact, includedPackages); } /* * (non-Javadoc) * * @see org.bundlemaker.core.analysis.IArtifactSelector#getBundleMakerArtifacts() */ @Override public List<? extends IBundleMakerArtifact> getBundleMakerArtifacts() { final List<IBundleMakerArtifact> result = new LinkedList<IBundleMakerArtifact>(); getBundleMakerArtifact().accept(new IAnalysisModelVisitor.Adapter() { @Override public boolean visit(IPackageArtifact packageArtifact) { // String packageName = packageArtifact.getQualifiedName(); if (isIncluded(packageName) && !isExcluded(packageName)) { result.add(packageArtifact); } // return true; } }); return result; } }