/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.mail.reader.service.impl;
import com.liferay.mail.reader.model.Folder;
import com.liferay.mail.reader.service.base.FolderLocalServiceBaseImpl;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.User;
import com.liferay.portal.kernel.search.Indexer;
import com.liferay.portal.kernel.search.IndexerRegistryUtil;
import java.util.Date;
import java.util.List;
/**
* @author Scott Lee
*/
public class FolderLocalServiceImpl extends FolderLocalServiceBaseImpl {
@Override
public Folder addFolder(
long userId, long accountId, String fullName, String displayName,
int remoteMessageCount)
throws PortalException {
User user = userLocalService.getUser(userId);
Date now = new Date();
long folderId = counterLocalService.increment();
Folder folder = folderPersistence.create(folderId);
folder.setCompanyId(user.getCompanyId());
folder.setUserId(user.getUserId());
folder.setUserName(user.getFullName());
folder.setCreateDate(now);
folder.setModifiedDate(now);
folder.setAccountId(accountId);
folder.setFullName(fullName);
folder.setDisplayName(displayName);
folder.setRemoteMessageCount(remoteMessageCount);
folderPersistence.update(folder);
return folder;
}
@Override
public Folder deleteFolder(Folder folder) throws PortalException {
// Folder
folderPersistence.remove(folder);
// Messages
messageLocalService.deleteMessages(folder.getFolderId());
// Indexer
Indexer<Folder> indexer = IndexerRegistryUtil.getIndexer(Folder.class);
indexer.delete(folder);
return folder;
}
@Override
public Folder deleteFolder(long folderId) throws PortalException {
Folder folder = folderPersistence.findByPrimaryKey(folderId);
return deleteFolder(folder);
}
@Override
public void deleteFolders(long accountId) throws PortalException {
List<Folder> folders = folderPersistence.findByAccountId(accountId);
for (Folder folder : folders) {
deleteFolder(folder);
}
}
@Override
public Folder getFolder(long accountId, String fullName)
throws PortalException {
return folderPersistence.findByA_F(accountId, fullName);
}
@Override
public List<Folder> getFolders(long accountId) {
return folderPersistence.findByAccountId(accountId);
}
@Override
public int getLocalPageCount(long folderId, int messagesPerPage) {
int localMessageCount = messagePersistence.countByFolderId(folderId);
return (int)Math.ceil(localMessageCount / (double)messagesPerPage);
}
@Override
public int getPercentDownloaded(long folderId) throws PortalException {
Folder folder = folderPersistence.findByPrimaryKey(folderId);
int remoteMessageCount = folder.getRemoteMessageCount();
if (remoteMessageCount == 0) {
return 100;
}
int localMessageCount = messagePersistence.countByFolderId(folderId);
return (int)((localMessageCount / (double)remoteMessageCount) * 100);
}
@Override
public int getRemotePageCount(long folderId, int messagesPerPage)
throws PortalException {
Folder folder = folderPersistence.findByPrimaryKey(folderId);
int remoteMessageCount = folder.getRemoteMessageCount();
return (int)Math.ceil(remoteMessageCount / (double)messagesPerPage);
}
@Override
public Folder updateFolder(
long folderId, String fullName, String displayName,
int remoteMessageCount)
throws PortalException {
Folder folder = folderPersistence.findByPrimaryKey(folderId);
folder.setModifiedDate(new Date());
folder.setFullName(fullName);
folder.setDisplayName(displayName);
folder.setRemoteMessageCount(remoteMessageCount);
folderPersistence.update(folder);
return folder;
}
}