Search in sources :

Example 16 with ProcessingException

use of org.eclipse.scout.rt.platform.exception.ProcessingException in project scout.rt by eclipse.

the class RemoteFileService method getRemoteFileInternal.

private RemoteFile getRemoteFileInternal(RemoteFile spec, boolean includeContent, long startPosition, long maxBlockSize) {
    File file = getFileInternal(spec);
    RemoteFile result = new RemoteFile(spec.getDirectory(), file.getName(), spec.getLocale(), -1, spec.getCharsetName());
    result.setContentType(spec.getContentType());
    if (!StringUtility.hasText(result.getContentType())) {
        int pos = result.getName().lastIndexOf('.');
        String ext = "";
        if (pos >= 0) {
            ext = result.getName().substring(pos + 1);
        }
        result.setContentTypeByExtension(ext);
    }
    // 
    if (file.exists()) {
        result.setExists(true);
        result.setLastModified(file.lastModified());
        long partLength = file.length();
        if (maxBlockSize > -1 && partLength > maxBlockSize) {
            partLength = partLength - startPosition;
            if (partLength > maxBlockSize) {
                partLength = maxBlockSize;
            }
            if (partLength <= 0) {
                partLength = 0;
            }
        }
        result.setContentLength((int) partLength);
        if (!includeContent) {
        // no content requested
        } else if (ObjectUtility.equals(spec.getName(), result.getName()) && result.getLastModified() <= spec.getLastModified() && result.getPartStartPosition() == spec.getPartStartPosition()) {
        // no content change, keep null
        } else {
            try (InputStream in = new FileInputStream(file)) {
                result.readData(in, startPosition, maxBlockSize);
            } catch (IOException e) {
                throw new ProcessingException("error reading file: " + file.getAbsolutePath(), e);
            }
        }
    }
    return result;
}
Also used : BufferedInputStream(java.io.BufferedInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) IOException(java.io.IOException) File(java.io.File) RemoteFile(org.eclipse.scout.rt.shared.services.common.file.RemoteFile) RemoteFile(org.eclipse.scout.rt.shared.services.common.file.RemoteFile) FileInputStream(java.io.FileInputStream) ProcessingException(org.eclipse.scout.rt.platform.exception.ProcessingException)

Example 17 with ProcessingException

use of org.eclipse.scout.rt.platform.exception.ProcessingException in project scout.rt by eclipse.

the class AbstractIMAPService method closeConnection.

public void closeConnection() {
    try {
        m_folder.close(true);
        m_folder = null;
        m_store.close();
        m_store = null;
        m_opened = false;
    } catch (MessagingException e) {
        throw new ProcessingException(e.getMessage(), e);
    } finally {
        if (m_folder != null) {
            try {
                m_folder.close(false);
            } catch (MessagingException e) {
                LOG.warn("Could not close folder", e);
            }
        }
        if (m_store != null) {
            try {
                m_store.close();
            } catch (MessagingException e) {
                LOG.warn("Could not close store", e);
            }
        }
    }
}
Also used : MessagingException(javax.mail.MessagingException) ProcessingException(org.eclipse.scout.rt.platform.exception.ProcessingException)

Example 18 with ProcessingException

use of org.eclipse.scout.rt.platform.exception.ProcessingException in project scout.rt by eclipse.

the class ImapAdapter method copyMessages.

protected void copyMessages(String destFolderName, Message[] messages, boolean deleteSourceMessages) {
    connect();
    Folder destFolder = null;
    try {
        destFolder = findFolder(destFolderName);
        if (destFolder != null) {
            Map<Folder, Set<Message>> messagesBySourceFolder = groupMessagesBySourceFolder(messages);
            for (Entry<Folder, Set<Message>> entry : messagesBySourceFolder.entrySet()) {
                final Folder sourceFolder = entry.getKey();
                final Set<Message> messageSet = entry.getValue();
                Message[] messagesForSourceFolder = messageSet.toArray(new Message[messageSet.size()]);
                // use copyMessages instead of appendMessages because this can be optimized by the mail-server
                sourceFolder.copyMessages(messagesForSourceFolder, destFolder);
                if (deleteSourceMessages) {
                    deleteMessagesPermanently(messagesForSourceFolder);
                }
            }
        }
    } catch (MessagingException e) {
        throw new ProcessingException(e.getMessage(), e);
    }
}
Also used : Set(java.util.Set) HashSet(java.util.HashSet) Message(javax.mail.Message) MessagingException(javax.mail.MessagingException) Folder(javax.mail.Folder) ProcessingException(org.eclipse.scout.rt.platform.exception.ProcessingException)

Example 19 with ProcessingException

use of org.eclipse.scout.rt.platform.exception.ProcessingException in project scout.rt by eclipse.

the class ImapAdapter method getUnseenMessages.

@Override
public Message[] getUnseenMessages(String folderName) {
    connect();
    ArrayList<Message> messages = new ArrayList<Message>();
    Folder folder = null;
    try {
        folder = findFolder(folderName);
        if (folder != null) {
            Message item;
            Message[] m = folder.getMessages();
            for (int i = 0; i < Array.getLength(m); i++) {
                item = m[i];
                if (!item.isSet(Flags.Flag.SEEN)) {
                    messages.add(item);
                }
            }
        }
    } catch (MessagingException e) {
        throw new ProcessingException(e.getMessage(), e);
    }
    return messages.toArray(new Message[messages.size()]);
}
Also used : Message(javax.mail.Message) MessagingException(javax.mail.MessagingException) ArrayList(java.util.ArrayList) Folder(javax.mail.Folder) ProcessingException(org.eclipse.scout.rt.platform.exception.ProcessingException)

Example 20 with ProcessingException

use of org.eclipse.scout.rt.platform.exception.ProcessingException in project scout.rt by eclipse.

the class ImapAdapter method closeConnection.

@Override
public void closeConnection() {
    if (isConnected()) {
        List<MessagingException> exceptions = new ArrayList<MessagingException>();
        for (Folder folder : m_cachedFolders.values()) {
            try {
                if (folder.isOpen()) {
                    folder.close(true);
                }
            } catch (MessagingException e) {
                exceptions.add(e);
            } finally {
                try {
                    if (folder.isOpen()) {
                        folder.close(false);
                    }
                } catch (MessagingException e) {
                    LOG.warn("Could not close folder", e);
                }
            }
        }
        try {
            if (m_store.isConnected()) {
                m_store.close();
            }
        } catch (MessagingException e) {
            exceptions.add(e);
        }
        m_cachedFolders.clear();
        if (!exceptions.isEmpty()) {
            throw new ProcessingException(exceptions.get(0).getMessage());
        }
    }
}
Also used : MessagingException(javax.mail.MessagingException) ArrayList(java.util.ArrayList) Folder(javax.mail.Folder) ProcessingException(org.eclipse.scout.rt.platform.exception.ProcessingException)

Aggregations

ProcessingException (org.eclipse.scout.rt.platform.exception.ProcessingException)142 IOException (java.io.IOException)48 MessagingException (javax.mail.MessagingException)21 Test (org.junit.Test)19 ArrayList (java.util.ArrayList)17 File (java.io.File)14 VetoException (org.eclipse.scout.rt.platform.exception.VetoException)12 Folder (javax.mail.Folder)10 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)9 RemoteFile (org.eclipse.scout.rt.shared.services.common.file.RemoteFile)9 NoSuchProviderException (java.security.NoSuchProviderException)8 AssertionException (org.eclipse.scout.rt.platform.util.Assertions.AssertionException)8 FileInputStream (java.io.FileInputStream)7 InputStream (java.io.InputStream)7 UnsupportedEncodingException (java.io.UnsupportedEncodingException)7 FileOutputStream (java.io.FileOutputStream)6 Message (javax.mail.Message)6 ByteArrayOutputStream (java.io.ByteArrayOutputStream)5 OutputStream (java.io.OutputStream)5 HashMap (java.util.HashMap)5