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;
}
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);
}
}
}
}
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);
}
}
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()]);
}
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());
}
}
}
Aggregations