com.liferay.knowledgebase.admin.social.AdminActivityInterpreter.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.knowledgebase.admin.social.AdminActivityInterpreter.java

Source

/**
 * 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.knowledgebase.admin.social;

import com.liferay.knowledgebase.model.KBArticle;
import com.liferay.knowledgebase.model.KBComment;
import com.liferay.knowledgebase.model.KBTemplate;
import com.liferay.knowledgebase.service.KBArticleLocalServiceUtil;
import com.liferay.knowledgebase.service.KBCommentLocalServiceUtil;
import com.liferay.knowledgebase.service.KBTemplateLocalServiceUtil;
import com.liferay.knowledgebase.service.permission.KBArticlePermission;
import com.liferay.knowledgebase.service.permission.KBTemplatePermission;
import com.liferay.knowledgebase.util.ActionKeys;
import com.liferay.knowledgebase.util.KnowledgeBaseUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.security.permission.PermissionChecker;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portlet.social.model.BaseSocialActivityInterpreter;
import com.liferay.portlet.social.model.SocialActivity;

/**
 * @author Peter Shin
 * @author Brian Wing Shun Chan
 */
public class AdminActivityInterpreter extends BaseSocialActivityInterpreter {

    @Override
    public String[] getClassNames() {
        return _CLASS_NAMES;
    }

    @Override
    protected String getEntryTitle(SocialActivity activity, ServiceContext serviceContext) throws Exception {

        String title = StringPool.BLANK;

        String className = activity.getClassName();

        if (className.equals(KBArticle.class.getName())) {
            KBArticle kbArticle = KBArticleLocalServiceUtil.getLatestKBArticle(activity.getClassPK(),
                    WorkflowConstants.STATUS_APPROVED);

            title = kbArticle.getTitle();
        } else if (className.equals(KBComment.class.getName())) {
            KBComment kbComment = KBCommentLocalServiceUtil.getKBComment(activity.getClassPK());

            String kbCommentClassName = kbComment.getClassName();

            if (kbCommentClassName.equals(KBArticle.class.getName())) {
                KBArticle kbArticle = KBArticleLocalServiceUtil.getLatestKBArticle(kbComment.getClassPK(),
                        WorkflowConstants.STATUS_APPROVED);

                title = kbArticle.getTitle();
            } else if (kbCommentClassName.equals(KBTemplate.class.getName())) {
                KBTemplate kbTemplate = KBTemplateLocalServiceUtil.getKBTemplate(kbComment.getClassPK());

                title = kbTemplate.getTitle();
            }
        } else if (className.equals(KBTemplate.class.getName())) {
            KBTemplate kbTemplate = KBTemplateLocalServiceUtil.getKBTemplate(activity.getClassPK());

            title = kbTemplate.getTitle();
        }

        return getJSONValue(activity.getExtraData(), "title", title);
    }

    @Override
    protected String getLink(SocialActivity activity, ServiceContext serviceContext) throws Exception {

        String className = activity.getClassName();

        if (className.equals(KBArticle.class.getName())) {
            KBArticle kbArticle = KBArticleLocalServiceUtil.getLatestKBArticle(activity.getClassPK(),
                    WorkflowConstants.STATUS_APPROVED);

            return KnowledgeBaseUtil.getKBArticleURL(serviceContext.getPlid(), kbArticle.getResourcePrimKey(),
                    kbArticle.getStatus(), serviceContext.getPortalURL(), false);
        } else if (className.equals(KBComment.class.getName())) {
            KBComment kbComment = KBCommentLocalServiceUtil.getKBComment(activity.getClassPK());

            String kbCommentClassName = kbComment.getClassName();

            if (kbCommentClassName.equals(KBArticle.class.getName())) {
                KBArticle kbArticle = KBArticleLocalServiceUtil.getLatestKBArticle(activity.getClassPK(),
                        WorkflowConstants.STATUS_APPROVED);

                return KnowledgeBaseUtil.getKBArticleURL(serviceContext.getPlid(), kbArticle.getResourcePrimKey(),
                        kbArticle.getStatus(), serviceContext.getPortalURL(), false);
            }
        }

        return StringPool.BLANK;
    }

    @Override
    protected String getTitlePattern(String groupName, SocialActivity activity) {

        String className = activity.getClassName();

        if (className.equals(KBArticle.class.getName())) {
            if (activity.getType() == AdminActivityKeys.ADD_KB_ARTICLE) {
                if (Validator.isNull(groupName)) {
                    return "activity-knowledge-base-admin-add-kb-article";
                } else {
                    return "activity-knowledge-base-admin-add-kb-article-in";
                }
            } else if (activity.getType() == AdminActivityKeys.MOVE_KB_ARTICLE) {
                if (Validator.isNull(groupName)) {
                    return "activity-knowledge-base-admin-move-kb-article";
                } else {
                    return "activity-knowledge-base-admin-move-kb-article-in";
                }
            } else if (activity.getType() == AdminActivityKeys.UPDATE_KB_ARTICLE) {

                if (Validator.isNull(groupName)) {
                    return "activity-knowledge-base-admin-update-kb-article";
                } else {
                    return "activity-knowledge-base-admin-update-kb-article-in";
                }
            }
        } else if (className.equals(KBComment.class.getName())) {
            if (activity.getType() == AdminActivityKeys.ADD_KB_COMMENT) {
                if (Validator.isNull(groupName)) {
                    return "activity-knowledge-base-admin-add-kb-comment";
                } else {
                    return "activity-knowledge-base-admin-add-kb-comment-in";
                }
            } else if (activity.getType() == AdminActivityKeys.UPDATE_KB_COMMENT) {

                if (Validator.isNull(groupName)) {
                    return "activity-knowledge-base-admin-update-kb-comment";
                } else {
                    return "activity-knowledge-base-admin-update-kb-comment-in";
                }
            }
        } else if (className.equals(KBTemplate.class.getName())) {
            if (activity.getType() == AdminActivityKeys.ADD_KB_TEMPLATE) {
                if (Validator.isNull(groupName)) {
                    return "activity-knowledge-base-admin-add-kb-template";
                } else {
                    return "activity-knowledge-base-admin-add-kb-template-in";
                }
            } else if (activity.getType() == AdminActivityKeys.UPDATE_KB_TEMPLATE) {

                if (Validator.isNull(groupName)) {
                    return "activity-knowledge-base-admin-update-kb-template";
                } else {
                    return "activity-knowledge-base-admin-update-kb-template-in";
                }
            }
        }

        return StringPool.BLANK;
    }

    @Override
    protected boolean hasPermissions(PermissionChecker permissionChecker, SocialActivity activity, String actionId,
            ServiceContext serviceContext) throws Exception {

        String className = activity.getClassName();

        if (className.equals(KBArticle.class.getName())) {
            KBArticle kbArticle = KBArticleLocalServiceUtil.getLatestKBArticle(activity.getClassPK(),
                    WorkflowConstants.STATUS_APPROVED);

            return KBArticlePermission.contains(permissionChecker, kbArticle, ActionKeys.VIEW);
        } else if (className.equals(KBComment.class.getName())) {
            return true;
        } else if (className.equals(KBTemplate.class.getName())) {
            KBTemplate kbTemplate = KBTemplateLocalServiceUtil.getKBTemplate(activity.getClassPK());

            return KBTemplatePermission.contains(permissionChecker, kbTemplate, ActionKeys.VIEW);
        }

        return false;
    }

    private static final String[] _CLASS_NAMES = { KBArticle.class.getName(), KBComment.class.getName(),
            KBTemplate.class.getName() };

}