package ca.metalogic.construction.listener;


import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Vector;
import java.util.Map.Entry;

import lotus.domino.Database;
import lotus.domino.EmbeddedObject;
import lotus.domino.NotesException;
import lotus.domino.NotesFactory;
import lotus.domino.RichTextItem;
import lotus.domino.Session;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import org.nuxeo.common.utils.IdUtils;
import org.nuxeo.ecm.core.api.Blob;
import org.nuxeo.ecm.core.api.ClientException;
import org.nuxeo.ecm.core.api.CoreSession;
import org.nuxeo.ecm.core.api.DocumentModel;
import org.nuxeo.ecm.core.api.impl.blob.FileBlob;
import org.nuxeo.ecm.core.api.repository.RepositoryManager;
import org.nuxeo.ecm.core.event.Event;
import org.nuxeo.ecm.core.event.EventContext;
import org.nuxeo.ecm.core.event.EventListener;
import org.nuxeo.runtime.api.Framework;

import ca.metalogic.construction.Domino;

public class DominoListenerV1 implements EventListener {
    
    protected static final String DOCUMENT_NAMESPACE = "http://www.nuxeo.org/document/uid/";
    
    private static final long serialVersionUID = -777566085441876817L;
    private static final Log log = LogFactory.getLog(DominoListener.class);
    
    private Session _dominoSession;
    private Database _dominoDatabase;    
    private Domino domino;
    private CoreSession documentManager;

    //private Session _dominoSession;
    //private Database _dominoDatabase;
    
    protected static final String DOCUMENT_ROOT = "/default-domain/workspaces/bruce/email-archive";

    public void handleEvent(Event event) throws ClientException {

        if ("NotesImport".equals(event.getName())) {
            handleNotesEvent(event);
        }
    }

    protected void handleNotesEvent(Event event) throws ClientException {
        
        documentManager = null;
        
        try {
            Framework.login("Administrator", "Administrator");
            documentManager = Framework.getService(RepositoryManager.class).getDefaultRepository().open();
            
        } catch (Exception e1) {
            log.info("DominoListener: NotesEvent handling abandoned, because could not open repository");
            e1.printStackTrace();
            return;
        }
        
        if (documentManager == null) {
            log.info("Domino Listener: CoreSession (documentManager) is null");
        }

        try {
            importFromLotusNotes();
            
        } catch (Exception e) {
                
            log.info("Domino Listener: Failed to import email from ...");
            e.printStackTrace();
               
        } finally {
            documentManager.destroy();   
        }
    }

    // import email from Lotus Notes 
    public boolean importFromLotusNotes() throws ClientException, IOException {
        
        // code truncated...
        
        return true;
    }
}
