001/*
002 *  Copyright 2021 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.wall.observers;
017
018import org.ametys.cms.ObservationConstants;
019import org.ametys.cms.repository.Content;
020import org.ametys.core.observation.Event;
021import org.ametys.core.observation.Observer;
022import org.ametys.plugins.workspaces.WorkspacesConstants;
023
024/**
025 * {@link Observer} to invalidate zone item cache of wall content service when a wall content is commented
026 *
027 */
028public class InvalidateZoneItemCacheOnWallContentCommentedObserver extends AbstractInvalidateZoneItemCacheOnWallObserver
029{
030
031    public boolean supports(Event event)
032    {
033        boolean eventSupported =  event.getId().equals(ObservationConstants.EVENT_CONTENT_COMMENT_VALIDATED)
034                || event.getId().equals(ObservationConstants.EVENT_CONTENT_COMMENT_UNVALIDATED)
035                || event.getId().equals(ObservationConstants.EVENT_CONTENT_COMMENT_MODIFYING)
036                || event.getId().equals(ObservationConstants.EVENT_CONTENT_COMMENT_DELETED)
037                || event.getId().equals(ObservationConstants.EVENT_CONTENT_COMMENT_REACTION_CHANGED);
038        
039        
040        if (eventSupported)
041        {
042            Content content = (Content) event.getArguments().get(ObservationConstants.ARGS_CONTENT);
043            return content != null && _contentTypeHelper.isInstanceOf(content, WorkspacesConstants.WALL_CONTENT_CONTENT_TYPE_ID);
044        }
045        
046        return false;
047    }
048
049}