package com.frontier42.keepass; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import org.w3c.dom.Document; import com.frontier42.keepass.impl.DatabaseDomReaderV4; import com.frontier42.keepass.impl.DatabaseReaderV4; import com.keepassdroid.database.exception.InvalidDBException; import com.keepassdroid.database.exception.InvalidDBVersionException; import com.keepassdroid.database.exception.InvalidPasswordException; public class KeepassDatabaseFactory { public static Document loadDocument(File file, String password) throws IOException, InvalidDBVersionException, InvalidPasswordException, InvalidDBException{ Document doc=null; InputStream inputStream=new FileInputStream(file); try{ doc=loadDocument(inputStream, password); }finally{ if (inputStream!=null)inputStream.close(); } return doc; } public static Document loadDocument(URL url, String password) throws IOException, InvalidDBVersionException, InvalidPasswordException, InvalidDBException{ Document doc=null; InputStream inputStream=url.openStream(); try{ doc=loadDocument(inputStream, password); }finally{ if (inputStream!=null)inputStream.close(); } return doc; } public static Document loadDocument(InputStream is, String password) throws IOException, InvalidDBVersionException, InvalidPasswordException, InvalidDBException{ BufferedInputStream bis = new BufferedInputStream(is); DatabaseDomReaderV4 reader=new DatabaseDomReaderV4(); long startTime=System.nanoTime(); Document doc= reader.loadData(bis, password); long endTime=System.nanoTime(); long loadTime=endTime-startTime; //System.err.println("loadTime:"+loadTime); doc.getDocumentElement().setAttribute("loadTime",Long.toString(loadTime)); return doc; } public static InputStream openDecryptedStrem(InputStream is, String password) throws IOException, InvalidDBVersionException, InvalidPasswordException, InvalidDBException{ return openDecryptedStrem(new DatabaseReaderV4(), is, password); } public static InputStream openDecryptedStrem(DatabaseReaderV4 reader, InputStream is, String password) throws IOException, InvalidDBVersionException, InvalidPasswordException, InvalidDBException{ BufferedInputStream bis = new BufferedInputStream(is); return reader.openDecryptedStrem(bis, password); } }