package er.attachment.metadata; import java.util.Iterator; import java.util.LinkedList; import java.util.List; /** * <span class="en"> * ERParsedMetadataDirectory represents a metadata directory that has been properly parsed. * </span> * * <span class="ja"> * ERParsedMetadataDirectory はパースを成功しているメタデータ・ディレクトリ * </span> * * @author mschrag */ public class ERParsedMetadataDirectory implements IERMetadataDirectory { private String _directoryName; private List<ERMetadataEntry> _metadataEntries; /** * <span class="en"> * Constructs a new parsed metadata directory. * * @param directoryName the directory name * </span> * * <span class="ja"> * 新パース済みのメタデータ・ディレクトリを作成します。 * * @param directoryName - ディレクトリ名 * </span> */ public ERParsedMetadataDirectory(String directoryName) { _directoryName = directoryName; _metadataEntries = new LinkedList<>(); } /** * <span class="en"> * Returns the name of this metadata directory (EXIF, IPTC, etc). * * @return the name of this metadata directory * </span> * * <span class="ja"> * メタデータ・ディレクトリの名前を戻します。(EXIF, IPTC, 等). * * @return メタデータ・ディレクトリの名前 * </span> */ public String getDirectoryName() { return _directoryName; } /** * <span class="en"> * Adds a metadata entry to this directory. * * @param entry the entry to add * </span> * * <span class="ja"> * このディレクトリのメタデータ・エントリーを追加します。 * * @param entry - 追加するメタデータ・エントリー * </span> */ public void addMetadataEntry(ERMetadataEntry entry) { _metadataEntries.add(entry); } /** * <span class="en"> * Returns a metadata entry for the given type. * * @param type the type to lookup * * @return a metadata entry for the given type * </span> * * <span class="ja"> * 指定タイプのメタデータ・エントリーを戻します。 * * @param type - ルックアップするタイプ * * @return 指定タイプのメタデータ・エントリー * </span> */ public ERMetadataEntry getMetadataEntryByType(int type) { ERMetadataEntry matchingEntry = null; Iterator metadataEntriesIter = _metadataEntries.iterator(); while (matchingEntry == null && metadataEntriesIter.hasNext()) { ERMetadataEntry entry = (ERMetadataEntry) metadataEntriesIter.next(); if (entry.getType() == type) { matchingEntry = entry; } } return matchingEntry; } /** * <span class="en"> * Returns a metadata entry for the given name. * * @param name the name to lookup * * @return a metadata entry for the given name * </span> * * <span class="ja"> * 指定名前のメタデータ・エントリーを戻します。 * * @param name - ルックアップする名前 * * @return 指定名前のメタデータ・エントリー * </span> */ public ERMetadataEntry getMetadataEntryByName(String name) { ERMetadataEntry matchingEntry = null; Iterator metadataEntriesIter = _metadataEntries.iterator(); while (matchingEntry == null && metadataEntriesIter.hasNext()) { ERMetadataEntry entry = (ERMetadataEntry) metadataEntriesIter.next(); if (name.equalsIgnoreCase(entry.getName())) { matchingEntry = entry; } } return matchingEntry; } /** * <span class="en"> * Returns the metadata entries from this directory. * * @return the metadata entries from this directory * </span> * * <span class="ja"> * このディレクトリのメタデータ・エントリーを戻します。 * * @return ディレクトリのメタデータ・エントリー * </span> */ public Iterator<ERMetadataEntry> getMetadataEntries() { return _metadataEntries.iterator(); } @Override public String toString() { return "[ParsedMetadataDirectory: directoryName = " + _directoryName + "; metadata = " + _metadataEntries + "]"; } }