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.explorer.calendars.workflow;
017
018import java.util.Date;
019import java.util.Map;
020
021import org.apache.avalon.framework.service.ServiceException;
022import org.apache.avalon.framework.service.ServiceManager;
023
024import org.ametys.core.user.UserIdentity;
025import org.ametys.plugins.explorer.calendars.ModifiableCalendarEvent;
026import org.ametys.plugins.explorer.workflow.AbstractExplorerNodeWorkflowComponent;
027import org.ametys.plugins.repository.AmetysObjectResolver;
028
029import com.opensymphony.module.propertyset.PropertySet;
030import com.opensymphony.workflow.FunctionProvider;
031import com.opensymphony.workflow.WorkflowException;
032
033/**
034 * Action for adding a resource collection.
035 */
036public class ValidateEventFunction extends AbstractExplorerNodeWorkflowComponent implements FunctionProvider
037{
038    /** The Ametys object resolver */
039    protected AmetysObjectResolver _resolver;
040    
041    @Override
042    public void service(ServiceManager smanager) throws ServiceException
043    {
044        super.service(smanager);
045        _resolver = (AmetysObjectResolver) smanager.lookup(AmetysObjectResolver.ROLE);
046    }
047    
048    public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException
049    {
050        @SuppressWarnings("unchecked")
051        Map<String, Object> jsParameters = (Map<String, Object>) transientVars.get("parameters");
052        if (jsParameters == null)
053        {
054            throw new WorkflowException("no parameters defined");
055        }
056       
057        String eventId = (String) jsParameters.get("id");
058        UserIdentity user = getUser(transientVars);
059        
060        ModifiableCalendarEvent calendarEvent = _resolver.resolveById(eventId);
061        calendarEvent.setLastValidator(user);
062        
063        Date dateToday = new Date();
064        calendarEvent.setLastValidated(dateToday);
065        
066        calendarEvent.saveChanges();
067    }
068}