Example usage for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_APPROVED

List of usage examples for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_APPROVED

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_APPROVED.

Prototype

int STATUS_APPROVED

To view the source code for com.liferay.portal.kernel.workflow WorkflowConstants STATUS_APPROVED.

Click Source Link

Usage

From source file:com.liferay.portlet.login.action.CreateAccountAction.java

License:Open Source License

protected void addUser(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest);
    HttpSession session = request.getSession();

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    Company company = themeDisplay.getCompany();

    boolean autoPassword = true;
    String password1 = null;//from   www  .  j ava  2  s  .c o  m
    String password2 = null;
    boolean autoScreenName = isAutoScreenName();
    String screenName = ParamUtil.getString(actionRequest, "screenName");
    String emailAddress = ParamUtil.getString(actionRequest, "emailAddress");
    long facebookId = ParamUtil.getLong(actionRequest, "facebookId");
    String openId = ParamUtil.getString(actionRequest, "openId");
    String firstName = ParamUtil.getString(actionRequest, "firstName");
    String middleName = ParamUtil.getString(actionRequest, "middleName");
    String lastName = ParamUtil.getString(actionRequest, "lastName");
    int prefixId = ParamUtil.getInteger(actionRequest, "prefixId");
    int suffixId = ParamUtil.getInteger(actionRequest, "suffixId");
    boolean male = ParamUtil.getBoolean(actionRequest, "male", true);
    int birthdayMonth = ParamUtil.getInteger(actionRequest, "birthdayMonth");
    int birthdayDay = ParamUtil.getInteger(actionRequest, "birthdayDay");
    int birthdayYear = ParamUtil.getInteger(actionRequest, "birthdayYear");
    String jobTitle = ParamUtil.getString(actionRequest, "jobTitle");
    long[] groupIds = null;
    long[] organizationIds = null;
    long[] roleIds = null;
    long[] userGroupIds = null;
    boolean sendEmail = true;

    ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

    if (PropsValues.LOGIN_CREATE_ACCOUNT_ALLOW_CUSTOM_PASSWORD) {
        autoPassword = false;

        password1 = ParamUtil.getString(actionRequest, "password1");
        password2 = ParamUtil.getString(actionRequest, "password2");
    }

    boolean openIdPending = false;

    Boolean openIdLoginPending = (Boolean) session.getAttribute(WebKeys.OPEN_ID_LOGIN_PENDING);

    if ((openIdLoginPending != null) && (openIdLoginPending.booleanValue()) && (Validator.isNotNull(openId))) {

        sendEmail = false;
        openIdPending = true;
    }

    // check accountRole - numberPhone
    String accountRole = ParamUtil.getString(actionRequest, "accountRole", "");
    String mobilePhone = ParamUtil.getString(actionRequest, "mobilePhone", "");
    boolean subscriberAccount = false;

    if (accountRole.equals("subscriberAccount")) {
        subscriberAccount = true;
        if (!Validator.isPhoneNumber(mobilePhone)) {
            throw new Exception("mobile-phone-invalid");
        }

        try {
            UserEntry tmpEmtry = UserEntryLocalServiceUtil.findByMobilePhone(mobilePhone);
            if (tmpEmtry != null)
                throw new Exception("mobile-phone-invalid");
        } catch (Exception e) {
            // TODO: handle exception

        }

    }
    //accountRole
    User user = UserServiceUtil.addUserWithWorkflow(company.getCompanyId(), autoPassword, password1, password2,
            autoScreenName, screenName, emailAddress, facebookId, openId, themeDisplay.getLocale(), firstName,
            middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
            groupIds, organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);

    if (openIdPending) {
        session.setAttribute(WebKeys.OPEN_ID_LOGIN, new Long(user.getUserId()));
        session.removeAttribute(WebKeys.OPEN_ID_LOGIN_PENDING);
    } else {

        // Session messages

        if (user.getStatus() == WorkflowConstants.STATUS_APPROVED) {
            SessionMessages.add(request, "user_added", user.getEmailAddress());
            SessionMessages.add(request, "user_added_password", user.getPasswordUnencrypted());
        } else {
            SessionMessages.add(request, "user_pending", user.getEmailAddress());
        }
    }

    // ============================================================
    // create user success - ok then create vrbt_user
    // add new UserEntry ( vrbt_user table ) 
    UserEntry userEntry = null;
    try {
        userEntry = UserEntryLocalServiceUtil
                .createUserEntry(CounterLocalServiceUtil.increment(UserEntry.class.getName()));
        userEntry.setUserId(user.getUserId());
        userEntry.setUserName(user.getScreenName());
        userEntry.setGroupId(user.getGroupId());
        userEntry.setCompanyId(user.getCompanyId());
        userEntry.setCreateDate(Calendar.getInstance().getTime());
        userEntry.setStatus(1);
        if (subscriberAccount) {
            userEntry.setMobilePhone(mobilePhone);
        }
        UserEntryLocalServiceUtil.updateUserEntry(userEntry);
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }

    // add role
    long roleId = 0;
    try {
        Role role = null;
        if (subscriberAccount) {
            role = RoleLocalServiceUtil.getRole(PortalUtil.getCompanyId(request), "Subscriber");
            if (role != null)
                roleId = role.getRoleId();
        } else {
            role = RoleLocalServiceUtil.getRole(PortalUtil.getCompanyId(request), "Third-party");
            if (role != null)
                roleId = role.getRoleId();
        }
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    System.out.println("roleId:" + roleId);
    if (roleId > 0) {
        try {
            RoleLocalServiceUtil.addUserRoles(user.getUserId(), new long[] { roleId });

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    // ============================================================
    // Send redirect

    String login = null;

    if (company.getAuthType().equals(CompanyConstants.AUTH_TYPE_ID)) {
        login = String.valueOf(user.getUserId());
    } else if (company.getAuthType().equals(CompanyConstants.AUTH_TYPE_SN)) {
        login = user.getScreenName();
    } else {
        login = user.getEmailAddress();
    }
    // fix 
    login = user.getScreenName();
    // 
    sendRedirect(actionRequest, actionResponse, themeDisplay, login, user.getPasswordUnencrypted());
}

From source file:com.liferay.portlet.login.action.CreateAccountAction.java

License:Open Source License

protected void updateIncompleteUser(ActionRequest actionRequest, ActionResponse actionResponse)
        throws Exception {

    HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest);

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    boolean autoPassword = true;
    String password1 = null;/*w w  w. j a v a  2 s.c  o  m*/
    String password2 = null;
    boolean autoScreenName = false;
    String screenName = ParamUtil.getString(actionRequest, "screenName");
    String emailAddress = ParamUtil.getString(actionRequest, "emailAddress");
    long facebookId = ParamUtil.getLong(actionRequest, "facebookId");
    String openId = ParamUtil.getString(actionRequest, "openId");
    String firstName = ParamUtil.getString(actionRequest, "firstName");
    String middleName = ParamUtil.getString(actionRequest, "middleName");
    String lastName = ParamUtil.getString(actionRequest, "lastName");
    int prefixId = ParamUtil.getInteger(actionRequest, "prefixId");
    int suffixId = ParamUtil.getInteger(actionRequest, "suffixId");
    boolean male = ParamUtil.getBoolean(actionRequest, "male", true);
    int birthdayMonth = ParamUtil.getInteger(actionRequest, "birthdayMonth");
    int birthdayDay = ParamUtil.getInteger(actionRequest, "birthdayDay");
    int birthdayYear = ParamUtil.getInteger(actionRequest, "birthdayYear");
    String jobTitle = ParamUtil.getString(actionRequest, "jobTitle");
    boolean updateUserInformation = true;
    boolean sendEmail = true;

    ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

    User user = UserServiceUtil.updateIncompleteUser(themeDisplay.getCompanyId(), autoPassword, password1,
            password2, autoScreenName, screenName, emailAddress, facebookId, openId, themeDisplay.getLocale(),
            firstName, middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear,
            jobTitle, sendEmail, updateUserInformation, serviceContext);

    // Session messages

    if (user.getStatus() == WorkflowConstants.STATUS_APPROVED) {
        SessionMessages.add(request, "user_added", user.getEmailAddress());
        SessionMessages.add(request, "user_added_password", user.getPasswordUnencrypted());
    } else {
        SessionMessages.add(request, "user_pending", user.getEmailAddress());
    }

    // Send redirect

    String login = null;

    Company company = themeDisplay.getCompany();

    if (company.getAuthType().equals(CompanyConstants.AUTH_TYPE_ID)) {
        login = String.valueOf(user.getUserId());
    } else if (company.getAuthType().equals(CompanyConstants.AUTH_TYPE_SN)) {
        login = user.getScreenName();
    } else {
        login = user.getEmailAddress();
    }

    sendRedirect(actionRequest, actionResponse, themeDisplay, login, user.getPasswordUnencrypted());
}

From source file:com.liferay.portlet.login.action.CreateAnonymousAccountAction.java

License:Open Source License

protected JSONObject updateIncompleteUser(ActionRequest actionRequest, ActionResponse actionResponse)
        throws Exception {

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

    boolean autoPassword = true;
    String password1 = null;//  w w  w. j a  v a2s. c  o m
    String password2 = null;
    boolean autoScreenName = false;
    String screenName = null;
    String emailAddress = ParamUtil.getString(actionRequest, "emailAddress");
    long facebookId = 0;
    String openId = null;
    String firstName = null;
    String middleName = null;
    String lastName = null;
    int prefixId = 0;
    int suffixId = 0;
    boolean male = true;
    int birthdayMonth = 0;
    int birthdayDay = 1;
    int birthdayYear = 1970;
    String jobTitle = null;
    boolean updateUserInformation = false;
    boolean sendEmail = true;

    User user = UserServiceUtil.updateIncompleteUser(themeDisplay.getCompanyId(), autoPassword, password1,
            password2, autoScreenName, screenName, emailAddress, facebookId, openId, themeDisplay.getLocale(),
            firstName, middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear,
            jobTitle, updateUserInformation, sendEmail, serviceContext);

    JSONObject jsonObject = JSONFactoryUtil.createJSONObject();

    if (user.getStatus() == WorkflowConstants.STATUS_APPROVED) {
        jsonObject.put("userStatus", "user_added");
    } else {
        jsonObject.put("userStatus", "user_pending");
    }

    return jsonObject;
}

From source file:com.liferay.portlet.login.action.OldCreateAccountAction.java

License:Open Source License

protected void addUser(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {

    HttpServletRequest request = PortalUtil.getHttpServletRequest(actionRequest);
    HttpSession session = request.getSession();

    ThemeDisplay themeDisplay = (ThemeDisplay) actionRequest.getAttribute(WebKeys.THEME_DISPLAY);

    Company company = themeDisplay.getCompany();

    boolean autoPassword = true;
    String password1 = null;/* w ww  .  ja v a  2  s  .co  m*/
    String password2 = null;
    boolean autoScreenName = isAutoScreenName();
    String screenName = ParamUtil.getString(actionRequest, "screenName");
    String emailAddress = ParamUtil.getString(actionRequest, "emailAddress");
    long facebookId = ParamUtil.getLong(actionRequest, "facebookId");
    String openId = ParamUtil.getString(actionRequest, "openId");
    String firstName = ParamUtil.getString(actionRequest, "firstName");
    String middleName = ParamUtil.getString(actionRequest, "middleName");
    String lastName = ParamUtil.getString(actionRequest, "lastName");
    int prefixId = ParamUtil.getInteger(actionRequest, "prefixId");
    int suffixId = ParamUtil.getInteger(actionRequest, "suffixId");
    boolean male = ParamUtil.getBoolean(actionRequest, "male", true);
    int birthdayMonth = ParamUtil.getInteger(actionRequest, "birthdayMonth");
    int birthdayDay = ParamUtil.getInteger(actionRequest, "birthdayDay");
    int birthdayYear = ParamUtil.getInteger(actionRequest, "birthdayYear");
    String jobTitle = ParamUtil.getString(actionRequest, "jobTitle");
    long[] groupIds = null;
    long[] organizationIds = null;
    long[] roleIds = null;
    long[] userGroupIds = null;
    boolean sendEmail = true;

    ServiceContext serviceContext = ServiceContextFactory.getInstance(User.class.getName(), actionRequest);

    if (PropsValues.LOGIN_CREATE_ACCOUNT_ALLOW_CUSTOM_PASSWORD) {
        autoPassword = false;

        password1 = ParamUtil.getString(actionRequest, "password1");
        password2 = ParamUtil.getString(actionRequest, "password2");
    }

    boolean openIdPending = false;

    Boolean openIdLoginPending = (Boolean) session.getAttribute(WebKeys.OPEN_ID_LOGIN_PENDING);

    if ((openIdLoginPending != null) && openIdLoginPending.booleanValue() && Validator.isNotNull(openId)) {

        sendEmail = false;
        openIdPending = true;
    }

    User user = UserServiceUtil.addUserWithWorkflow(company.getCompanyId(), autoPassword, password1, password2,
            autoScreenName, screenName, emailAddress, facebookId, openId, themeDisplay.getLocale(), firstName,
            middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
            groupIds, organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);

    if (openIdPending) {
        session.setAttribute(WebKeys.OPEN_ID_LOGIN, new Long(user.getUserId()));

        session.removeAttribute(WebKeys.OPEN_ID_LOGIN_PENDING);
    } else {

        // Session messages

        if (user.getStatus() == WorkflowConstants.STATUS_APPROVED) {
            SessionMessages.add(request, "user_added", user.getEmailAddress());
            SessionMessages.add(request, "user_added_password", user.getPasswordUnencrypted());
        } else {
            SessionMessages.add(request, "user_pending", user.getEmailAddress());
        }
    }

    // Send redirect

    String login = null;

    if (company.getAuthType().equals(CompanyConstants.AUTH_TYPE_ID)) {
        login = String.valueOf(user.getUserId());
    } else if (company.getAuthType().equals(CompanyConstants.AUTH_TYPE_SN)) {
        login = user.getScreenName();
    } else {
        login = user.getEmailAddress();
    }

    sendRedirect(actionRequest, actionResponse, themeDisplay, login, user.getPasswordUnencrypted());
}

From source file:com.liferay.portlet.messageboards.action.RSSAction.java

License:Open Source License

protected byte[] getRSS(HttpServletRequest request) throws Exception {
    ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);

    String plid = ParamUtil.getString(request, "p_l_id");
    long companyId = ParamUtil.getLong(request, "companyId");
    long groupId = ParamUtil.getLong(request, "groupId");
    long userId = ParamUtil.getLong(request, "userId");
    long categoryId = ParamUtil.getLong(request, "mbCategoryId");
    long threadId = ParamUtil.getLong(request, "threadId");
    int max = ParamUtil.getInteger(request, "max", SearchContainer.DEFAULT_DELTA);
    String type = ParamUtil.getString(request, "type", RSSUtil.TYPE_DEFAULT);
    double version = ParamUtil.getDouble(request, "version", RSSUtil.VERSION_DEFAULT);
    String displayStyle = ParamUtil.getString(request, "displayStyle", RSSUtil.DISPLAY_STYLE_FULL_CONTENT);

    String entryURL = themeDisplay.getPortalURL() + themeDisplay.getPathMain()
            + "/message_boards/find_message?p_l_id=" + plid;

    String rss = StringPool.BLANK;

    if (companyId > 0) {
        String feedURL = StringPool.BLANK;

        rss = MBMessageServiceUtil.getCompanyMessagesRSS(companyId, WorkflowConstants.STATUS_APPROVED, max,
                type, version, displayStyle, feedURL, entryURL, themeDisplay);
    } else if (groupId > 0) {
        String feedURL = themeDisplay.getPortalURL() + themeDisplay.getPathMain()
                + "/message_boards/find_recent_posts?p_l_id=" + plid;

        if (userId > 0) {
            rss = MBMessageServiceUtil.getGroupMessagesRSS(groupId, userId, WorkflowConstants.STATUS_APPROVED,
                    max, type, version, displayStyle, feedURL, entryURL, themeDisplay);
        } else {//from   ww  w  . j a  v a  2s  . c o  m
            rss = MBMessageServiceUtil.getGroupMessagesRSS(groupId, WorkflowConstants.STATUS_APPROVED, max,
                    type, version, displayStyle, feedURL, entryURL, themeDisplay);
        }
    } else if (categoryId > 0) {
        String feedURL = themeDisplay.getPortalURL() + themeDisplay.getPathMain()
                + "/message_boards/find_category?p_l_id=" + plid + "&mbCategoryId=" + categoryId;

        rss = MBMessageServiceUtil.getCategoryMessagesRSS(groupId, categoryId,
                WorkflowConstants.STATUS_APPROVED, max, type, version, displayStyle, feedURL, entryURL,
                themeDisplay);
    } else if (threadId > 0) {
        String feedURL = themeDisplay.getPortalURL() + themeDisplay.getPathMain()
                + "/message_boards/find_thread?p_l_id=" + plid + "&threadId=" + threadId;

        rss = MBMessageServiceUtil.getThreadMessagesRSS(threadId, WorkflowConstants.STATUS_APPROVED, max, type,
                version, displayStyle, feedURL, entryURL, themeDisplay);
    }

    return rss.getBytes(StringPool.UTF8);
}

From source file:com.liferay.portlet.messageboards.lar.MBPortletDataHandlerImpl.java

License:Open Source License

protected void exportMessage(PortletDataContext portletDataContext, Element categoriesElement,
        Element messagesElement, Element threadFlagsElement, MBMessage message) throws Exception {

    if (!portletDataContext.isWithinDateRange(message.getModifiedDate())) {
        return;/*from   w w w . j  a v  a2  s .c om*/
    }

    if (message.getStatus() != WorkflowConstants.STATUS_APPROVED) {
        return;
    }

    exportParentCategory(portletDataContext, categoriesElement, message.getCategoryId());

    String path = getMessagePath(portletDataContext, message);

    if (!portletDataContext.isPathNotProcessed(path)) {
        return;
    }

    Element messageElement = messagesElement.addElement("message");

    message.setPriority(message.getPriority());

    if (portletDataContext.getBooleanParameter(_NAMESPACE, "attachments") && message.isAttachments()) {

        for (String attachment : message.getAttachmentsFiles()) {
            int pos = attachment.lastIndexOf(CharPool.FORWARD_SLASH);

            String name = attachment.substring(pos + 1);
            String binPath = getMessageAttachementBinPath(portletDataContext, message, name);

            Element attachmentElement = messageElement.addElement("attachment");

            attachmentElement.addAttribute("name", name);
            attachmentElement.addAttribute("bin-path", binPath);

            byte[] bytes = DLStoreUtil.getFileAsBytes(portletDataContext.getCompanyId(),
                    CompanyConstants.SYSTEM, attachment);

            portletDataContext.addZipEntry(binPath, bytes);
        }

        message.setAttachmentsDir(message.getAttachmentsDir());
    }

    if (portletDataContext.getBooleanParameter(_NAMESPACE, "thread-flags")) {

        List<MBThreadFlag> threadFlags = MBThreadFlagUtil.findByThreadId(message.getThreadId());

        for (MBThreadFlag threadFlag : threadFlags) {
            exportThreadFlag(portletDataContext, threadFlagsElement, threadFlag);
        }
    }

    portletDataContext.addClassedModel(messageElement, path, message, _NAMESPACE);
}

From source file:com.liferay.portlet.messageboards.lar.MBPortletDataHandlerImpl.java

License:Open Source License

protected void importMessage(PortletDataContext portletDataContext, Element messageElement, MBMessage message)
        throws Exception {

    long userId = portletDataContext.getUserId(message.getUserUuid());
    String userName = message.getUserName();

    Map<Long, Long> categoryPKs = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBCategory.class);

    long categoryId = MapUtil.getLong(categoryPKs, message.getCategoryId(), message.getCategoryId());

    Map<Long, Long> threadPKs = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBThread.class);

    long threadId = MapUtil.getLong(threadPKs, message.getThreadId(), 0);

    Map<Long, Long> messagePKs = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(MBMessage.class);

    long parentMessageId = MapUtil.getLong(messagePKs, message.getParentMessageId(),
            message.getParentMessageId());

    List<String> existingFiles = new ArrayList<String>();

    List<ObjectValuePair<String, InputStream>> inputStreamOVPs = getAttachments(portletDataContext,
            messageElement, message);//from   w  w  w .ja v a  2  s  . c o m

    try {
        ServiceContext serviceContext = portletDataContext.createServiceContext(messageElement, message,
                _NAMESPACE);

        if (message.getStatus() != WorkflowConstants.STATUS_APPROVED) {
            serviceContext.setWorkflowAction(WorkflowConstants.ACTION_SAVE_DRAFT);
        }

        categoryId = getCategoryId(portletDataContext, message, categoryPKs, categoryId);

        MBMessage importedMessage = null;

        if (portletDataContext.isDataStrategyMirror()) {
            MBMessage existingMessage = MBMessageUtil.fetchByUUID_G(message.getUuid(),
                    portletDataContext.getScopeGroupId());

            if (existingMessage == null) {
                serviceContext.setUuid(message.getUuid());

                importedMessage = MBMessageLocalServiceUtil.addMessage(userId, userName,
                        portletDataContext.getScopeGroupId(), categoryId, threadId, parentMessageId,
                        message.getSubject(), message.getBody(), message.getFormat(), inputStreamOVPs,
                        message.getAnonymous(), message.getPriority(), message.getAllowPingbacks(),
                        serviceContext);
            } else {
                importedMessage = MBMessageLocalServiceUtil.updateMessage(userId,
                        existingMessage.getMessageId(), message.getSubject(), message.getBody(),
                        inputStreamOVPs, existingFiles, message.getPriority(), message.getAllowPingbacks(),
                        serviceContext);
            }
        } else {
            importedMessage = MBMessageLocalServiceUtil.addMessage(userId, userName,
                    portletDataContext.getScopeGroupId(), categoryId, threadId, parentMessageId,
                    message.getSubject(), message.getBody(), message.getFormat(), inputStreamOVPs,
                    message.getAnonymous(), message.getPriority(), message.getAllowPingbacks(), serviceContext);
        }

        threadPKs.put(message.getThreadId(), importedMessage.getThreadId());

        portletDataContext.importClassedModel(message, importedMessage, _NAMESPACE);
    } finally {
        for (ObjectValuePair<String, InputStream> inputStreamOVP : inputStreamOVPs) {

            InputStream inputStream = inputStreamOVP.getValue();

            StreamUtil.cleanUp(inputStream);
        }
    }
}

From source file:com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.java

License:Open Source License

public void deleteMessage(MBMessage message) throws PortalException, SystemException {

    // Indexer//from  w  w w .  j a va2s.  c  om

    Indexer indexer = IndexerRegistryUtil.getIndexer(MBMessage.class);

    indexer.delete(message);

    // Attachments

    if (message.isAttachments()) {
        long companyId = message.getCompanyId();
        long repositoryId = CompanyConstants.SYSTEM;
        String dirName = message.getAttachmentsDir();

        try {
            DLStoreUtil.deleteDirectory(companyId, repositoryId, dirName);
        } catch (NoSuchDirectoryException nsde) {
            if (_log.isDebugEnabled()) {
                _log.debug(nsde.getMessage());
            }
        }
    }

    // Thread

    int count = mbMessagePersistence.countByThreadId(message.getThreadId());

    if (count == 1) {

        // Attachments

        long companyId = message.getCompanyId();
        long repositoryId = CompanyConstants.SYSTEM;
        String dirName = message.getThreadAttachmentsDir();

        try {
            DLStoreUtil.deleteDirectory(companyId, repositoryId, dirName);
        } catch (NoSuchDirectoryException nsde) {
            if (_log.isDebugEnabled()) {
                _log.debug(nsde.getMessage());
            }
        }

        // Subscriptions

        subscriptionLocalService.deleteSubscriptions(message.getCompanyId(), MBThread.class.getName(),
                message.getThreadId());

        // Thread

        mbThreadPersistence.remove(message.getThreadId());

        // Category

        if ((message.getCategoryId() != MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID)
                && (message.getCategoryId() != MBCategoryConstants.DISCUSSION_CATEGORY_ID)) {

            MBCategory category = mbCategoryPersistence.findByPrimaryKey(message.getCategoryId());

            category.setThreadCount(category.getThreadCount() - 1);
            category.setMessageCount(category.getMessageCount() - 1);

            mbCategoryPersistence.update(category, false);
        }
    } else {
        MBThread thread = mbThreadPersistence.findByPrimaryKey(message.getThreadId());

        // Message is a root message

        if (thread.getRootMessageId() == message.getMessageId()) {
            List<MBMessage> childrenMessages = mbMessagePersistence.findByT_P(message.getThreadId(),
                    message.getMessageId());

            if (childrenMessages.size() > 1) {
                throw new RequiredMessageException(String.valueOf(message.getMessageId()));
            } else if (childrenMessages.size() == 1) {
                MBMessage childMessage = childrenMessages.get(0);

                childMessage.setRootMessageId(childMessage.getMessageId());
                childMessage.setParentMessageId(MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID);

                mbMessagePersistence.update(childMessage, false);

                thread.setRootMessageId(childMessage.getMessageId());
                thread.setRootMessageUserId(childMessage.getUserId());

                mbThreadPersistence.update(thread, false);
            }
        }

        // Message is a child message

        else {
            List<MBMessage> childrenMessages = mbMessagePersistence.findByT_P(message.getThreadId(),
                    message.getMessageId());

            // Message has children messages

            if (!childrenMessages.isEmpty()) {
                Iterator<MBMessage> itr = childrenMessages.iterator();

                while (itr.hasNext()) {
                    MBMessage childMessage = itr.next();

                    childMessage.setParentMessageId(message.getParentMessageId());

                    mbMessagePersistence.update(childMessage, false);
                }
            } else {
                MessageCreateDateComparator comparator = new MessageCreateDateComparator(true);

                MBMessage lastMessage = mbMessagePersistence.findByT_S_Last(thread.getThreadId(),
                        WorkflowConstants.STATUS_APPROVED, comparator);

                if (message.getMessageId() == lastMessage.getMessageId()) {
                    MBMessage parentMessage = mbMessagePersistence
                            .findByPrimaryKey(message.getParentMessageId());

                    thread.setLastPostByUserId(parentMessage.getUserId());
                    thread.setLastPostDate(parentMessage.getModifiedDate());
                }
            }
        }

        // Thread

        if (message.isApproved()) {
            int messageCount = mbMessagePersistence.countByT_S(message.getThreadId(),
                    WorkflowConstants.STATUS_APPROVED);

            thread.setMessageCount(messageCount - 1);
        }

        mbThreadPersistence.update(thread, false);

        // Category

        if ((message.getCategoryId() != MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID)
                && (message.getCategoryId() != MBCategoryConstants.DISCUSSION_CATEGORY_ID)
                && !message.isDraft()) {

            MBCategory category = mbCategoryPersistence.findByPrimaryKey(message.getCategoryId());

            category.setMessageCount(category.getMessageCount() - 1);

            mbCategoryPersistence.update(category, false);
        }
    }

    // Asset

    assetEntryLocalService.deleteEntry(MBMessage.class.getName(), message.getMessageId());

    // Expando

    expandoValueLocalService.deleteValues(MBMessage.class.getName(), message.getMessageId());

    // Ratings

    ratingsStatsLocalService.deleteStats(MBMessage.class.getName(), message.getMessageId());

    // Resources

    if (!message.isDiscussion()) {
        resourceLocalService.deleteResource(message.getCompanyId(), MBMessage.class.getName(),
                ResourceConstants.SCOPE_INDIVIDUAL, message.getMessageId());
    }

    // Message

    mbMessagePersistence.remove(message);

    // Statistics

    if (!message.isDiscussion()) {
        mbStatsUserLocalService.updateStatsUser(message.getGroupId(), message.getUserId());
    }

    // Workflow

    workflowInstanceLinkLocalService.deleteWorkflowInstanceLinks(message.getCompanyId(), message.getGroupId(),
            message.getWorkflowClassName(), message.getMessageId());
}

From source file:com.liferay.portlet.messageboards.service.impl.MBMessageLocalServiceImpl.java

License:Open Source License

public MBMessage updateStatus(long userId, long messageId, int status, ServiceContext serviceContext)
        throws PortalException, SystemException {

    // Message/*from  w w w.ja  v  a  2  s .co  m*/

    MBMessage message = getMessage(messageId);

    int oldStatus = message.getStatus();

    User user = userPersistence.findByPrimaryKey(userId);
    Date now = new Date();

    message.setStatus(status);
    message.setStatusByUserId(userId);
    message.setStatusByUserName(user.getFullName());
    message.setStatusDate(serviceContext.getModifiedDate(now));

    mbMessagePersistence.update(message, false);

    // Thread

    MBThread thread = mbThreadPersistence.findByPrimaryKey(message.getThreadId());

    MBCategory category = null;

    if ((thread.getCategoryId() != MBCategoryConstants.DEFAULT_PARENT_CATEGORY_ID)
            && (thread.getCategoryId() != MBCategoryConstants.DISCUSSION_CATEGORY_ID)) {

        category = mbCategoryPersistence.findByPrimaryKey(thread.getCategoryId());
    }

    if ((thread.getRootMessageId() == message.getMessageId()) && (oldStatus != status)) {

        thread.setStatus(status);
        thread.setStatusByUserId(userId);
        thread.setStatusByUserName(user.getFullName());
        thread.setStatusDate(serviceContext.getModifiedDate(now));
    }

    Indexer indexer = IndexerRegistryUtil.getIndexer(MBMessage.class);

    if (status == WorkflowConstants.STATUS_APPROVED) {
        if (oldStatus != WorkflowConstants.STATUS_APPROVED) {

            // Thread

            if ((category != null) && (thread.getRootMessageId() == message.getMessageId())) {

                category.setThreadCount(category.getThreadCount() + 1);

                mbCategoryPersistence.update(category, false);
            }

            thread.setMessageCount(thread.getMessageCount() + 1);

            if (message.isAnonymous()) {
                thread.setLastPostByUserId(0);
            } else {
                thread.setLastPostByUserId(message.getUserId());
            }

            thread.setLastPostDate(serviceContext.getModifiedDate(now));

            // Category

            if (category != null) {
                category.setMessageCount(category.getMessageCount() + 1);
                category.setLastPostDate(serviceContext.getModifiedDate(now));

                mbCategoryPersistence.update(category, false);

            }

            // Asset

            if (serviceContext.isAssetEntryVisible()
                    && ((message.getClassNameId() == 0) || (message.getParentMessageId() != 0))) {

                assetEntryLocalService.updateVisible(message.getWorkflowClassName(), message.getMessageId(),
                        true);
            }

            if (!message.isDiscussion()) {

                // Social

                if (!message.isAnonymous() && !user.isDefaultUser()) {
                    long receiverUserId = 0;

                    MBMessage parentMessage = mbMessagePersistence
                            .fetchByPrimaryKey(message.getParentMessageId());

                    if (parentMessage != null) {
                        receiverUserId = parentMessage.getUserId();
                    }

                    socialActivityLocalService.addActivity(userId, message.getGroupId(),
                            MBMessage.class.getName(), message.getMessageId(), MBActivityKeys.ADD_MESSAGE,
                            StringPool.BLANK, receiverUserId);

                    if ((parentMessage != null) && (receiverUserId != userId)) {

                        socialActivityLocalService.addActivity(userId, parentMessage.getGroupId(),
                                MBMessage.class.getName(), parentMessage.getMessageId(),
                                MBActivityKeys.REPLY_MESSAGE, StringPool.BLANK, 0);
                    }
                }
            } else {

                // Social

                String className = (String) serviceContext.getAttribute("className");
                long classPK = GetterUtil.getLong((String) serviceContext.getAttribute("classPK"));
                long parentMessageId = message.getParentMessageId();

                if (parentMessageId != MBMessageConstants.DEFAULT_PARENT_MESSAGE_ID) {

                    AssetEntry assetEntry = assetEntryLocalService.fetchEntry(className, classPK);

                    if (assetEntry != null) {
                        JSONObject extraDataJSONObject = JSONFactoryUtil.createJSONObject();

                        extraDataJSONObject.put("messageId", message.getMessageId());

                        socialActivityLocalService.addActivity(userId, assetEntry.getGroupId(), className,
                                classPK, SocialActivityConstants.TYPE_ADD_COMMENT,
                                extraDataJSONObject.toString(), assetEntry.getUserId());
                    }
                }
            }

            // Subscriptions

            notifySubscribers(message, serviceContext);
        }

        // Indexer

        if (!message.isDiscussion()) {
            indexer.reindex(message);
        }

        // Ping

        pingPingback(message, serviceContext);
    } else if ((oldStatus == WorkflowConstants.STATUS_APPROVED)
            && (status != WorkflowConstants.STATUS_APPROVED)) {

        // Thread

        if ((category != null) && (thread.getRootMessageId() == message.getMessageId())) {

            category.setThreadCount(category.getThreadCount() - 1);

            mbCategoryPersistence.update(category, false);
        }

        thread.setMessageCount(thread.getMessageCount() - 1);

        // Category

        if (category != null) {
            category.setMessageCount(category.getMessageCount() - 1);

            mbCategoryPersistence.update(category, false);
        }

        // Asset

        assetEntryLocalService.updateVisible(message.getWorkflowClassName(), message.getMessageId(), false);

        if (!message.isDiscussion()) {

            // Indexer

            indexer.delete(message);
        }
    }

    if (status != oldStatus) {
        mbThreadPersistence.update(thread, false);
    }

    // Statistics

    if (!message.isDiscussion()) {
        mbStatsUserLocalService.updateStatsUser(message.getGroupId(), userId,
                serviceContext.getModifiedDate(now));
    }

    return message;
}