Package org.eurekastreams.server.action.execution.profile

Source Code of org.eurekastreams.server.action.execution.profile.DeleteBannerExecution

/*
* Copyright (c) 2010 Lockheed Martin Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.eurekastreams.server.action.execution.profile;

import org.apache.commons.logging.Log;
import org.eurekastreams.commons.actions.ExecutionStrategy;
import org.eurekastreams.commons.actions.context.PrincipalActionContext;
import org.eurekastreams.commons.exceptions.ExecutionException;
import org.eurekastreams.commons.logging.LogFactory;
import org.eurekastreams.server.domain.Bannerable;
import org.eurekastreams.server.persistence.mappers.BannerableMapper;
import org.eurekastreams.server.persistence.mappers.requests.UpdateCachedBannerMapperRequest;
import org.eurekastreams.server.persistence.mappers.stream.BaseArgCachedDomainMapper;
import org.eurekastreams.server.service.actions.strategies.ImageWriter;

/**
* Action to remove the banner id for a group or org.
*
*/
public class DeleteBannerExecution implements ExecutionStrategy<PrincipalActionContext>
{
    /**
     * Logger.
     */
    private Log log = LogFactory.make();

    /**
     * Mapper used to get bannerable entity data from the db.
     */
    private BannerableMapper mapper = null;

    /**
     * Mapper used to update the banner id for the cached version of the entity.
     */
    private BaseArgCachedDomainMapper<UpdateCachedBannerMapperRequest, Object> updateCachedBannerMapper;

    /**
     * The image writer to write stuff to the disk.
     */
    private ImageWriter imageWriter;

    /**
     * Constructor for action.
     *
     * @param inMapper
     *            the bannerableEntity mapper.
     * @param inUpdateCachedBannerMapper
     *            the cache mapper to update the domain group or org.
     * @param inImageWriter
     *            image writer
     */
    public DeleteBannerExecution(final BannerableMapper inMapper,
            final BaseArgCachedDomainMapper<UpdateCachedBannerMapperRequest, Object> inUpdateCachedBannerMapper,
            final ImageWriter inImageWriter)
    {
        imageWriter = inImageWriter;
        mapper = inMapper;
        updateCachedBannerMapper = inUpdateCachedBannerMapper;
    }

    /**
     * Returns true or false if the banner was removed for the group or org.
     *
     * @param inActionContext
     *            the action context.
     * @return true if the banner was removed for the group or org.
     *
     * @throws ExecutionException
     *             upon exception.
     */
    @Override
    public Bannerable execute(final PrincipalActionContext inActionContext) throws ExecutionException
    {
        try
        {
            Long entityId = (Long) inActionContext.getParams();

            Bannerable bannerObject = mapper.getBannerableDTO(entityId);

            // If bannerId wasn't already Null then you need to delete the avatar from the server.
            if (bannerObject.getBannerId() != null)
            {
                imageWriter.delete("n" + bannerObject.getBannerId());
            }
            // Update the db.
            boolean result = mapper.updateBannerId(entityId, null);
            // Update the cache.
            updateCachedBannerMapper.execute(new UpdateCachedBannerMapperRequest(null, entityId));

            return bannerObject;
        }
        catch (Exception ex)
        {
            log.error("Error deleting banner.", ex);
            throw new ExecutionException("Error deleting banner.", ex);
        }
    }
}
TOP

Related Classes of org.eurekastreams.server.action.execution.profile.DeleteBannerExecution

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.