package edu.harvard.iq.dataverse.engine.command.impl;
import edu.harvard.iq.dataverse.Dataset;
import edu.harvard.iq.dataverse.RoleAssignment;
import edu.harvard.iq.dataverse.authorization.Permission;
import edu.harvard.iq.dataverse.authorization.users.PrivateUrlUser;
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;
import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException;
import java.util.List;
import java.util.logging.Logger;
@RequiredPermissions(Permission.ManageDatasetPermissions)
public class DeletePrivateUrlCommand extends AbstractVoidCommand {
private static final Logger logger = Logger.getLogger(DeletePrivateUrlCommand.class.getCanonicalName());
final Dataset dataset;
public DeletePrivateUrlCommand(DataverseRequest aRequest, Dataset theDataset) {
super(aRequest, theDataset);
dataset = theDataset;
}
@Override
protected void executeImpl(CommandContext ctxt) throws CommandException {
logger.fine("Executing DeletePrivateUrlCommand....");
if (dataset == null) {
/**
* @todo Internationalize this.
*/
String message = "Can't delete Private URL. Dataset is null.";
logger.info(message);
throw new IllegalCommandException(message, this);
}
PrivateUrlUser privateUrlUser = new PrivateUrlUser(dataset.getId());
List<RoleAssignment> roleAssignments = ctxt.roles().directRoleAssignments(privateUrlUser, dataset);
for (RoleAssignment roleAssignment : roleAssignments) {
ctxt.engine().submit(new RevokeRoleCommand(roleAssignment, getRequest()));
}
}
}