001/*
002 *  Copyright 2023 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.workspaces.activities.projects;
017
018import java.util.List;
019
020import org.ametys.plugins.repository.AmetysObject;
021import org.ametys.plugins.repository.activities.Activity;
022import org.ametys.plugins.repository.activities.ActivityType;
023import org.ametys.plugins.workspaces.WorkspacesConstants;
024import org.ametys.plugins.workspaces.activities.AbstractWorkspacesActivityNotifier;
025
026/**
027 * Class representing a activity notifier for web content in workspaces
028 */
029public class WebContentActivityNotifier extends AbstractWorkspacesActivityNotifier
030{
031    public boolean support(ActivityType activityType)
032    {
033        return activityType instanceof WebContentActivityType;
034    }
035    
036    @Override
037    public String getMailBodyURI(Activity activity)
038    {
039        ActivityType activityType = activity.getActivityType();
040        if (activityType instanceof ContentCommentedActivityType)
041        {
042            switch (activity.<String>getValue(WebContentActivityType.CONTENT_TYPE))
043            {
044                case WorkspacesConstants.PROJECT_NEWS_CONTENT_TYPE_ID:
045                    return "cocoon://_plugins/workspaces/notification-mail-news-comment";
046                case WorkspacesConstants.WALL_CONTENT_CONTENT_TYPE_ID:
047                    return "cocoon://_plugins/workspaces/notification-mail-wallcontent-comment";
048                default:
049                    // This case should not happened has it would have been filtered by the support method
050                    return "cocoon://_plugins/workspaces/notification-mail-comment";
051            }
052        }
053        else if (activityType instanceof NewsPublishedActivityType)
054        {
055            return "cocoon://_plugins/workspaces/notification-mail-news-publication";
056        }
057        
058        return "cocoon://_plugins/workspaces/notification-mail-wallcontent";
059    }
060    
061    @Override
062    public List<String> getSubjectI18nParams(Activity activity)
063    {
064        List<String> params = super.getSubjectI18nParams(activity);         // {0} project title
065        params.add(activity.getValue(WebContentActivityType.CONTENT_TITLE));   // {1} content title
066        return params;
067    }
068    
069    @Override
070    public AmetysObject getTargetAmetysObject(Activity activity)
071    {
072        return _resolver.resolveById(activity.getValue(WebContentActivityType.CONTENT_ID));
073    }
074}