package eu.europeana.service.ir.image.api;
import it.cnr.isti.feature.extraction.Image2Features;
import it.cnr.isti.vir.features.FeatureClassCollector;
import it.cnr.isti.vir.features.lire.vd.CcDominantColor;
import it.cnr.isti.vir.features.lire.vd.LireColorLayout;
import it.cnr.isti.vir.features.lire.vd.LireEdgeHistogram;
import it.cnr.isti.vir.features.lire.vd.LireScalableColor;
import it.cnr.isti.vir.readers.CoPhIRv2Reader;
import java.io.IOException;
import javax.xml.stream.FactoryConfigurationError;
import eu.europeana.service.ir.image.IRConfiguration;
import eu.europeana.service.ir.image.exceptions.ImageIndexingException;
import eu.europeana.service.ir.image.index.indexing.ExtendedLireIndexer;
import eu.europeana.service.ir.image.index.indexing.SmkLireIndexer;
/**
* @author paolo
* @author Sergiu Gordea <sergiu.gordea_at_ait.ac.at>
*/
public class SmkImageIndexingServiceImpl extends ImageIndexingServiceImpl implements ImageIndexingService {
FeatureClassCollector featureClasses = new FeatureClassCollector(
LireColorLayout.class,
LireScalableColor.class,
LireEdgeHistogram.class,
CcDominantColor.class );
public SmkImageIndexingServiceImpl(String dataset,
IRConfiguration configuration) {
super(dataset, configuration);
}
public SmkImageIndexingServiceImpl(IRConfiguration configuration) {
this(null, configuration);
}
public void openIndex(String dataset) throws ImageIndexingException {
// CoPhIRv2Reader.setFeatures(LireMetric.reqFeatures);
//
// File featuresArchiveFile = getConfiguration().getFeaturesArchiveFile(
// dataset);
// // create file path if needed
// if (!featuresArchiveFile.exists())
// featuresArchiveFile.getParentFile().mkdirs();
//
// try {
// //img2Features = new Image2Features(dataset, configuration);
// img2Features = initFeatureExtractor(dataset);
// // features archive, Feature classes, VirId, FeaturesCollection
// // array
// featuresArchive = initFeaturesArchive(featuresArchiveFile);
// setVariables();
// } catch (Exception e) {
// throw new ImageIndexingException(
// "Exception when opening image index for dataset: "
// + dataset, e);
// }
super.openIndex(dataset);
}
@Override
protected void registerFeaturesCollector() {
//TODO what's the relation to image-fx.properties?
//CoPhIRv2Reader.setFeatures(LireMetric.reqFeatures);
CoPhIRv2Reader.setFeatures(featureClasses);
}
@Override
protected Image2Features initFeatureExtractor(String dataset)
throws IOException, InstantiationException, IllegalAccessException,
ClassNotFoundException {
//return new Image2Features(configuration.getIndexConfFolder(dataset));
return super.initFeatureExtractor(dataset);
}
@Override
protected ExtendedLireIndexer initFeatureIndexer() {
//return new ExtendedLireIndexer();
return new SmkLireIndexer();
}
@Override
protected void insertFeatures(String docID, String thumbnailUrl,
String imgFeatures) throws FactoryConfigurationError,
ImageIndexingException {
// TODO Auto-generated method stub
super.insertFeatures(docID, thumbnailUrl, imgFeatures);
}
@Override
protected FeatureClassCollector getVirFeatureClasses() {
//return super.getVirFeatureClasses();
return featureClasses;
}
}