package edu.harvard.iq.dataverse.engine.command.impl;
import edu.harvard.iq.dataverse.authorization.Permission;
import edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroup;
import edu.harvard.iq.dataverse.engine.command.AbstractVoidCommand;
import edu.harvard.iq.dataverse.engine.command.CommandContext;
import edu.harvard.iq.dataverse.engine.command.DataverseRequest;
import edu.harvard.iq.dataverse.engine.command.RequiredPermissions;
import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
/**
*
* @author michael
*/
@RequiredPermissions( Permission.ManageDataversePermissions )
public class DeleteExplicitGroupCommand extends AbstractVoidCommand {
private final ExplicitGroup explicitGroup;
public DeleteExplicitGroupCommand(DataverseRequest aRequest, ExplicitGroup anExplicitGroup) {
super(aRequest, anExplicitGroup.getOwner());
explicitGroup = anExplicitGroup;
}
@Override
protected void executeImpl(CommandContext ctxt) throws CommandException {
ExplicitGroup merged = ctxt.em().merge(explicitGroup);
// Remove this group from all explicit groups it belongs to.
ctxt.em().createNativeQuery(
"DELETE FROM explicitgroup_explicitgroup "
+ "WHERE containedexplicitgroups_id=" + merged.getId()
).executeUpdate();
ctxt.explicitGroups().removeGroup( merged );
}
}