/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ package org.pentaho.di.job.entries.getpop; import org.pentaho.di.i18n.BaseMessages; /** * MailConnection handles the process of connecting to, reading from POP3/IMAP. * * @author Samatar * @since 01-04-2009 * */ public class MailConnectionMeta { private static Class<?> PKG = JobEntryGetPOP.class; // for i18n purposes, needed by Translator2!! public static final String FOLDER_SEPARATOR = "/"; public static final int PROTOCOL_POP3 = 0; public static final int PROTOCOL_IMAP = 1; public static final int PROTOCOL_MBOX = 2; public static final String INBOX_FOLDER = "INBOX"; public static final String PROTOCOL_STRING_IMAP = "IMAP"; public static final String PROTOCOL_STRING_POP3 = "POP3"; public static final String[] protocolCodes = new String[] { "POP3", "IMAP", "MBOX" }; public static final String PROTOCOL_STRING_MBOX = protocolCodes[PROTOCOL_MBOX]; public static final int DEFAULT_IMAP_PORT = 110; public static final int DEFAULT_POP3_PORT = 110; public static final int DEFAULT_SSL_POP3_PORT = 995; public static final int DEFAULT_SSL_IMAP_PORT = 993; public static final String[] actionTypeDesc = new String[] { BaseMessages.getString( PKG, "JobGetPOP.ActionType.GetMessages.Label" ), BaseMessages.getString( PKG, "JobGetPOP.ActionType.MoveMessages.Label" ), BaseMessages.getString( PKG, "JobGetPOP.ActionType.DeleteMessages.Label" ), }; public static final String[] actionTypeCode = new String[] { "get", "move", "delete" }; public static final int ACTION_TYPE_GET = 0; public static final int ACTION_TYPE_MOVE = 1; public static final int ACTION_TYPE_DELETE = 2; public static final String[] conditionDateDesc = new String[] { BaseMessages.getString( PKG, "JobGetPOP.ConditionIgnore.Label" ), BaseMessages.getString( PKG, "JobGetPOP.ConditionEqual.Label" ), BaseMessages.getString( PKG, "JobGetPOP.ConditionSmaller.Label" ), BaseMessages.getString( PKG, "JobGetPOP.ConditionGreater.Label" ), BaseMessages.getString( PKG, "JobGetPOP.ConditionBetween.Label" ) }; public static final String[] conditionDateCode = new String[] { "ignore", "equal", "smaller", "greater", "between" }; public static final int CONDITION_DATE_IGNORE = 0; public static final int CONDITION_DATE_EQUAL = 1; public static final int CONDITION_DATE_SMALLER = 2; public static final int CONDITION_DATE_GREATER = 3; public static final int CONDITION_DATE_BETWEEN = 4; public static final String[] valueIMAPListDesc = new String[] { BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetAll.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetNew.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetOld.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetRead.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetUnread.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetFlagged.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetUnFlagged.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetDraft.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetNotDraft.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetAnswered.Label" ), BaseMessages.getString( PKG, "JobGetPOP.IMAPListGetNotAnswered.Label" ), }; public static final String[] valueIMAPListCode = new String[] { "imaplistall", "imaplistnew", "imaplistold", "imaplistread", "imaplistunread", "imaplistflagged", "imaplistnotflagged", "imaplistdraft", "imaplistnotdraft", "imaplistanswered", "imaplistnotanswered" }; public static final int VALUE_IMAP_LIST_ALL = 0; public static final int VALUE_IMAP_LIST_NEW = 1; public static final int VALUE_IMAP_LIST_OLD = 2; public static final int VALUE_IMAP_LIST_READ = 3; public static final int VALUE_IMAP_LIST_UNREAD = 4; public static final int VALUE_IMAP_LIST_FLAGGED = 5; public static final int VALUE_IMAP_LIST_NOT_FLAGGED = 6; public static final int VALUE_IMAP_LIST_DRAFT = 7; public static final int VALUE_IMAP_LIST_NOT_DRAFT = 8; public static final int VALUE_IMAP_LIST_ANWERED = 9; public static final int VALUE_IMAP_LIST_NOT_ANSWERED = 10; public static final String[] afterGetIMAPDesc = new String[] { BaseMessages.getString( PKG, "JobGetPOP.afterGetIMAP.Nothing.Label" ), BaseMessages.getString( PKG, "JobGetPOP.afterGetIMAP.Delete.Label" ), BaseMessages.getString( PKG, "JobGetPOP.afterGetIMAP.MoveTo.Label" ) }; public static final String[] afterGetIMAPCode = new String[] { "nothing", "delete", "move" }; public static final int AFTER_GET_IMAP_NOTHING = 0; public static final int AFTER_GET_IMAP_DELETE = 1; public static final int AFTER_GET_IMAP_MOVE = 2; public MailConnectionMeta() { super(); } public static String getValueImapListCode( int i ) { if ( i < 0 || i >= valueIMAPListCode.length ) { return valueIMAPListCode[0]; } return valueIMAPListCode[i]; } public static int getConditionByCode( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < conditionDateCode.length; i++ ) { if ( conditionDateCode[i].equalsIgnoreCase( tt ) ) { return i; } } return 0; } public static int getActionTypeByCode( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < actionTypeCode.length; i++ ) { if ( actionTypeCode[i].equalsIgnoreCase( tt ) ) { return i; } } return 0; } public static int getAfterGetIMAPByCode( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < afterGetIMAPCode.length; i++ ) { if ( afterGetIMAPCode[i].equalsIgnoreCase( tt ) ) { return i; } } return 0; } public static int getValueImapListByCode( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < valueIMAPListCode.length; i++ ) { if ( valueIMAPListCode[i].equalsIgnoreCase( tt ) ) { return i; } } return 0; } public static int getValueListImapListByCode( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < valueIMAPListCode.length; i++ ) { if ( valueIMAPListCode[i].equalsIgnoreCase( tt ) ) { return i; } } return 0; } public static String getActionTypeCode( int i ) { if ( i < 0 || i >= actionTypeCode.length ) { return actionTypeCode[0]; } return actionTypeCode[i]; } public static String getAfterGetIMAPCode( int i ) { if ( i < 0 || i >= afterGetIMAPCode.length ) { return afterGetIMAPCode[0]; } return afterGetIMAPCode[i]; } public static String getConditionDateCode( int i ) { if ( i < 0 || i >= conditionDateCode.length ) { return conditionDateCode[0]; } return conditionDateCode[i]; } public static int getValueImapListByDesc( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < valueIMAPListDesc.length; i++ ) { if ( valueIMAPListDesc[i].equalsIgnoreCase( tt ) ) { return i; } } // If this fails, try to match using the code. return getValueImapListByCode( tt ); } public static String getConditionDateDesc( int i ) { if ( i < 0 || i >= conditionDateDesc.length ) { return conditionDateDesc[0]; } return conditionDateDesc[i]; } public static String getActionTypeDesc( int i ) { if ( i < 0 || i >= actionTypeDesc.length ) { return actionTypeDesc[0]; } return actionTypeDesc[i]; } public static String getAfterGetIMAPDesc( int i ) { if ( i < 0 || i >= afterGetIMAPDesc.length ) { return afterGetIMAPDesc[0]; } return afterGetIMAPDesc[i]; } public static String getValueImapListDesc( int i ) { if ( i < 0 || i >= valueIMAPListDesc.length ) { return valueIMAPListDesc[0]; } return valueIMAPListDesc[i]; } public static int getConditionDateByDesc( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < conditionDateDesc.length; i++ ) { if ( conditionDateDesc[i].equalsIgnoreCase( tt ) ) { return i; } } // If this fails, try to match using the code. return getConditionDateByCode( tt ); } public static int getActionTypeByDesc( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < actionTypeDesc.length; i++ ) { if ( actionTypeDesc[i].equalsIgnoreCase( tt ) ) { return i; } } // If this fails, try to match using the code. return getActionTypeByCode( tt ); } public static int getAfterGetIMAPByDesc( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < afterGetIMAPDesc.length; i++ ) { if ( afterGetIMAPDesc[i].equalsIgnoreCase( tt ) ) { return i; } } // If this fails, try to match using the code. return getAfterGetIMAPByCode( tt ); } public static int getConditionDateByCode( String tt ) { if ( tt == null ) { return 0; } for ( int i = 0; i < conditionDateCode.length; i++ ) { if ( conditionDateCode[i].equalsIgnoreCase( tt ) ) { return i; } } return 0; } public static int getProtocolFromString( String protocolCode, int defaultProtocol ) { if ( protocolCode == null ) { return defaultProtocol; } if ( protocolCode.toUpperCase().equals( PROTOCOL_STRING_IMAP ) ) { return PROTOCOL_IMAP; } else if ( protocolCode.toUpperCase().equals( PROTOCOL_STRING_POP3 ) ) { return PROTOCOL_POP3; } else if ( protocolCode.toUpperCase().equals( PROTOCOL_STRING_MBOX ) ) { return PROTOCOL_MBOX; } return defaultProtocol; } }