Class Directory
- java.lang.Object
-
- com.drew.metadata.Directory
-
- Direct Known Subclasses:
AdobeJpegDirectory,DuckyDirectory,ErrorDirectory,ExifDirectoryBase,HuffmanTablesDirectory,IccDirectory,IptcDirectory,JfifDirectory,JpegCommentDirectory,JpegDirectory,PanasonicRawDistortionDirectory,PanasonicRawIFD0Directory,PanasonicRawWbInfo2Directory,PanasonicRawWbInfoDirectory,PhotoshopDirectory,PrintIMDirectory,PsdHeaderDirectory,XmpDirectory
public abstract class Directory extends java.lang.ObjectAbstract base class for all directory implementations, having methods for getting and setting tag values of various data types.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddError(java.lang.String message)Registers an error message with this directory.booleancontainsTag(int tagType)Indicates whether the specified tag type has been set.booleangetBoolean(int tagType)Returns the specified tag's value as a boolean, if possible.java.lang.BooleangetBooleanObject(int tagType)Returns the specified tag's value as a boolean.byte[]getByteArray(int tagType)Gets the specified tag's value as an byte array, if possible.java.util.DategetDate(int tagType)Returns the specified tag's value as a java.util.Date.java.util.DategetDate(int tagType, java.lang.String subsecond, java.util.TimeZone timeZone)Returns the specified tag's value as a java.util.Date.java.util.DategetDate(int tagType, java.util.TimeZone timeZone)Returns the specified tag's value as a java.util.Date.java.lang.StringgetDescription(int tagType)Provides a description of a tag's value using the descriptor set bysetDescriptor(Descriptor).doublegetDouble(int tagType)Returns the specified tag's value as a double, if possible.java.lang.DoublegetDoubleObject(int tagType)Returns the specified tag's value as a Double.intgetErrorCount()Returns the count of error messages in this directory.java.lang.Iterable<java.lang.String>getErrors()Used to iterate over any error messages contained in this directory.floatgetFloat(int tagType)Returns the specified tag's value as a float, if possible.java.lang.FloatgetFloatObject(int tagType)Returns the specified tag's value as a float.intgetInt(int tagType)Returns the specified tag's value as an int, if possible.int[]getIntArray(int tagType)Gets the specified tag's value as an int array, if possible.java.lang.IntegergetInteger(int tagType)Returns the specified tag's value as an Integer, if possible.longgetLong(int tagType)Returns the specified tag's value as a long, if possible.java.lang.LonggetLongObject(int tagType)Returns the specified tag's value as a long.abstract java.lang.StringgetName()Provides the name of the directory, for display purposes.java.lang.ObjectgetObject(int tagType)Returns the object hashed for the particular tag type specified, if available.DirectorygetParent()RationalgetRational(int tagType)Returns the specified tag's value as a Rational.Rational[]getRationalArray(int tagType)Returns the specified tag's value as an array of Rational.java.lang.StringgetString(int tagType)Returns the specified tag's value as a String.java.lang.StringgetString(int tagType, java.lang.String charset)java.lang.String[]getStringArray(int tagType)Gets the specified tag's value as a String array, if possible.StringValuegetStringValue(int tagType)StringValue[]getStringValueArray(int tagType)Gets the specified tag's value as a StringValue array, if possible.intgetTagCount()Returns the number of tags set in this Directory.java.lang.StringgetTagName(int tagType)Returns the name of a specified tag as a String.java.util.Collection<Tag>getTags()Returns an Iterator of Tag instances that have been set in this Directory.booleanhasErrors()Gets a value indicating whether this directory has any error messages.booleanhasTagName(int tagType)Gets whether the specified tag is known by the directory and has a name.booleanisEmpty()Gets a value indicating whether the directory is empty, meaning it contains no errors and no tag values.voidsetBoolean(int tagType, boolean value)Sets abooleanvalue for the specified tag.voidsetByteArray(int tagType, byte[] bytes)Sets abyte[](array) for the specified tag.voidsetDate(int tagType, java.util.Date value)Sets ajava.util.Datevalue for the specified tag.voidsetDescriptor(TagDescriptor descriptor)Sets the descriptor used to interpret tag values.voidsetDouble(int tagType, double value)Sets adoublevalue for the specified tag.voidsetDoubleArray(int tagType, double[] doubles)Sets adouble[](array) for the specified tag.voidsetFloat(int tagType, float value)Sets afloatvalue for the specified tag.voidsetFloatArray(int tagType, float[] floats)Sets afloat[](array) for the specified tag.voidsetInt(int tagType, int value)Sets anintvalue for the specified tag.voidsetIntArray(int tagType, int[] ints)Sets anint[](array) for the specified tag.voidsetLong(int tagType, long value)Sets alongvalue for the specified tag.voidsetObject(int tagType, java.lang.Object value)Sets aObjectfor the specified tag.voidsetObjectArray(int tagType, java.lang.Object array)Sets an arrayObjectfor the specified tag.voidsetParent(Directory parent)voidsetRational(int tagType, Rational rational)Sets aRationalvalue for the specified tag.voidsetRationalArray(int tagType, Rational[] rationals)Sets aRational[](array) for the specified tag.voidsetString(int tagType, java.lang.String value)Sets aStringvalue for the specified tag.voidsetStringArray(int tagType, java.lang.String[] strings)Sets aString[](array) for the specified tag.voidsetStringValue(int tagType, StringValue value)Sets aStringValuevalue for the specified tag.voidsetStringValueArray(int tagType, StringValue[] strings)Sets aStringValue[](array) for the specified tag.java.lang.StringtoString()
-
-
-
Method Detail
-
getName
public abstract java.lang.String getName()
Provides the name of the directory, for display purposes. E.g.Exif- Returns:
- the name of the directory
-
isEmpty
public boolean isEmpty()
Gets a value indicating whether the directory is empty, meaning it contains no errors and no tag values.
-
containsTag
public boolean containsTag(int tagType)
Indicates whether the specified tag type has been set.- Parameters:
tagType- the tag type to check for- Returns:
- true if a value exists for the specified tag type, false if not
-
getTags
public java.util.Collection<Tag> getTags()
Returns an Iterator of Tag instances that have been set in this Directory.- Returns:
- an Iterator of Tag instances
-
getTagCount
public int getTagCount()
Returns the number of tags set in this Directory.- Returns:
- the number of tags set in this Directory
-
setDescriptor
public void setDescriptor(TagDescriptor descriptor)
Sets the descriptor used to interpret tag values.- Parameters:
descriptor- the descriptor used to interpret tag values
-
addError
public void addError(java.lang.String message)
Registers an error message with this directory.- Parameters:
message- an error message.
-
hasErrors
public boolean hasErrors()
Gets a value indicating whether this directory has any error messages.- Returns:
- true if the directory contains errors, otherwise false
-
getErrors
public java.lang.Iterable<java.lang.String> getErrors()
Used to iterate over any error messages contained in this directory.- Returns:
- an iterable collection of error message strings.
-
getErrorCount
public int getErrorCount()
Returns the count of error messages in this directory.
-
getParent
public Directory getParent()
-
setParent
public void setParent(Directory parent)
-
setInt
public void setInt(int tagType, int value)Sets anintvalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as an int
-
setIntArray
public void setIntArray(int tagType, int[] ints)Sets anint[](array) for the specified tag.- Parameters:
tagType- the tag identifierints- the int array to store
-
setFloat
public void setFloat(int tagType, float value)Sets afloatvalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as a float
-
setFloatArray
public void setFloatArray(int tagType, float[] floats)Sets afloat[](array) for the specified tag.- Parameters:
tagType- the tag identifierfloats- the float array to store
-
setDouble
public void setDouble(int tagType, double value)Sets adoublevalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as a double
-
setDoubleArray
public void setDoubleArray(int tagType, double[] doubles)Sets adouble[](array) for the specified tag.- Parameters:
tagType- the tag identifierdoubles- the double array to store
-
setStringValue
public void setStringValue(int tagType, StringValue value)Sets aStringValuevalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as a StringValue
-
setString
public void setString(int tagType, java.lang.String value)Sets aStringvalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as a String
-
setStringArray
public void setStringArray(int tagType, java.lang.String[] strings)Sets aString[](array) for the specified tag.- Parameters:
tagType- the tag identifierstrings- the String array to store
-
setStringValueArray
public void setStringValueArray(int tagType, StringValue[] strings)Sets aStringValue[](array) for the specified tag.- Parameters:
tagType- the tag identifierstrings- the StringValue array to store
-
setBoolean
public void setBoolean(int tagType, boolean value)Sets abooleanvalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as a boolean
-
setLong
public void setLong(int tagType, long value)Sets alongvalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as a long
-
setDate
public void setDate(int tagType, java.util.Date value)Sets ajava.util.Datevalue for the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag as a java.util.Date
-
setRational
public void setRational(int tagType, Rational rational)Sets aRationalvalue for the specified tag.- Parameters:
tagType- the tag's value as an intrational- rational number
-
setRationalArray
public void setRationalArray(int tagType, Rational[] rationals)Sets aRational[](array) for the specified tag.- Parameters:
tagType- the tag identifierrationals- the Rational array to store
-
setByteArray
public void setByteArray(int tagType, byte[] bytes)Sets abyte[](array) for the specified tag.- Parameters:
tagType- the tag identifierbytes- the byte array to store
-
setObject
public void setObject(int tagType, java.lang.Object value)Sets aObjectfor the specified tag.- Parameters:
tagType- the tag's value as an intvalue- the value for the specified tag- Throws:
java.lang.NullPointerException- if value isnull
-
setObjectArray
public void setObjectArray(int tagType, java.lang.Object array)Sets an arrayObjectfor the specified tag.- Parameters:
tagType- the tag's value as an intarray- the array of values for the specified tag
-
getInt
public int getInt(int tagType) throws MetadataExceptionReturns the specified tag's value as an int, if possible. Every attempt to represent the tag's value as an int is taken. Here is a list of the action taken depending upon the tag's original type:- int - Return unchanged.
- Number - Return an int value (real numbers are truncated).
- Rational - Truncate any fractional part and returns remaining int.
- String - Attempt to parse string as an int. If this fails, convert the char[] to an int (using shifts and OR).
- Rational[] - Return int value of first item in array.
- byte[] - Return int value of first item in array.
- int[] - Return int value of first item in array.
- Throws:
MetadataException- if no value exists for tagType or if it cannot be converted to an int.
-
getInteger
public java.lang.Integer getInteger(int tagType)
Returns the specified tag's value as an Integer, if possible. Every attempt to represent the tag's value as an Integer is taken. Here is a list of the action taken depending upon the tag's original type:- int - Return unchanged
- Number - Return an int value (real numbers are truncated)
- Rational - Truncate any fractional part and returns remaining int
- String - Attempt to parse string as an int. If this fails, convert the char[] to an int (using shifts and OR)
- Rational[] - Return int value of first item in array if length > 0
- byte[] - Return int value of first item in array if length > 0
- int[] - Return int value of first item in array if length > 0
nullis returned.
-
getStringArray
public java.lang.String[] getStringArray(int tagType)
Gets the specified tag's value as a String array, if possible. Only supported where the tag is set as StringValue[], String[], StringValue, String, int[], byte[] or Rational[].- Parameters:
tagType- the tag identifier- Returns:
- the tag's value as an array of Strings. If the value is unset or cannot be converted,
nullis returned.
-
getStringValueArray
public StringValue[] getStringValueArray(int tagType)
Gets the specified tag's value as a StringValue array, if possible. Only succeeds if the tag is set as StringValue[], or StringValue.- Parameters:
tagType- the tag identifier- Returns:
- the tag's value as an array of StringValues. If the value is unset or cannot be converted,
nullis returned.
-
getIntArray
public int[] getIntArray(int tagType)
Gets the specified tag's value as an int array, if possible. Only supported where the tag is set as String, Integer, int[], byte[] or Rational[].- Parameters:
tagType- the tag identifier- Returns:
- the tag's value as an int array
-
getByteArray
public byte[] getByteArray(int tagType)
Gets the specified tag's value as an byte array, if possible. Only supported where the tag is set as String, Integer, int[], byte[] or Rational[].- Parameters:
tagType- the tag identifier- Returns:
- the tag's value as a byte array
-
getDouble
public double getDouble(int tagType) throws MetadataExceptionReturns the specified tag's value as a double, if possible.- Throws:
MetadataException
-
getDoubleObject
public java.lang.Double getDoubleObject(int tagType)
Returns the specified tag's value as a Double. If the tag is not set or cannot be converted,nullis returned.
-
getFloat
public float getFloat(int tagType) throws MetadataExceptionReturns the specified tag's value as a float, if possible.- Throws:
MetadataException
-
getFloatObject
public java.lang.Float getFloatObject(int tagType)
Returns the specified tag's value as a float. If the tag is not set or cannot be converted,nullis returned.
-
getLong
public long getLong(int tagType) throws MetadataExceptionReturns the specified tag's value as a long, if possible.- Throws:
MetadataException
-
getLongObject
public java.lang.Long getLongObject(int tagType)
Returns the specified tag's value as a long. If the tag is not set or cannot be converted,nullis returned.
-
getBoolean
public boolean getBoolean(int tagType) throws MetadataExceptionReturns the specified tag's value as a boolean, if possible.- Throws:
MetadataException
-
getBooleanObject
public java.lang.Boolean getBooleanObject(int tagType)
Returns the specified tag's value as a boolean. If the tag is not set or cannot be converted,nullis returned.
-
getDate
public java.util.Date getDate(int tagType)
Returns the specified tag's value as a java.util.Date. If the value is unset or cannot be converted,nullis returned.If the underlying value is a
String, then attempts will be made to parse the string as though it is in the GMTTimeZone. If theTimeZoneis known, call the overload that accepts one as an argument.
-
getDate
public java.util.Date getDate(int tagType, java.util.TimeZone timeZone)Returns the specified tag's value as a java.util.Date. If the value is unset or cannot be converted,nullis returned.If the underlying value is a
String, then attempts will be made to parse the string as though it is in theTimeZonerepresented by thetimeZoneparameter (if it is non-null). Note that this parameter is only considered if the underlying value is a string and it has no time zone information, otherwise it has no effect.
-
getDate
public java.util.Date getDate(int tagType, java.lang.String subsecond, java.util.TimeZone timeZone)Returns the specified tag's value as a java.util.Date. If the value is unset or cannot be converted,nullis returned.If the underlying value is a
String, then attempts will be made to parse the string as though it is in theTimeZonerepresented by thetimeZoneparameter (if it is non-null). Note that this parameter is only considered if the underlying value is a string and it has no time zone information, otherwise it has no effect. In addition, thesubsecondparameter, which specifies the number of digits after the decimal point in the seconds, is set to the returned Date. This parameter is only considered if the underlying value is a string and is has no subsecond information, otherwise it has no effect.- Parameters:
tagType- the tag identifiersubsecond- the subsecond value for the DatetimeZone- the time zone to use- Returns:
- a Date representing the time value
-
getRational
public Rational getRational(int tagType)
Returns the specified tag's value as a Rational. If the value is unset or cannot be converted,nullis returned.
-
getRationalArray
public Rational[] getRationalArray(int tagType)
Returns the specified tag's value as an array of Rational. If the value is unset or cannot be converted,nullis returned.
-
getString
public java.lang.String getString(int tagType)
Returns the specified tag's value as a String. This value is the 'raw' value. A more presentable decoding of this value may be obtained from the corresponding Descriptor.- Returns:
- the String representation of the tag's value, or
nullif the tag hasn't been defined.
-
getString
public java.lang.String getString(int tagType, java.lang.String charset)
-
getStringValue
public StringValue getStringValue(int tagType)
-
getObject
public java.lang.Object getObject(int tagType)
Returns the object hashed for the particular tag type specified, if available.- Parameters:
tagType- the tag type identifier- Returns:
- the tag's value as an Object if available, else
null
-
getTagName
public java.lang.String getTagName(int tagType)
Returns the name of a specified tag as a String.- Parameters:
tagType- the tag type identifier- Returns:
- the tag's name as a String
-
hasTagName
public boolean hasTagName(int tagType)
Gets whether the specified tag is known by the directory and has a name.- Parameters:
tagType- the tag type identifier- Returns:
- whether this directory has a name for the specified tag
-
getDescription
public java.lang.String getDescription(int tagType)
Provides a description of a tag's value using the descriptor set bysetDescriptor(Descriptor).- Parameters:
tagType- the tag type identifier- Returns:
- the tag value's description as a String
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-