Class JavamailDocumentCollection
- java.lang.Object
-
- it.unimi.di.big.mg4j.document.AbstractDocumentSequence
-
- it.unimi.di.big.mg4j.document.AbstractDocumentCollection
-
- it.unimi.di.big.mg4j.document.JavamailDocumentCollection
-
- All Implemented Interfaces:
DocumentCollection,DocumentSequence,SafelyCloseable,FlyweightPrototype<DocumentCollection>,Closeable,Serializable,AutoCloseable
public class JavamailDocumentCollection extends AbstractDocumentCollection implements Serializable
ADocumentCollectioncorresponding to a JavamailStore.This class is very simple: for instance, it will not understand correctly multipart MIME messages, which will seen as without content. You are invited to extend it.
This implementation is an example of a document collection that does not use a factory: more precisely, there is an internal class that act as a wired factory. This structure is made necessary by the fact that Javamail provide no means to parse messages starting from an
InputStream, which makes a separate implementation ofDocumentFactory.getDocument(InputStream,Reference2ObjectMap)impossible.Note that to be able to use this class you must configure properly Javamail: this involves setting up a javamail.properties file describing the providers you want to use for the various access schemes. GNU Javamail, for instance, contains providers for files, IMAP, POP, etc.
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class it.unimi.di.big.mg4j.document.AbstractDocumentCollection
AbstractDocumentCollection.PropertyKeys
-
-
Field Summary
Fields Modifier and Type Field Description static DateNO_DATEA special date (actually, 1 January 1970) representing no date.-
Fields inherited from interface it.unimi.di.big.mg4j.document.DocumentCollection
DEFAULT_EXTENSION
-
-
Constructor Summary
Constructors Modifier Constructor Description JavamailDocumentCollection(String storeUrl, String folderName)protectedJavamailDocumentCollection(String storeUrl, String folderName, it.unimi.di.big.mg4j.document.JavamailDocumentCollection.JavamailDocumentFactory factory)Builds a document collection corresponding to a given store URL and folder name.JavamailDocumentCollection(String storeUrl, String folderName, Reference2ObjectMap<Enum<?>,Object> defaultMetadata)JavamailDocumentCollection(String storeUrl, String folderName, Properties properties)JavamailDocumentCollection(String storeUrl, String folderName, String[] property)
-
Method Summary
Modifier and Type Method Description voidclose()Closes this document sequence, releasing all resources.JavamailDocumentCollectioncopy()Documentdocument(long index)Returns the document given its index.DocumentFactoryfactory()Returns the factory used by this sequence.static voidmain(String[] arg)Reference2ObjectMap<Enum<?>,Object>metadata(long index)Returns the metadata map for a document.longsize()Returns the number of documents in this collection.InputStreamstream(long index)Returns an input stream for the raw content of a document.-
Methods inherited from class it.unimi.di.big.mg4j.document.AbstractDocumentCollection
ensureDocumentIndex, iterator, printAllDocuments, toString
-
Methods inherited from class it.unimi.di.big.mg4j.document.AbstractDocumentSequence
filename, finalize, load
-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface it.unimi.di.big.mg4j.document.DocumentSequence
filename
-
-
-
-
Field Detail
-
NO_DATE
public static final Date NO_DATE
A special date (actually, 1 January 1970) representing no date.
-
-
Constructor Detail
-
JavamailDocumentCollection
protected JavamailDocumentCollection(String storeUrl, String folderName, it.unimi.di.big.mg4j.document.JavamailDocumentCollection.JavamailDocumentFactory factory) throws javax.mail.MessagingException
Builds a document collection corresponding to a given store URL and folder name.Beware. This class is not suited for large mbox files!
- Parameters:
storeUrl- the javamail URL of the store.folderName- the folder name.factory- the factory that will be used to create documents.- Throws:
javax.mail.MessagingException
-
JavamailDocumentCollection
public JavamailDocumentCollection(String storeUrl, String folderName) throws javax.mail.MessagingException
- Throws:
javax.mail.MessagingException
-
JavamailDocumentCollection
public JavamailDocumentCollection(String storeUrl, String folderName, Properties properties) throws javax.mail.MessagingException, org.apache.commons.configuration.ConfigurationException
- Throws:
javax.mail.MessagingExceptionorg.apache.commons.configuration.ConfigurationException
-
JavamailDocumentCollection
public JavamailDocumentCollection(String storeUrl, String folderName, String[] property) throws javax.mail.MessagingException, org.apache.commons.configuration.ConfigurationException
- Throws:
javax.mail.MessagingExceptionorg.apache.commons.configuration.ConfigurationException
-
JavamailDocumentCollection
public JavamailDocumentCollection(String storeUrl, String folderName, Reference2ObjectMap<Enum<?>,Object> defaultMetadata) throws javax.mail.MessagingException
- Throws:
javax.mail.MessagingException
-
-
Method Detail
-
copy
public JavamailDocumentCollection copy()
- Specified by:
copyin interfaceDocumentCollection- Specified by:
copyin interfaceFlyweightPrototype<DocumentCollection>
-
factory
public DocumentFactory factory()
Description copied from interface:DocumentSequenceReturns the factory used by this sequence.Every document sequence is based on a document factory that transforms raw bytes into a sequence of characters. The factory contains useful information such as the number of fields.
- Specified by:
factoryin interfaceDocumentSequence- Returns:
- the factory used by this sequence.
-
size
public long size()
Description copied from interface:DocumentCollectionReturns the number of documents in this collection.- Specified by:
sizein interfaceDocumentCollection- Returns:
- the number of documents in this collection.
-
close
public void close() throws IOExceptionDescription copied from interface:DocumentSequenceCloses this document sequence, releasing all resources.You should always call this method after having finished with this document sequence. Implementations are invited to call this method in a finaliser as a safety net (even better, implement
SafelyCloseable), but since there is no guarantee as to when finalisers are invoked, you should not depend on this behaviour.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein interfaceDocumentSequence- Overrides:
closein classAbstractDocumentSequence- Throws:
IOException
-
document
public Document document(long index) throws IOException
Description copied from interface:DocumentCollectionReturns the document given its index.- Specified by:
documentin interfaceDocumentCollection- Parameters:
index- an index between 0 (inclusive) andDocumentCollection.size()(exclusive).- Returns:
- the
index-th document. - Throws:
IOException
-
metadata
public Reference2ObjectMap<Enum<?>,Object> metadata(long index)
Description copied from interface:DocumentCollectionReturns the metadata map for a document.- Specified by:
metadatain interfaceDocumentCollection- Parameters:
index- an index between 0 (inclusive) andDocumentCollection.size()(exclusive).- Returns:
- the metadata map for the document.
-
stream
public InputStream stream(long index) throws IOException
Description copied from interface:DocumentCollectionReturns an input stream for the raw content of a document.- Specified by:
streamin interfaceDocumentCollection- Parameters:
index- an index between 0 (inclusive) andDocumentCollection.size()(exclusive).- Returns:
- the raw content of the document as an input stream.
- Throws:
IOException
-
main
public static void main(String[] arg) throws IOException, com.martiansoftware.jsap.JSAPException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, InstantiationException, javax.mail.MessagingException, org.apache.commons.configuration.ConfigurationException
- Throws:
IOExceptioncom.martiansoftware.jsap.JSAPExceptionIllegalAccessExceptionInvocationTargetExceptionNoSuchMethodExceptionInstantiationExceptionjavax.mail.MessagingExceptionorg.apache.commons.configuration.ConfigurationException
-
-