001/*
002 *  Copyright 2016 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.events.documents;
017
018import java.util.HashMap;
019import java.util.Map;
020
021import javax.jcr.Node;
022import javax.jcr.RepositoryException;
023
024import org.ametys.plugins.explorer.ObservationConstants;
025import org.ametys.plugins.repository.events.EventType;
026
027/**
028 * {@link EventType} implementation for the creation of a resource 
029 */
030public class ResourceRenamedEventType extends DocumentsEventType
031{
032    @Override
033    protected void storeAdditionalEventData(Node eventNode, Map<String, Object> parameters) throws RepositoryException
034    {
035        super.storeAdditionalEventData(eventNode, parameters);
036        
037        // File data
038        String resourceName = (String) parameters.get(ObservationConstants.ARGS_NAME);
039        String resourceOldName = (String) parameters.get("object.old.name");
040        
041        // Store a reference to the version of the node instead of on the node itself
042        Node fileNode = eventNode.addNode("file");
043        fileNode.setProperty("name", resourceName);
044        fileNode.setProperty("oldName", resourceOldName);
045    }
046    
047    @Override
048    public Map<String, Object> event2JSON(Node eventNode) throws RepositoryException
049    {
050        Map<String, Object> event = super.event2JSON(eventNode);
051        
052        // File data
053        Map<String, Object> fileData = new HashMap<> ();
054        Node fileNode = eventNode.getNode("file");
055
056        fileData.put("name", fileNode.getProperty("name").getString());
057        fileData.put("oldName", fileNode.getProperty("oldName").getString());
058        
059        event.put("file", fileData);
060        
061        return event;
062    }
063}