package org.jboss.windup.rules.apps.java.scan.operation;
import java.io.File;
import java.io.FileFilter;
import java.util.logging.Logger;
import org.apache.commons.lang3.StringUtils;
import org.jboss.windup.graph.model.ArchiveModel;
import org.jboss.windup.util.Logging;
/**
* Accepts certain known files from an archive, like MANIFEST.MF, Maven related, and licenses.
*/
public class IdentifiedArchiveFileFilter implements FileFilter
{
private static final Logger LOG = Logging.get(IdentifiedArchiveFileFilter.class);
private final String archiveName;
public IdentifiedArchiveFileFilter(ArchiveModel archive)
{
this.archiveName = archive.getArchiveName();
}
@Override
public boolean accept(File file)
{
if (file.isFile())
{
// only accept MANIFEST, POM.xml, and License files...
if (StringUtils.equals(file.getName(), "MANIFEST.MF")
|| StringUtils.equals(file.getName(), "pom.xml")
|| StringUtils.equals(file.getName(), "pom.properties")
|| StringUtils.containsIgnoreCase(file.getName(), "license")
|| StringUtils.containsIgnoreCase(file.getName(), "notice")
|| StringUtils.containsIgnoreCase(file.getName(), "lgpl")
|| StringUtils.containsIgnoreCase(file.getName(), "gpl"))
{
LOG.info(archiveName + " - Accepting File on Identified Archive: " + file.getName() + ".");
return true;
}
if (LOG.getLevel() == java.util.logging.Level.FINE)
{
LOG.fine(archiveName + " - Rejecting File on Identified Archive: " + file.getName() + ".");
}
return false;
}
return true;
}
}