package cz.nkp.differ.compare.io.external; import cz.nkp.differ.compare.io.ImageProcessorResult; import cz.nkp.differ.compare.io.pure.PureImageProcessor; import cz.nkp.differ.compare.io.pure.PureImageProcessorResult; import cz.nkp.differ.compare.metadata.ImageMetadata; import cz.nkp.differ.compare.metadata.MetadataExtractors; import cz.nkp.differ.compare.metadata.external.ExternalMetadataExtractor; import cz.nkp.differ.exceptions.ImageDifferException; import cz.nkp.differ.images.ImageLoader; import cz.nkp.differ.listener.ProgressListener; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; /** * * @author xrosecky */ public class ExternalImageProcessor extends PureImageProcessor { private ExternalMetadataExtractor extractor; public ExternalImageProcessor(ImageLoader imageLoader, MetadataExtractors extractors) { super(imageLoader, extractors); } @Override public PureImageProcessorResult processImage(File image, ProgressListener callback) throws ImageDifferException { PureImageProcessorResult result = super.processImage(image, callback); return result; } @Override public ImageProcessorResult[] processImages(File a, File b, ProgressListener callback) throws ImageDifferException { ImageProcessorResult[] result = super.processImages(a, b, callback); if (result.length == 3) { Map<String, String> attributes = new HashMap<String, String>(); attributes.put("{file1}", a.getAbsolutePath()); attributes.put("{file2}", b.getAbsolutePath()); List<ImageMetadata> metadata = extractor.getMetadata(attributes); result[2].getMetadata().addAll(metadata); } return result; } public ExternalMetadataExtractor getExtractor() { return extractor; } public void setExtractor(ExternalMetadataExtractor extractor) { this.extractor = extractor; } }