@Override public XmlParser.ElementHandler getChildHandler(String namespace, String localName, Attributes attrs) throws ParseException, IOException { if (Namespaces.EXIF.equals(namespace)) { ExifTag field = new ExifTag(localName); addRepeatingExtension(field); return field.getHandler(extProfile, namespace, localName, attrs); } return getExtensionHandler(extProfile, ExifTags.class, namespace, localName, attrs); } };
/** * Construct an exif tag of <ns:name>value</ns:name>. */ public ExifTag(String name, String value) { super(Namespaces.EXIF_NAMESPACE, name, null, value); this.name = name; setRequired(false); }
@Override public ElementHandler getHandler(final ExtensionProfile extProfile, String namespace, String localName, Attributes attrs) { return new XmlParser.ElementHandler() { @Override public XmlParser.ElementHandler getChildHandler(String namespace, String localName, Attributes attrs) throws ParseException, IOException { if (Namespaces.EXIF.equals(namespace)) { ExifTag field = new ExifTag(localName); addRepeatingExtension(field); return field.getHandler(extProfile, namespace, localName, attrs); } return getExtensionHandler(extProfile, ExifTags.class, namespace, localName, attrs); } }; } }
@Override public void declareExtensions(ExtensionProfile extProfile) { extProfile.declare(ExifTags.class, ExifTag.getDefaultDescription()); extProfile.declareArbitraryXmlExtension(ExifTags.class); super.declareExtensions(extProfile); }
/** * Gets the value of a particular exif tag, or null if it doesn't exist. */ public String getExifTagValue(String exifName) { ExifTag tag = getExifTag(exifName); return tag == null ? null : tag.getValue(); }
@Override public void generate(XmlWriter w, ExtensionProfile extProfile) throws IOException { w.startElement(Namespaces.EXIF_NAMESPACE, "tags", null, null); Collection<ExifTag> fields = getExifTags(); for (ExifTag field : fields) { field.generate(w, extProfile); } w.endElement(); }
/** * Get a particular exif tag by name. This will retrieve the proper exif * tag based on the name. */ public ExifTag getExifTag(String exifName) { Collection<ExifTag> tags = getExifTags(); for (ExifTag tag : tags) { if (tag.getName().equals(exifName)) { return tag; } } return null; }
@Override public ElementHandler getHandler(final ExtensionProfile extProfile, String namespace, String localName, Attributes attrs) { return new XmlParser.ElementHandler() { @Override public XmlParser.ElementHandler getChildHandler(String namespace, String localName, Attributes attrs) throws ParseException, IOException { if (Namespaces.EXIF.equals(namespace)) { ExifTag field = new ExifTag(localName); addRepeatingExtension(field); return field.getHandler(extProfile, namespace, localName, attrs); } return getExtensionHandler(extProfile, ExifTags.class, namespace, localName, attrs); } }; } }
@Override public void declareExtensions(ExtensionProfile extProfile) { extProfile.declare(ExifTags.class, ExifTag.getDefaultDescription()); extProfile.declareArbitraryXmlExtension(ExifTags.class); super.declareExtensions(extProfile); }
/** * Gets the value of a particular exif tag, or null if it doesn't exist. */ public String getExifTagValue(String exifName) { ExifTag tag = getExifTag(exifName); return tag == null ? null : tag.getValue(); }
@Override public void generate(XmlWriter w, ExtensionProfile extProfile) throws IOException { w.startElement(Namespaces.EXIF_NAMESPACE, "tags", null, null); Collection<ExifTag> fields = getExifTags(); for (ExifTag field : fields) { field.generate(w, extProfile); } w.endElement(); }
/** * Get a particular exif tag by name. This will retrieve the proper exif * tag based on the name. */ public ExifTag getExifTag(String exifName) { Collection<ExifTag> tags = getExifTags(); for (ExifTag tag : tags) { if (tag.getName().equals(exifName)) { return tag; } } return null; }
@Override public XmlParser.ElementHandler getChildHandler(String namespace, String localName, Attributes attrs) throws ParseException, IOException { if (Namespaces.EXIF.equals(namespace)) { ExifTag field = new ExifTag(localName); addRepeatingExtension(field); return field.getHandler(extProfile, namespace, localName, attrs); } return getExtensionHandler(extProfile, ExifTags.class, namespace, localName, attrs); } };
/** * Sets the value of a particular exif tag by name. */ public void setExifTagValue(String name, String value) { ExifTag tag = getExifTag(name); if (tag != null) { removeRepeatingExtension(tag); } if (value != null) { addRepeatingExtension(new ExifTag(name, value)); } }
/** * Construct an exif tag of <ns:name>value</ns:name>. */ public ExifTag(String name, String value) { super(Namespaces.EXIF_NAMESPACE, name, null, value); this.name = name; setRequired(false); }
/** * Sets the value of a particular exif tag by name. */ public void setExifTagValue(String name, String value) { ExifTag tag = getExifTag(name); if (tag != null) { removeRepeatingExtension(tag); } if (value != null) { addRepeatingExtension(new ExifTag(name, value)); } }