nl.strohalm.cyclos.controls.groups.customizedFiles.StopCustomizingGroupFileAction.java Source code

Java tutorial

Introduction

Here is the source code for nl.strohalm.cyclos.controls.groups.customizedFiles.StopCustomizingGroupFileAction.java

Source

/*
 This file is part of Cyclos.
    
 Cyclos is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 2 of the License, or
 (at your option) any later version.
    
 Cyclos is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 GNU General Public License for more details.
    
 You should have received a copy of the GNU General Public License
 along with Cyclos; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    
 */
package nl.strohalm.cyclos.controls.groups.customizedFiles;

import java.io.File;

import nl.strohalm.cyclos.annotations.Inject;
import nl.strohalm.cyclos.controls.ActionContext;
import nl.strohalm.cyclos.controls.BaseAction;
import nl.strohalm.cyclos.entities.customization.files.CustomizedFile;
import nl.strohalm.cyclos.entities.groups.AdminGroup;
import nl.strohalm.cyclos.entities.groups.MemberGroup;
import nl.strohalm.cyclos.entities.groups.OperatorGroup;
import nl.strohalm.cyclos.services.customization.CustomizedFileService;
import nl.strohalm.cyclos.utils.ActionHelper;
import nl.strohalm.cyclos.utils.CustomizationHelper;
import nl.strohalm.cyclos.utils.validation.ValidationException;

import org.apache.commons.lang.ArrayUtils;
import org.apache.struts.action.ActionForward;

/**
 * Action used to stop customizing a file for a given group
 * @author luis
 */
public class StopCustomizingGroupFileAction extends BaseAction {

    private CustomizedFileService customizedFileService;

    public CustomizedFileService getCustomizedFileService() {
        return customizedFileService;
    }

    @Inject
    public void setCustomizedFileService(final CustomizedFileService customizedFileService) {
        this.customizedFileService = customizedFileService;
    }

    @Override
    protected ActionForward executeAction(final ActionContext context) throws Exception {
        final StopCustomizingGroupFileForm form = context.getForm();
        final long id = form.getFileId();
        final long groupId = form.getGroupId();
        if (id <= 0L || groupId <= 0L) {
            throw new ValidationException();
        }
        final CustomizedFile file = customizedFileService.load(id, CustomizedFile.Relationships.GROUP);
        if (file.getGroup() == null || !file.getGroup().getId().equals(groupId)) {
            throw new ValidationException();
        }

        if (file.getGroup() instanceof MemberGroup) { // and BrokerGroup
            customizedFileService.stopCustomizingForMemberGroup(file);
        } else if (file.getGroup() instanceof OperatorGroup) {
            customizedFileService.stopCustomizingForOperatorGroup(file);
        } else if (file.getGroup() instanceof AdminGroup) {
            customizedFileService.stopCustomizingForAdminGroup(file);
        } else {
            throw new ValidationException();
        }
        context.sendMessage("group.customizedFiles.removed");

        // Remove the physical file
        final File physicalFile = CustomizationHelper.customizedFileOf(getServlet().getServletContext(), file);
        physicalFile.delete();
        // Remove the directory if empty
        final File dir = physicalFile.getParentFile();
        if (ArrayUtils.isEmpty(dir.list())) {
            dir.delete();
        }
        return ActionHelper.redirectWithParam(context.getRequest(), context.getSuccessForward(), "groupId",
                groupId);
    }

}