Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1267 → Rev 1268

/contrib/metadata-extractor/trunk/src/com/drew/metadata/Tag.java
0,0 → 1,101
/*
* This is public domain software - that is, you can do whatever you want
* with it, and include it software that is licensed under the GNU or the
* BSD license, or whatever other licence you choose, including proprietary
* closed source licenses. I do ask that you leave this header in tact.
*
* If you make modifications to this code that you think would benefit the
* wider community, please send me a copy and I'll post it on my site.
*
* If you make use of this code, I'd appreciate hearing about it.
* drew@drewnoakes.com
* Latest version of this software kept at
* http://drewnoakes.com/
*
* Created by dnoakes on 26-Nov-2002 18:29:12 using IntelliJ IDEA.
*/
package com.drew.metadata;
 
import java.io.Serializable;
 
/**
*
*/
public class Tag implements Serializable
{
private final int _tagType;
private final Directory _directory;
 
public Tag(int tagType, Directory directory)
{
_tagType = tagType;
_directory = directory;
}
 
/**
* Gets the tag type as an int
* @return the tag type as an int
*/
public int getTagType()
{
return _tagType;
}
 
/**
* Gets the tag type in hex notation as a String with padded leading
* zeroes if necessary (i.e. <code>0x100E</code>).
* @return the tag type as a string in hexadecimal notation
*/
public String getTagTypeHex()
{
String hex = Integer.toHexString(_tagType);
while (hex.length() < 4) hex = "0" + hex;
return "0x" + hex;
}
 
/**
* Get a description of the tag's value, considering enumerated values
* and units.
* @return a description of the tag's value
*/
public String getDescription() throws MetadataException
{
return _directory.getDescription(_tagType);
}
 
/**
* Get the name of the tag, such as <code>Aperture</code>, or
* <code>InteropVersion</code>.
* @return the tag's name
*/
public String getTagName()
{
return _directory.getTagName(_tagType);
}
 
/**
* Get the name of the directory in which the tag exists, such as
* <code>Exif</code>, <code>GPS</code> or <code>Interoperability</code>.
* @return name of the directory in which this tag exists
*/
public String getDirectoryName()
{
return _directory.getName();
}
 
/**
* A basic representation of the tag's type and value in format:
* <code>FNumber - F2.8</code>.
* @return the tag's type and value
*/
public String toString()
{
String description;
try {
description = getDescription();
} catch (MetadataException e) {
description = _directory.getString(getTagType()) + " (unable to formulate description)";
}
return "[" + _directory.getName() + "] " + getTagName() + " - " + description;
}
}