package org.jboss.windup.rules.apps.java.archives.identify;
import java.io.File;
import java.util.logging.Logger;
import org.apache.lucene.document.Document;
import org.jboss.forge.addon.dependencies.Coordinate;
import org.jboss.forge.addon.dependencies.builder.CoordinateBuilder;
import org.jboss.windup.maven.nexusindexer.client.DocTo;
import org.jboss.windup.util.Logging;
/**
* Identifies archives by their hash, using pre-created Lucene index. See the nexus-repository-indexer project.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
* @author <a href="http://ondra.zizka.cz/">Ondrej Zizka, zizka@seznam.cz</a>
*
* TODO: This should be in Nexus Indexer - Data (client for Nexus Indexer - Core).
*/
public class LuceneArchiveIdentificationService extends org.jboss.windup.maven.nexusindexer.client.LuceneIndexServiceBase implements ArchiveIdentificationService
{
private static final Logger LOG = Logging.get(LuceneArchiveIdentificationService.class);
private static final String SHA1 = "sha1";
private static final String GROUP_ID = "groupId";
private static final String ARTIFACT_ID = "artifactId";
private static final String PACKAGING = "packaging";
private static final String CLASSIFIER = "classifier";
private static final String VERSION = "version";
public LuceneArchiveIdentificationService(File directory)
{
super(directory);
}
@Override
public Coordinate getCoordinate(String sha1)
{
return this.findSingle(DocTo.Fields.SHA1, sha1, new DocTo<Coordinate>()
{
public Coordinate convert(Document doc)
{
return CoordinateBuilder.create()
.setGroupId(doc.get(GROUP_ID))
.setArtifactId(doc.get(ARTIFACT_ID))
.setVersion(doc.get(VERSION))
.setClassifier(doc.get(CLASSIFIER))
.setPackaging(doc.get(PACKAGING));
}
});
}
}