/*
* 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.Dataset;
import edu.harvard.iq.dataverse.DatasetLinkingDataverse;
import edu.harvard.iq.dataverse.Dataverse;
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.sql.Timestamp;
import java.util.Date;
/**
*
* @author skraffmiller
*/
@RequiredPermissions(Permission.PublishDataverse)
public class LinkDatasetCommand extends AbstractCommand<DatasetLinkingDataverse> {
private final Dataset linkedDataset;
private final Dataverse linkingDataverse;
public LinkDatasetCommand(DataverseRequest aRequest, Dataverse dataverse, Dataset linkedDataset) {
super(aRequest, dataverse);
this.linkedDataset = linkedDataset;
this.linkingDataverse = dataverse;
}
@Override
public DatasetLinkingDataverse execute(CommandContext ctxt) throws CommandException {
DatasetLinkingDataverse datasetLinkingDataverse = new DatasetLinkingDataverse();
datasetLinkingDataverse.setDataset(linkedDataset);
datasetLinkingDataverse.setLinkingDataverse(linkingDataverse);
datasetLinkingDataverse.setLinkCreateTime(new Timestamp(new Date().getTime()));
ctxt.dsLinking().save(datasetLinkingDataverse);
ctxt.em().flush();
boolean doNormalSolrDocCleanUp = true;
ctxt.index().indexDataset(linkedDataset, doNormalSolrDocCleanUp);
return datasetLinkingDataverse;
}
}