package eu.europeana.creative.dataset.indexing; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import org.junit.Test; import org.junit.runner.JUnitCore; import eu.europeana.api.client.thumbnails.processing.LargeThumbnailsetProcessing; import eu.europeana.creative.dataset.BaseCreativeDatasetUtil; import eu.europeana.creative.dataset.IRTestConfigurations; import eu.europeana.service.ir.image.IRConfiguration; import eu.europeana.service.ir.image.api.ImageIndexingService; import eu.europeana.service.ir.image.api.ImageIndexingServiceImpl; public class LocalImageIndexingTest extends BaseCreativeDatasetUtil implements IRTestConfigurations { protected static int blockSize=-2; private static int limit=-2; private static int start=-2; private static String paramDataset=null; public static final String PREFIX_START="start="; public static final String PREFIX_LIMIT="limit="; public static final String PREFIX_BLOCKSIZE="blockSize="; public static final String PREFIX_DATASET="dataset="; public static final int DEFAULT_BLOCKSIZE = 1000; ImageIndexingService imageIndexingService; // public static String CLASS_WW1 = "ww1"; public static void main(String[] args) throws Exception { parseParams(args); JUnitCore.main( LocalImageIndexingTest.class.getCanonicalName()); } protected static void parseParams(String[] args) { for (int i = 0; i < args.length; i++) { if(args[i].startsWith(PREFIX_START)){ start = getValue(PREFIX_START, args[i]); continue; }else if(args[i].startsWith(PREFIX_LIMIT)){ limit = getValue(PREFIX_LIMIT, args[i]); continue; }else if(args[i].startsWith(PREFIX_BLOCKSIZE)){ blockSize = getValue(PREFIX_BLOCKSIZE, args[i]); continue; }else if(args[i].startsWith(PREFIX_DATASET)){ paramDataset = getStringValue(PREFIX_DATASET, args[i]); //continue; } } } @Test public void indexThumbnails() throws FileNotFoundException, IOException { ensureParmsInit(); File datasetFile = getDatasetFileToIndex(); if(datasetFile == null || !datasetFile.exists()) System.out.println("Skip test missing file: " + datasetFile); else { updateIndex(datasetFile, false); } } /** * This method should be enabled for testing in subclasses. By default the indexThumbnails is marked as testcase * @throws FileNotFoundException * @throws IOException */ public void removeThumbnails() throws FileNotFoundException, IOException { ensureParmsInit(); File datasetFile = getDatasetFileToRemove(); if(datasetFile == null || !datasetFile.exists()) System.out.println("Skip test missing file: " + datasetFile); else updateIndex(datasetFile, true); } protected File getDatasetFileToRemove() { //overwrite in subclasses return null; } protected File getDatasetFileToIndex() { IRConfiguration config = getConfig(); //File datasetFile = config.getDatasetFile(DATASET_EU_CREATIVE_COLOR); File datasetFile = config.getDatasetFile(getDataset()); return datasetFile; } protected void updateIndex(File datasetFile, boolean deleteItems) throws FileNotFoundException, IOException { System.out.println("using image set file : " + datasetFile.getAbsolutePath()); //setDataset("test"); LargeThumbnailsetProcessing datasetProcessor = new LargeThumbnailsetProcessing(datasetFile); ImageIndexingObserver observer = new ImageIndexingObserver(getImageIndexingService(), deleteItems); datasetProcessor.addObserver(observer); datasetProcessor.processThumbnailset(start, limit, blockSize); System.out.println("Skipped items: " + datasetProcessor.getFailureCount()); } protected void ensureParmsInit() { //ensure blocksize set to a positive value if(blockSize < 0) blockSize = DEFAULT_BLOCKSIZE; if(paramDataset != null) setDataset(paramDataset); } public ImageIndexingService getImageIndexingService() { if (imageIndexingService == null) { imageIndexingService = new ImageIndexingServiceImpl(getDataset(), (IRConfiguration)getConfig()); imageIndexingService.init(); } return imageIndexingService; } }