package eu.europeana.cloud.service.dps.examples.tutorial;
import eu.europeana.cloud.service.dps.storm.AbstractDpsBolt;
import eu.europeana.cloud.service.dps.storm.StormTaskTuple;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import javax.imageio.ImageIO;
/**
*
* @author lucasanastasiou
*/
public class ConvertBolt extends AbstractDpsBolt {
@Override
public void execute(StormTaskTuple t) {
try {
// fetch the image from the input tuple
ByteArrayInputStream inputImage = t.getFileByteDataAsStream();
BufferedImage bufferedImage = ImageIO.read(inputImage);
OutputStream os = new ByteArrayOutputStream();
// transcoding to jpeg
ImageIO.write(bufferedImage, "jpg", os);
t.setFileData(os.toString().getBytes(Charset.forName("UTF-8")));
//emitting to the next bolt
outputCollector.emit("stream-to-next-bolt", t.toStormTuple());
} catch (IOException ex) {
// send notification of error
this.emitErrorNotification(t.getTaskId(), t.getFileUrl(), ex.getMessage(), "");
outputCollector.fail(inputTuple);
}
}
@Override
public void prepare() {
//
// your code goes here
//
}
}