3 package com.pixelmed.imageio;
8 import javax.xml.parsers.*;
10 import java.util.ArrayList;
11 import java.util.Iterator;
12 import java.util.List;
13 import javax.imageio.metadata.IIOInvalidTreeException;
14 import javax.imageio.metadata.IIOMetadata;
15 import javax.imageio.metadata.IIOMetadataFormat;
16 import javax.imageio.metadata.IIOMetadataNode;
20 private static final String identString =
"@(#) $Header: /userland/cvs/codec/com/pixelmed/imageio/JPEGLosslessMetadata.java,v 1.2 2015/10/19 15:34:42 dclunie Exp $";
22 static final String nativeMetadataFormatName =
"com.pixelmed.imageio.JPEGLosslessMetadata_0.1";
23 static final String nativeMetadataFormatClassName =
"com.pixelmed.imageio.JPEGLosslessMetadata";
26 List keywords =
new ArrayList();
27 List values =
new ArrayList();
32 nativeMetadataFormatName,
33 nativeMetadataFormatClassName,
39 if (!formatName.equals(nativeMetadataFormatName)) {
40 throw new IllegalArgumentException(
"Bad format name!");
46 if (!formatName.equals(nativeMetadataFormatName)) {
47 throw new IllegalArgumentException(
"Bad format name!");
51 IIOMetadataNode root =
new IIOMetadataNode(nativeMetadataFormatName);
54 Iterator keywordIter = keywords.iterator();
55 Iterator valueIter = values.iterator();
56 while (keywordIter.hasNext()) {
57 IIOMetadataNode node =
new IIOMetadataNode(
"KeywordValuePair");
58 node.setAttribute(
"keyword", (String)keywordIter.next());
59 node.setAttribute(
"value", (String)valueIter.next());
60 root.appendChild(node);
71 this.keywords =
new ArrayList();
72 this.values =
new ArrayList();
75 public void mergeTree(String formatName, Node root)
throws IIOInvalidTreeException {
76 if (!formatName.equals(nativeMetadataFormatName)) {
77 throw new IllegalArgumentException(
"Bad format name!");
81 if (!node.getNodeName().equals(nativeMetadataFormatName)) {
82 throw new IIOInvalidTreeException(
"Root must be " + nativeMetadataFormatName,node);
84 node = node.getFirstChild();
85 while (node !=
null) {
86 if (!node.getNodeName().equals(
"KeywordValuePair")) {
87 throw new IIOInvalidTreeException(
"Node name not KeywordValuePair!",node);
89 NamedNodeMap attributes = node.getAttributes();
90 Node keywordNode = attributes.getNamedItem(
"keyword");
91 Node valueNode = attributes.getNamedItem(
"value");
92 if (keywordNode ==
null || valueNode ==
null) {
93 throw new IIOInvalidTreeException(
"Keyword or value missing!",node);
97 keywords.add((String)keywordNode.getNodeValue());
98 values.add((String)valueNode.getNodeValue());
101 node = node.getNextSibling();