de.saly.elasticsearch.support.IMAPUtils Maven / Gradle / Ivy
/***********************************************************************************************************************
*
* Elasticsearch IMAP River - open source IMAP river for Elasticsearch
* ==========================================
*
* Copyright (C) 2014 by Hendrik Saly (http://saly.de) and others.
*
* Contains (partially) copied code from Jörg Prante's Elasticsearch JDBC river (https://github.com/jprante/elasticsearch-river-jdbc)
*
***********************************************************************************************************************
*
* 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.
*
***********************************************************************************************************************
*
* $Id:$
*
**********************************************************************************************************************/
package de.saly.elasticsearch.support;
import java.util.ArrayList;
import java.util.List;
import javax.mail.FetchProfile;
import javax.mail.FetchProfile.Item;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.MessagingException;
import javax.mail.Store;
import javax.mail.UIDFolder;
import com.sun.mail.imap.IMAPFolder.FetchProfileItem;
public class IMAPUtils {
public static final FetchProfile FETCH_PROFILE_FLAGS_UID = new FetchProfile();
public static final FetchProfile FETCH_PROFILE_HEAD = new FetchProfile();
public static final FetchProfile FETCH_PROFILE_UID = new FetchProfile();
static {
FETCH_PROFILE_HEAD.add(Item.ENVELOPE);
FETCH_PROFILE_HEAD.add(Item.CONTENT_INFO);
FETCH_PROFILE_HEAD.add(FetchProfileItem.HEADERS);
FETCH_PROFILE_FLAGS_UID.add(Item.FLAGS);
FETCH_PROFILE_FLAGS_UID.add(UIDFolder.FetchProfileItem.UID);
FETCH_PROFILE_UID.add(UIDFolder.FetchProfileItem.UID);
}
public static void close(final Folder folder) {
try {
if (folder != null && folder.isOpen()) {
folder.close(false);
}
} catch (final Exception e) {
// ignore
}
}
public static void close(final Store store) {
try {
if (store != null && store.isConnected()) {
store.close();
}
} catch (final Exception e) {
// ignore
}
}
public static void open(final Folder folder) throws MessagingException {
if (folder != null && folder.exists() && !folder.isOpen() && (folder.getType() & Folder.HOLDS_MESSAGES) != 0) {
folder.open(Folder.READ_ONLY);
}
}
public static String[] toStringArray(final Flags flags) {
final List flagsL = new ArrayList(10);
if (flags.contains(Flags.Flag.DELETED)) {
flagsL.add("Deleted");
}
if (flags.contains(Flags.Flag.ANSWERED)) {
flagsL.add("Answered");
}
if (flags.contains(Flags.Flag.DRAFT)) {
flagsL.add("Draft");
}
if (flags.contains(Flags.Flag.FLAGGED)) {
flagsL.add("Flagged");
}
if (flags.contains(Flags.Flag.RECENT)) {
flagsL.add("Recent");
}
if (flags.contains(Flags.Flag.SEEN)) {
flagsL.add("Seen");
}
if (flags.contains(Flags.Flag.USER)) {
final String[] userFlags = flags.getUserFlags();
for (int j = 0; j < userFlags.length; j++) {
flagsL.add(userFlags[j]);
}
}
return flagsL.toArray(new String[flagsL.size()]);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy