package eu.europeana.creative.dataset.design.queries;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import eu.europeana.api.client.dataset.DatasetDescriptor;
import eu.europeana.api.client.exception.EuropeanaClientException;
import eu.europeana.api.client.myeuropeana.exception.MyEuropeanaApiException;
import eu.europeana.api.client.thumbnails.ThumbnailAccessorUtils;
import eu.europeana.api.client.thumbnails.ThumbnailsAccessor;
import eu.europeana.service.ir.image.IRConfiguration;
import eu.europeana.service.ir.image.IRConfigurationImpl;
public class V1QueriesTest extends ThumbnailAccessorUtils{
//private boolean overwriteThumbnails = false;
private IRConfiguration config;
@Before
public void init(){
String dataset = "design_v1";
setDataset(dataset);
}
@Test
public void analyzeTags() throws MyEuropeanaApiException, IOException, EuropeanaClientException{
String csvFile = "/queries/design/query_responses.csv";
Set<String> queryResponses = readResponseIds(csvFile);
System.out.println("total ids in QueryResponses: " + queryResponses.size());
File datasetFile = getConfig().getDatasetFile(getDataset());
Map<String, String> dv1Thumbnails = readThumbnailsMap(datasetFile);
if(queryResponses.removeAll(dv1Thumbnails.keySet()))
System.out.println("#ids not available in the dataset: " + queryResponses.size());
else
System.out.println("no query response Id is available in the dataset!");
Map<String, String> missingObjects = new HashMap<String, String>(queryResponses.size());
ThumbnailsAccessor ta = new ThumbnailsAccessor();
String thumbnailUrl = null;
File imageFolder = getConfig().getImageFolderAsFile(getDataset());
for (String euId : queryResponses) {
thumbnailUrl = ta.copyThumbnail(euId, imageFolder);
missingObjects.put(euId, thumbnailUrl);
}
String missingItemsFile = "/tmp/queries/design/tmp_missing_items.csv";
writeThumbnailsToCsvFile(new DatasetDescriptor("queries", getDataset()), missingObjects, new File(missingItemsFile));
System.out.println("Missing items written to file: " + missingItemsFile);
//Map<String, Integer> normalizedTags = normalizeTags(originalTags);
//URL outFileUrl = getClass().getResource("/myeuropeana/design/statistics/");
//File outFile = new File(outFileUrl.getFile(), "normalized_tags.csv");
//String outFile = getCollectionsCvsFolder() CvsFolder() CvsFolder() "/myeuropeana/design/statistics/tags.csv";
//File outFile = new File("./src/test/resources/myeuropeana/design/statistics/normalized_tags.csv");
//writeMapToCsvFile(normalizedTags, outFile);
}
private Set<String> readResponseIds(String csvFile) throws IOException {
Set<String> res = new HashSet<String>();
BufferedReader reader = null;
try {
InputStream in = getClass().getResourceAsStream(csvFile);
reader = new BufferedReader(new InputStreamReader(in));
// BufferedReader reader = new BufferedReader(new
// FileReader("/collection_07501_thumbnails.csv"));
String line = null;
while ((line = reader.readLine()) != null) {
//ignore comments
if(line.startsWith("#"))
continue;
res.add(line);
}
} finally {
if(reader != null)
reader.close();
}
return res;
}
// private void writeMapToCsvFile(
// Map<String, Integer> map, File file)
// throws IOException {
//
// // create parent dirs
// file.getParentFile().mkdirs();
//
// BufferedWriter writer = new BufferedWriter(new FileWriter(file));
//
// int count = 0;
// for (Entry<String, Integer> entry : map.entrySet()) {
//
// writer.write(entry.getKey());
// writer.write(";");
// writer.write(entry.getValue().toString());
// writer.write("\n");
// count++;
// if (count % 1000 == 0)
// writer.flush();
// }
// writer.flush();
// writer.close();
// }
protected IRConfiguration getConfig() {
if(config == null)
config = new IRConfigurationImpl();
return config;
}
}