/** * @param xmlw - stream to write DublinCore XML for the study * @param study - get metadata from released version of the study. * @throws XMLStreamException * @throws IllegalArgumentException - if study does not have a released version. */ public void createDC(XMLStreamWriter xmlw, Study study) throws XMLStreamException { if (study.getReleasedVersion() == null) { throw new IllegalArgumentException( "Study does not have released version, study.id = " + study.getId()); } Metadata metadata = study.getReleasedVersion().getMetadata(); xmlw.writeStartElement("oai_dc:dc"); xmlw.writeAttribute("xmlns:oai_dc", "http://www.openarchives.org/OAI/2.0/oai_dc/"); xmlw.writeAttribute("xmlns:dc", "http://purl.org/dc/elements/1.1/"); xmlw.writeAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); xmlw.writeAttribute( "xsi:schemaLocation", "http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd"); // Title xmlw.writeStartElement("dc:title"); xmlw.writeCharacters(metadata.getTitle()); xmlw.writeEndElement(); // Identifier xmlw.writeStartElement("dc:identifier"); xmlw.writeCharacters(study.getPersistentURL()); xmlw.writeEndElement(); // Creator for (StudyAuthor author : metadata.getStudyAuthors()) { xmlw.writeStartElement("dc:creator"); xmlw.writeCharacters(author.getName()); xmlw.writeEndElement(); } // Publisher for (StudyProducer producer : metadata.getStudyProducers()) { xmlw.writeStartElement("dc:publisher"); xmlw.writeCharacters(producer.getName()); xmlw.writeEndElement(); } // Date if (!StringUtil.isEmpty(metadata.getProductionDate())) { xmlw.writeStartElement("dc:date"); xmlw.writeCharacters(metadata.getProductionDate()); xmlw.writeEndElement(); } // Relation for (StudyRelPublication rp : metadata.getStudyRelPublications()) { xmlw.writeStartElement("dc:relation"); xmlw.writeCharacters(rp.getText()); xmlw.writeEndElement(); } for (StudyRelMaterial rm : metadata.getStudyRelMaterials()) { xmlw.writeStartElement("dc:relation"); xmlw.writeCharacters(rm.getText()); xmlw.writeEndElement(); } for (StudyRelStudy rs : metadata.getStudyRelStudies()) { xmlw.writeStartElement("dc:relation"); xmlw.writeCharacters(rs.getText()); xmlw.writeEndElement(); } for (StudyOtherRef or : metadata.getStudyOtherRefs()) { xmlw.writeStartElement("dc:relation"); xmlw.writeCharacters(or.getText()); xmlw.writeEndElement(); } // Subject for (StudyKeyword keyword : metadata.getStudyKeywords()) { xmlw.writeStartElement("dc:subject"); xmlw.writeCharacters(keyword.getValue()); xmlw.writeEndElement(); } for (StudyTopicClass topicClass : metadata.getStudyTopicClasses()) { xmlw.writeStartElement("dc:subject"); xmlw.writeCharacters(topicClass.getValue()); xmlw.writeEndElement(); } // Description for (StudyAbstract studyAbstract : metadata.getStudyAbstracts()) { xmlw.writeStartElement("dc:description"); xmlw.writeCharacters(studyAbstract.getText()); xmlw.writeEndElement(); } xmlw.writeStartElement("dc:description"); xmlw.writeCharacters("Citation: " + metadata.getTextCitation()); xmlw.writeEndElement(); // Coverage writeCoverage(xmlw, metadata); // Type if (!StringUtil.isEmpty(metadata.getKindOfData())) { xmlw.writeStartElement("dc:type"); xmlw.writeCharacters(metadata.getKindOfData()); xmlw.writeEndElement(); } // Source if (!StringUtil.isEmpty(metadata.getDataSources())) { xmlw.writeStartElement("dc:source"); xmlw.writeCharacters(metadata.getDataSources()); xmlw.writeEndElement(); } // Rights writeRights(xmlw, metadata); // End root element xmlw.writeEndElement(); }