package com.limegroup.gnutella.metadata; import java.io.File; import java.io.IOException; /** * Factory for returning readers and writers of metadata. */ public interface MetaDataFactory { /** * Returns an editor for a file if one exists or null if LimeWire * does not support editing the file type meta data. */ public MetaWriter getEditorForFile(String name); /** * Returns true if this factory contains an editor for this file type, * false otherwise. */ public boolean containsEditor(String name); /** * Reads the meta data from the file if the file type is supported * or return null if reading the file meta data if not supported. */ public MetaData parse(File f) throws IOException; /** * Returns true if this factory contains a reader for this file type, * false otherwise. */ public boolean containsReader(File f); /** * Returns true if this factory contains an audio reader for this file type, * false otherwise. */ public boolean containsAudioReader(File f); /** * Returns true if this factory contains a video reader for this file type, * false otherwise. */ public boolean containsVideoReader(File f); /** * Registers a reader factory for a number of file extensions. * @throws IllegalArgumentException if another factory is already registered * for one of the given extensions */ void registerReader(MetaReader reader); }