// Path: src/java/com/idega/block/email/bean/FoundMessagesInfo.java
// public class FoundMessagesInfo implements Serializable {
// 
// 	private static final long serialVersionUID = 5549581211079663255L;
// 
// 	private Collection<Message> messages;
// 	
// 	private MessageParserType parserType;
// 
// 	private String identifier;
// 	
// 	public FoundMessagesInfo(MessageParserType parserType) {
// 		this.parserType = parserType;
// 	}
// 	
// 	public FoundMessagesInfo(String identifier, MessageParserType parserType) {
// 		this(parserType);
// 		
// 		this.identifier = identifier;
// 	}
// 	
// 	public FoundMessagesInfo(Collection<Message> messages, MessageParserType parserType) {
// 		this(parserType);
// 		
// 		this.messages = messages == null ? null : new ArrayList<Message>(messages);
// 	}
// 	
// 	public Collection<Message> getMessages() {
// 		return messages;
// 	}
// 
// 	public MessageParserType getParserType() {
// 		return parserType;
// 	}
// 	
// 	public void addMessage(Message message) {
// 		if (messages == null) {
// 			messages = new ArrayList<Message>();
// 		}
// 		messages.add(message);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Identifier: " + identifier + ", type: " + parserType + ", messages: " + getMessages();
// 	}
// 
// 	public String getIdentifier() {
// 		return identifier;
// 	}
// 
// 	public void setIdentifier(String identifier) {
// 		this.identifier = identifier;
// 	}	
// 	
// }
// 
// Path: src/java/com/idega/block/email/bean/MessageParserType.java
// public enum MessageParserType {
// 
// 	MAILING_LIST, BPM, MANUAL
// }
// 
// Path: src/java/com/idega/block/email/client/business/ApplicationEmailEvent.java
// public class ApplicationEmailEvent extends ApplicationEvent {
//     
// 	private static final long serialVersionUID = -1382336725088284318L;
//    
// 	private Map<String, FoundMessagesInfo> messages;
// 	private MessageParameters parameters;
// 	private EmailParams emailParams;
//     
//     public ApplicationEmailEvent(Object source) {
//     	super(source);
//     }
//     
//     public Map<String, FoundMessagesInfo> getMessages() {
//         return messages;
//     }
//     
//     public void setMessages(Map<String, FoundMessagesInfo> messages) {
//         this.messages = messages;
//     }
// 
// 	public MessageParameters getParameters() {
// 		return parameters;
// 	}
// 
// 	public void setParameters(MessageParameters parameters) {
// 		this.parameters = parameters;
// 	}
// 
// 	public EmailParams getEmailParams() {
// 		return emailParams;
// 	}
// 
// 	public void setEmailParams(EmailParams emailParams) {
// 		this.emailParams = emailParams;
// 	}
// 
// }
// 
// Path: src/java/com/idega/block/email/client/business/EmailParams.java
// public class EmailParams {
// 
// 	private Folder folder;
// 	private String hostname;
// 	private String username;
// 	private String password;
// 	private Session session;
// 	private Store store;
// 	private String protocol;
// 	private Message[] messagesFound;
// 	
// 	private boolean loggedOut;
// 	
// 	public Message[] getMessagesFound() {
// 		return messagesFound;
// 	}
// 	public void setMessagesFound(Message[] messagesFound) {
// 		this.messagesFound = messagesFound;
// 	}
// 	public Folder getFolder() {
// 		return folder;
// 	}
// 	public void setFolder(Folder folder) {
// 		this.folder = folder;
// 	}
// 	public String getHostname() {
// 		return hostname;
// 	}
// 	public void setHostname(String hostname) {
// 		this.hostname = hostname;
// 	}
// 	public String getUsername() {
// 		return username;
// 	}
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 	public String getPassword() {
// 		return password;
// 	}
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 	public Session getSession() {
// 		return session;
// 	}
// 	public void setSession(Session session) {
// 		this.session = session;
// 	}
// 	public Store getStore() {
// 		return store;
// 	}
// 	public void setStore(Store store) {
// 		this.store = store;
// 	}
// 	public String getProtocol() {
// 		return protocol;
// 	}
// 	public void setProtocol(String protocol) {
// 		this.protocol = protocol;
// 	}
// 	public boolean isLoggedOut() {
// 		return loggedOut;
// 	}
// 	public void setLoggedOut(boolean loggedOut) {
// 		this.loggedOut = loggedOut;
// 	}
// 	
// }


import java.util.Collection;
import java.util.Map;
import javax.mail.Message;
import javax.mail.MessagingException;
import com.idega.block.email.bean.FoundMessagesInfo;
import com.idega.block.email.bean.MessageParserType;
import com.idega.block.email.client.business.ApplicationEmailEvent;
import com.idega.block.email.client.business.EmailParams;
import com.idega.core.messaging.EmailMessage;
package com.idega.block.email.parser;




/**
 * Interface for e-mails' parser
 * 
 * @author <a href="mailto:valdas@idega.com">Valdas Žemaitis</a>
 * @version $Revision: 1.1 $ Last modified: $Date: 2009/04/22 12:55:16 $ by $Author: valdas $
 */
public interface EmailParser {
	
	public abstract Collection<? extends EmailMessage> getParsedMessagesCollection(Map<String, FoundMessagesInfo> messages, EmailParams params);
	
	public abstract Collection<? extends EmailMessage> getParsedMessages(ApplicationEmailEvent emailEvent);
	
// Path: src/java/com/idega/block/email/bean/FoundMessagesInfo.java
// public class FoundMessagesInfo implements Serializable {
// 
// 	private static final long serialVersionUID = 5549581211079663255L;
// 
// 	private Collection<Message> messages;
// 	
// 	private MessageParserType parserType;
// 
// 	private String identifier;
// 	
// 	public FoundMessagesInfo(MessageParserType parserType) {
// 		this.parserType = parserType;
// 	}
// 	
// 	public FoundMessagesInfo(String identifier, MessageParserType parserType) {
// 		this(parserType);
// 		
// 		this.identifier = identifier;
// 	}
// 	
// 	public FoundMessagesInfo(Collection<Message> messages, MessageParserType parserType) {
// 		this(parserType);
// 		
// 		this.messages = messages == null ? null : new ArrayList<Message>(messages);
// 	}
// 	
// 	public Collection<Message> getMessages() {
// 		return messages;
// 	}
// 
// 	public MessageParserType getParserType() {
// 		return parserType;
// 	}
// 	
// 	public void addMessage(Message message) {
// 		if (messages == null) {
// 			messages = new ArrayList<Message>();
// 		}
// 		messages.add(message);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Identifier: " + identifier + ", type: " + parserType + ", messages: " + getMessages();
// 	}
// 
// 	public String getIdentifier() {
// 		return identifier;
// 	}
// 
// 	public void setIdentifier(String identifier) {
// 		this.identifier = identifier;
// 	}	
// 	
// }
// 
// Path: src/java/com/idega/block/email/bean/MessageParserType.java
// public enum MessageParserType {
// 
// 	MAILING_LIST, BPM, MANUAL
// }
// 
// Path: src/java/com/idega/block/email/client/business/ApplicationEmailEvent.java
// public class ApplicationEmailEvent extends ApplicationEvent {
//     
// 	private static final long serialVersionUID = -1382336725088284318L;
//    
// 	private Map<String, FoundMessagesInfo> messages;
// 	private MessageParameters parameters;
// 	private EmailParams emailParams;
//     
//     public ApplicationEmailEvent(Object source) {
//     	super(source);
//     }
//     
//     public Map<String, FoundMessagesInfo> getMessages() {
//         return messages;
//     }
//     
//     public void setMessages(Map<String, FoundMessagesInfo> messages) {
//         this.messages = messages;
//     }
// 
// 	public MessageParameters getParameters() {
// 		return parameters;
// 	}
// 
// 	public void setParameters(MessageParameters parameters) {
// 		this.parameters = parameters;
// 	}
// 
// 	public EmailParams getEmailParams() {
// 		return emailParams;
// 	}
// 
// 	public void setEmailParams(EmailParams emailParams) {
// 		this.emailParams = emailParams;
// 	}
// 
// }
// 
// Path: src/java/com/idega/block/email/client/business/EmailParams.java
// public class EmailParams {
// 
// 	private Folder folder;
// 	private String hostname;
// 	private String username;
// 	private String password;
// 	private Session session;
// 	private Store store;
// 	private String protocol;
// 	private Message[] messagesFound;
// 	
// 	private boolean loggedOut;
// 	
// 	public Message[] getMessagesFound() {
// 		return messagesFound;
// 	}
// 	public void setMessagesFound(Message[] messagesFound) {
// 		this.messagesFound = messagesFound;
// 	}
// 	public Folder getFolder() {
// 		return folder;
// 	}
// 	public void setFolder(Folder folder) {
// 		this.folder = folder;
// 	}
// 	public String getHostname() {
// 		return hostname;
// 	}
// 	public void setHostname(String hostname) {
// 		this.hostname = hostname;
// 	}
// 	public String getUsername() {
// 		return username;
// 	}
// 	public void setUsername(String username) {
// 		this.username = username;
// 	}
// 	public String getPassword() {
// 		return password;
// 	}
// 	public void setPassword(String password) {
// 		this.password = password;
// 	}
// 	public Session getSession() {
// 		return session;
// 	}
// 	public void setSession(Session session) {
// 		this.session = session;
// 	}
// 	public Store getStore() {
// 		return store;
// 	}
// 	public void setStore(Store store) {
// 		this.store = store;
// 	}
// 	public String getProtocol() {
// 		return protocol;
// 	}
// 	public void setProtocol(String protocol) {
// 		this.protocol = protocol;
// 	}
// 	public boolean isLoggedOut() {
// 		return loggedOut;
// 	}
// 	public void setLoggedOut(boolean loggedOut) {
// 		this.loggedOut = loggedOut;
// 	}
// 	
// }


// Path: src/java/com/idega/block/email/parser/EmailParser.java
import java.util.Collection;
import java.util.Map;
import javax.mail.Message;
import javax.mail.MessagingException;
import com.idega.block.email.bean.FoundMessagesInfo;
import com.idega.block.email.bean.MessageParserType;
import com.idega.block.email.client.business.ApplicationEmailEvent;
import com.idega.block.email.client.business.EmailParams;
import com.idega.core.messaging.EmailMessage;

package com.idega.block.email.parser;




/**
 * Interface for e-mails' parser
 * 
 * @author <a href="mailto:valdas@idega.com">Valdas Žemaitis</a>
 * @version $Revision: 1.1 $ Last modified: $Date: 2009/04/22 12:55:16 $ by $Author: valdas $
 */
public interface EmailParser {
	
	public abstract Collection<? extends EmailMessage> getParsedMessagesCollection(Map<String, FoundMessagesInfo> messages, EmailParams params);
	
	public abstract Collection<? extends EmailMessage> getParsedMessages(ApplicationEmailEvent emailEvent);
	
	public abstract Map<String, Collection<? extends EmailMessage>> getParsedMessages(Map<String, FoundMessagesInfo> messages, EmailParams params);