package de.anomic.data;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;

import net.yacy.cora.document.MultiProtocolURI;

public class MimeTable {

    private static final Properties mimeTable = new Properties();
    
    public static void init(final File mimeFile) {
        if (mimeTable.isEmpty()) {
            // load the mime table
            BufferedInputStream mimeTableInputStream = null;
            try {
                mimeTableInputStream = new BufferedInputStream(new FileInputStream(mimeFile));
                mimeTable.load(mimeTableInputStream);
            } catch (final Exception e) {                
                e.printStackTrace();
            } finally {
                if (mimeTableInputStream != null) try { mimeTableInputStream.close(); } catch (final Exception e1) {}                
            }
        }
    }
    
    public static int size() {
        return mimeTable.size();
    }
    
    public static boolean isEmpty() {
        return mimeTable.isEmpty();
    }
    
    public static String ext2mime(final String ext) {
        return mimeTable.getProperty(ext, "application/" + ext);
    }
    
    public static String ext2mime(final String ext, final String dfltMime) {
        return mimeTable.getProperty(ext, dfltMime);
    }
    
    public static String url2mime(final MultiProtocolURI url, final String dfltMime) {
        return ext2mime(url.getFileExtension(), dfltMime);
    }
    
    public static String url2mime(final MultiProtocolURI url) {
        return ext2mime(url.getFileExtension());
    }
}