package com.limegroup.gnutella.metadata;
import java.io.File;
import java.io.IOException;
import java.util.List;
import com.limegroup.gnutella.xml.LimeXMLDocument;
import com.limegroup.gnutella.xml.LimeXMLSchemaRepository;
/**
* Utility class that creates a <tt>LimeXMLDocument</tt> from a file.
*/
public class MetaDataReader {
private MetaDataReader(){}
/**
* Generates a LimeXMLDocument from this file, only parsing it if it's the given schemaURI.
*/
public static LimeXMLDocument readDocument(File file) throws IOException {
MetaData data = MetaData.parse(file);
if(data == null)
throw new IOException("unable to parse file");
List nameValList = data.toNameValueList();
if(nameValList.isEmpty())
throw new IOException("invalid/no data.");
String uri = data.getSchemaURI();
if(LimeXMLSchemaRepository.instance().getSchema(uri) == null)
throw new IOException("schema: " + uri + " doesn't exist");
return new LimeXMLDocument(nameValList, uri);
}
}