/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package edu.harvard.iq.dataverse.engine.command.impl;
import edu.harvard.iq.dataverse.Dataverse;
import edu.harvard.iq.dataverse.Template;
import edu.harvard.iq.dataverse.authorization.Permission;
import edu.harvard.iq.dataverse.engine.command.AbstractCommand;
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 java.util.List;
/**
*
* @author skraffmi
*/
@RequiredPermissions( Permission.EditDataverse )
public class DeleteTemplateCommand extends AbstractCommand<Dataverse> {
private final Template doomed;
private final Dataverse editedDv;
private final List<Dataverse> dvWDefaultTemplate;
public DeleteTemplateCommand(DataverseRequest aRequest, Dataverse editedDv , Template doomed, List<Dataverse> dvWDefaultTemplate) {
super(aRequest, editedDv);
this.editedDv = editedDv;
this.doomed = doomed;
this.dvWDefaultTemplate = dvWDefaultTemplate;
}
@Override
public Dataverse execute(CommandContext ctxt) throws CommandException {
Dataverse merged = ctxt.em().merge(editedDv);
if (!dvWDefaultTemplate.isEmpty()){
for (Dataverse remove: dvWDefaultTemplate){
remove.setDefaultTemplate(null);
ctxt.em().merge(remove);
}
}
Template doomedAndMerged = ctxt.em().merge(doomed);
ctxt.em().remove(doomedAndMerged);
return merged;
}
}