package comeon.model.processors;
import com.adobe.xmp.XMPException;
import com.adobe.xmp.XMPMeta;
import com.adobe.xmp.impl.XMPNodeUtils;
import com.drew.metadata.Directory;
import com.drew.metadata.xmp.XmpDirectory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
public final class XmpPreProcessor implements PreProcessor {
private static final Logger LOGGER = LoggerFactory.getLogger(XmpPreProcessor.class);
private static final String XMP_DOCUMENT_ID = "xmpDocumentID";
@Override
public void process(final Directory directory, final Map<String, Object> metadata) {
final XmpDirectory xmpDir = (XmpDirectory) directory;
final XMPMeta xmp = xmpDir.getXMPMeta();
try {
final String documentId = xmp.getPropertyString(XMPNodeUtils.NS_XMP_MM, "DocumentID");
metadata.put(XMP_DOCUMENT_ID, documentId);
} catch (final XMPException e) {
LOGGER.warn("Could not read xmpDocumentID", e);
}
}
@Override
public Class<? extends Directory> getSupportedClass() {
return XmpDirectory.class;
}
}