private static String dto2ddi(DatasetDTO datasetDto) throws XMLStreamException { OutputStream outputStream = new ByteArrayOutputStream(); XMLStreamWriter xmlw = XMLOutputFactory.newInstance().createXMLStreamWriter(outputStream); xmlw.writeStartElement("codeBook"); xmlw.writeDefaultNamespace("http://www.icpsr.umich.edu/DDI"); writeAttribute(xmlw, "version", "2.0"); createStdyDscr(xmlw, datasetDto); createdataDscr(xmlw, datasetDto.getDatasetVersion().getFiles()); xmlw.writeEndElement(); // codeBook xmlw.flush(); String xml = outputStream.toString(); return XmlPrinter.prettyPrintXml(xml); }
/** * @todo This is just a stub, copied from DDIExportServiceBean. It should produce valid DDI based * on http://guides.dataverse.org/en/latest/developers/tools.html#msv but it is incomplete and * will be worked on as part of https://github.com/IQSS/dataverse/issues/2579 . We'll want to * reference the DVN 3.x code for creating a complete DDI. * @todo Rename this from "study" to "dataset". */ private static void createStdyDscr(XMLStreamWriter xmlw, DatasetDTO datasetDto) throws XMLStreamException { String title = dto2title(datasetDto.getDatasetVersion()); String authors = dto2authors(datasetDto.getDatasetVersion()); String persistentAgency = datasetDto.getProtocol(); String persistentAuthority = datasetDto.getAuthority(); String persistentId = datasetDto.getIdentifier(); String citation = datasetDto.getDatasetVersion().getCitation(); xmlw.writeStartElement("stdyDscr"); xmlw.writeStartElement("citation"); xmlw.writeStartElement("titlStmt"); xmlw.writeStartElement("titl"); xmlw.writeCharacters(title); xmlw.writeEndElement(); // titl xmlw.writeStartElement("IDNo"); writeAttribute(xmlw, "agency", persistentAgency); xmlw.writeCharacters(persistentAuthority + "/" + persistentId); xmlw.writeEndElement(); // IDNo xmlw.writeEndElement(); // titlStmt xmlw.writeStartElement("rspStmt"); xmlw.writeStartElement("AuthEnty"); xmlw.writeCharacters(authors); xmlw.writeEndElement(); // AuthEnty xmlw.writeEndElement(); // rspStmt xmlw.writeStartElement("biblCit"); xmlw.writeCharacters(citation); xmlw.writeEndElement(); // biblCit xmlw.writeEndElement(); // citation xmlw.writeEndElement(); // stdyDscr }