eu.medsea.mimeutil.detector
Class MimeDetector

java.lang.Object
  extended by eu.medsea.mimeutil.detector.MimeDetector
Direct Known Subclasses:
ExtensionMimeDetector, MagicMimeMimeDetector, OpendesktopMimeDetector, TextMimeDetector, WindowsRegistryMimeDetector

public abstract class MimeDetector
extends Object

ALL MimeDetector(s) must extend this class.

Author:
Steven McArdle

Constructor Summary
MimeDetector()
           
 
Method Summary
protected static InputStream closeStream(InputStream in)
           
 void delete()
          You can override this method if for instance you allocated any resources in the init() method that need to be closed or deallocated specially.
abstract  String getDescription()
          Abstract method to be implement by concrete MimeDetector(s).
 Collection getMimeTypes(byte[] data)
          Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(byte [] data) {}
 Collection getMimeTypes(File file)
          Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(File file) {}
 Collection getMimeTypes(InputStream in)
          Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(InputStream in) {} The InputStream must support the mark() and reset() methods.
 Collection getMimeTypes(String fileName)
          Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(String fileName) {}
 Collection getMimeTypes(URL url)
          Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(URL url) {}
protected abstract  Collection getMimeTypesByteArray(byte[] data)
          Abstract method that must be implemented by concrete MimeDetector(s).
protected abstract  Collection getMimeTypesFile(File file)
          Abstract method that must be implemented by concrete MimeDetector(s).
protected abstract  Collection getMimeTypesFileName(String fileName)
          Abstract method that must be implemented by concrete MimeDetector(s).
protected abstract  Collection getMimeTypesInputStream(InputStream in)
          Abstract method that must be implemented by concrete MimeDetector(s).
protected abstract  Collection getMimeTypesURL(URL url)
          Abstract method that must be implemented by concrete MimeDetector(s).
 String getName()
          Gets the name of this MimeDetector
 void init()
          You can override this method if you have any special one off initialisation to perform such as allocating resources etc.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MimeDetector

public MimeDetector()
Method Detail

getName

public final String getName()
Gets the name of this MimeDetector

Returns:
name of MimeDetector as a fully qualified class name

getMimeTypes

public final Collection getMimeTypes(String fileName)
                              throws UnsupportedOperationException
Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(String fileName) {}

Parameters:
fileName -
Returns:
Throws:
UnsupportedOperationException

getMimeTypes

public final Collection getMimeTypes(File file)
                              throws UnsupportedOperationException
Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(File file) {}

Parameters:
fileName -
Returns:
Throws:
UnsupportedOperationException

getMimeTypes

public final Collection getMimeTypes(URL url)
                              throws UnsupportedOperationException
Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(URL url) {}

Parameters:
fileName -
Returns:
Throws:
UnsupportedOperationException

getMimeTypes

public final Collection getMimeTypes(byte[] data)
                              throws UnsupportedOperationException
Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(byte [] data) {}

Parameters:
fileName -
Returns:
Throws:
UnsupportedOperationException

getMimeTypes

public final Collection getMimeTypes(InputStream in)
                              throws UnsupportedOperationException
Called by MimeUtil.MimeDetectorRegistry.getMimeTypes(InputStream in) {} The InputStream must support the mark() and reset() methods.

Parameters:
fileName -
Returns:
Throws:
UnsupportedOperationException

init

public void init()
You can override this method if you have any special one off initialisation to perform such as allocating resources etc.


delete

public void delete()
You can override this method if for instance you allocated any resources in the init() method that need to be closed or deallocated specially.


getDescription

public abstract String getDescription()
Abstract method to be implement by concrete MimeDetector(s).

Returns:
description of this MimeDetector

getMimeTypesFileName

protected abstract Collection getMimeTypesFileName(String fileName)
                                            throws UnsupportedOperationException
Abstract method that must be implemented by concrete MimeDetector(s). This takes a file name and is called by the MimeUtil getMimeTypes(String fileName) getMimeTypes(File file) getMimeTypes(URL url) methods. If your MimeDetector does not handle file names then either throw an UnsupportedOperationException or return an empty collection.

Parameters:
fileName -
Returns:
Collection of matched MimeType(s)
Throws:
UnsupportedOperationException

getMimeTypesFile

protected abstract Collection getMimeTypesFile(File file)
                                        throws UnsupportedOperationException
Abstract method that must be implemented by concrete MimeDetector(s). This takes a file object and is called by the MimeUtil getMimeTypes(File file) method. If your MimeDetector does not handle file names then either throw an UnsupportedOperationException or return an empty collection.

Parameters:
file -
Returns:
Collection of matched MimeType(s)
Throws:
UnsupportedOperationException

getMimeTypesURL

protected abstract Collection getMimeTypesURL(URL url)
                                       throws UnsupportedOperationException
Abstract method that must be implemented by concrete MimeDetector(s). This takes a URL object and is called by the MimeUtil getMimeTypes(URL url) method. If your MimeDetector does not handle file names then either throw an UnsupportedOperationException or return an empty collection.

Parameters:
file -
Returns:
Collection of matched MimeType(s)
Throws:
UnsupportedOperationException

getMimeTypesInputStream

protected abstract Collection getMimeTypesInputStream(InputStream in)
                                               throws UnsupportedOperationException
Abstract method that must be implemented by concrete MimeDetector(s). This takes an InputStream object and is called by the MimeUtil getMimeTypes(URL url), getMimeTypes(File file) and getMimeTypes(InputStream in) methods. If your MimeDetector does not handle InputStream objects then either throw an UnsupportedOperationException or return an empty collection.

If the InputStream passed in does not support the mark() and reset() methods a MimeException will be thrown before reaching this point. The implementation is responsible for the actual use of the mark() and reset() methods as the amount of data to retrieve from the stream is implementation and even call by call dependent. If you do not use the mark() and reset() methods on the Stream then the position in the Stream will have moved on when this method returns and the next MimeDetector that handles the stream will either fail or be incorrect.

To allow the reuse of the Stream in other parts of your code and by further MimeDetector(s) in a way that it is unaware of any data read via this method i.e. the Stream position will be returned to where it was when this method was called, it is IMPORTANT to utilise the mark() and reset() methods within your implementing method.

Parameters:
in - InputStream.
Returns:
Collection of matched MimeType(s)
Throws:
UnsupportedOperationException

getMimeTypesByteArray

protected abstract Collection getMimeTypesByteArray(byte[] data)
                                             throws UnsupportedOperationException
Abstract method that must be implemented by concrete MimeDetector(s). This takes a byte [] object and is called by the MimeUtil getMimeTypes(byte []) method. If your MimeDetector does not handle byte [] objects then either throw an UnsupportedOperationException or return an empty collection.

Parameters:
data - byte []. Is a byte array that you want to parse for matching mime types.
Returns:
Collection of matched MimeType(s)
Throws:
UnsupportedOperationException

closeStream

protected static InputStream closeStream(InputStream in)


Copyright © 2007-2010 Medsea Business Solutions S.L.. All Rights Reserved.