package eu.europeana.cloud.service.dps.storm.topologies.ic.topology.bolt; import eu.europeana.cloud.service.dps.DpsTask; import eu.europeana.cloud.service.dps.PluginParameterKeys; import eu.europeana.cloud.service.dps.storm.AbstractDpsBolt; import eu.europeana.cloud.service.dps.storm.StormTaskTuple; import eu.europeana.cloud.service.dps.storm.topologies.ic.converter.exceptions.ICSException; import eu.europeana.cloud.service.dps.storm.topologies.ic.topology.api.ImageConverterService; import eu.europeana.cloud.service.dps.storm.topologies.ic.topology.api.ImageConverterServiceImpl; import eu.europeana.cloud.service.mcs.exception.MCSException; import org.apache.tika.mime.MimeTypeException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; /** * Created by Tarek on 9/28/2015. */ /** * compress image file from tiff to jp2 using its url and emits the file as separate {@link StormTaskTuple}. */ public class IcBolt extends AbstractDpsBolt { public static final Logger LOGGER = LoggerFactory.getLogger(IcBolt.class); /** * compress image file. * * @param stormTaskTuple Tuple which DpsTask is part of ... */ public void execute(StormTaskTuple stormTaskTuple) { try { String fileUrl = stormTaskTuple.getFileUrl(); LOGGER.info("processing file: {}", fileUrl); ImageConverterService imageConverterService = new ImageConverterServiceImpl(); imageConverterService.convertFile(stormTaskTuple); LOGGER.info("IC Bolt: conversion success for: {}", fileUrl); StormTaskTuple next = buildStormTaskTuple(stormTaskTuple); outputCollector.emit(inputTuple,stormTaskTuple.toStormTuple()); } catch (IOException | MimeTypeException | MCSException | ICSException | RuntimeException e) { LOGGER.error("IC Bolt error: {} \n StackTrace: \n{}", e.getMessage(), e.getStackTrace()); logAndEmitError(stormTaskTuple, e.getMessage()); } } private StormTaskTuple buildStormTaskTuple(StormTaskTuple t) { t.addParameter(PluginParameterKeys.DPS_TASK_INPUT_DATA,null); return t; } @Override public void prepare() { } }