package edu.harvard.iq.dataverse.api.datadeposit; import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.Dataverse; import java.util.logging.Logger; import org.apache.abdera.i18n.iri.IRI; import org.swordapp.server.DepositReceipt; public class ReceiptGenerator { private static final Logger logger = Logger.getLogger(ReceiptGenerator.class.getCanonicalName()); DepositReceipt createDatasetReceipt(String baseUrl, Dataset dataset) { logger.fine("baseUrl was: " + baseUrl); DepositReceipt depositReceipt = new DepositReceipt(); String globalId = dataset.getGlobalId(); String editIri = baseUrl + "/edit/study/" + globalId; depositReceipt.setEditIRI(new IRI(editIri)); /** * @todo: should setLocation depend on if an atom entry or a zip file * was deposited? (This @todo has been carried over from the DVN 3.x * version.) */ depositReceipt.setLocation(new IRI(editIri)); depositReceipt.setEditMediaIRI(new IRI(baseUrl + "/edit-media/study/" + globalId)); depositReceipt.setStatementURI("application/atom+xml;type=feed", baseUrl + "/statement/study/" + globalId); depositReceipt.addDublinCore("bibliographicCitation", dataset.getLatestVersion().getCitation()); depositReceipt.setSplashUri(dataset.getPersistentURL()); return depositReceipt; } DepositReceipt createDataverseReceipt(String baseUrl, Dataverse dataverse) { logger.fine("baseUrl was: " + baseUrl); DepositReceipt depositReceipt = new DepositReceipt(); String globalId = dataverse.getAlias(); String collectionIri = baseUrl + "/collection/dataverse/" + globalId; depositReceipt.setSplashUri(collectionIri); /** * @todo We have to include an "edit" IRI or else we get * NullPointerException in getAbderaEntry at * https://github.com/swordapp/JavaServer2.0/blob/sword2-server-1.0/src/main/java/org/swordapp/server/DepositReceipt.java#L52 * * Do we want to support a replaceMetadata of dataverses? Probably not. * Let's do that with the native API. * * Typically, we only operate on the "collection" IRI for dataverses, to * create a dataset. */ String editIri = baseUrl + "/edit/dataverse/" + globalId; depositReceipt.setEditIRI(new IRI(editIri)); return depositReceipt; } }