Search in sources :

Example 1 with DetailDefinition

use of org.jabref.logic.importer.fileformat.mods.DetailDefinition in project jabref by JabRef.

the class ModsImporter method parseRelatedModsGroup.

/**
     * Puts the Information from the RelatedModsGroup. It has the same elements like the ModsGroup.
     * But Informations like volume, issue and the pages appear here instead of in the ModsGroup.
     * Also if there appears a title field, then this indicates that is the name of journal which the article belongs to.
     */
private void parseRelatedModsGroup(Map<String, String> fields, List<Object> relatedModsGroup) {
    for (Object groupElement : relatedModsGroup) {
        if (groupElement instanceof PartDefinition) {
            PartDefinition part = (PartDefinition) groupElement;
            List<Object> detailOrExtentOrDate = part.getDetailOrExtentOrDate();
            for (Object object : detailOrExtentOrDate) {
                if (object instanceof DetailDefinition) {
                    DetailDefinition detail = (DetailDefinition) object;
                    List<JAXBElement<StringPlusLanguage>> numberOrCaptionOrTitle = detail.getNumberOrCaptionOrTitle();
                    //In the for loop should only be the value of the element that belongs to the detail not be null
                    for (JAXBElement<StringPlusLanguage> jaxbElement : numberOrCaptionOrTitle) {
                        StringPlusLanguage value = jaxbElement.getValue();
                        //put details like volume, issue,...
                        putIfValueNotNull(fields, detail.getType(), value.getValue());
                    }
                } else if (object instanceof ExtentDefinition) {
                    ExtentDefinition extentDefinition = (ExtentDefinition) object;
                    putPageInformation(extentDefinition, fields);
                }
            }
        } else if (groupElement instanceof TitleInfoDefinition) {
            TitleInfoDefinition titleInfo = (TitleInfoDefinition) groupElement;
            List<Object> titleOrSubTitleOrPartNumber = titleInfo.getTitleOrSubTitleOrPartNumber();
            for (Object object : titleOrSubTitleOrPartNumber) {
                if (object instanceof JAXBElement) {
                    @SuppressWarnings("unchecked") JAXBElement<StringPlusLanguage> element = (JAXBElement<StringPlusLanguage>) object;
                    if ("title".equals(element.getName().getLocalPart())) {
                        StringPlusLanguage journal = element.getValue();
                        fields.put(FieldName.JOURNAL, journal.getValue());
                    }
                }
            }
        }
    }
}
Also used : ExtentDefinition(org.jabref.logic.importer.fileformat.mods.ExtentDefinition) TitleInfoDefinition(org.jabref.logic.importer.fileformat.mods.TitleInfoDefinition) DetailDefinition(org.jabref.logic.importer.fileformat.mods.DetailDefinition) StringPlusLanguage(org.jabref.logic.importer.fileformat.mods.StringPlusLanguage) PartDefinition(org.jabref.logic.importer.fileformat.mods.PartDefinition) NamePartDefinition(org.jabref.logic.importer.fileformat.mods.NamePartDefinition) List(java.util.List) ArrayList(java.util.ArrayList) JAXBElement(javax.xml.bind.JAXBElement)

Example 2 with DetailDefinition

use of org.jabref.logic.importer.fileformat.mods.DetailDefinition in project jabref by JabRef.

the class ModsExportFormat method addDetail.

private void addDetail(String detailName, String value, PartDefinition partDefinition) {
    DetailDefinition detail = new DetailDefinition();
    StringPlusLanguage detailType = new StringPlusLanguage();
    detailType.setValue(value);
    detail.setType(detailName);
    JAXBElement<StringPlusLanguage> element = new JAXBElement<>(new QName(MODS_NAMESPACE_URI, "number"), StringPlusLanguage.class, detailType);
    detail.getNumberOrCaptionOrTitle().add(element);
    partDefinition.getDetailOrExtentOrDate().add(detail);
}
Also used : DetailDefinition(org.jabref.logic.importer.fileformat.mods.DetailDefinition) StringPlusLanguage(org.jabref.logic.importer.fileformat.mods.StringPlusLanguage) QName(javax.xml.namespace.QName) JAXBElement(javax.xml.bind.JAXBElement)

Aggregations

JAXBElement (javax.xml.bind.JAXBElement)2 DetailDefinition (org.jabref.logic.importer.fileformat.mods.DetailDefinition)2 StringPlusLanguage (org.jabref.logic.importer.fileformat.mods.StringPlusLanguage)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 QName (javax.xml.namespace.QName)1 ExtentDefinition (org.jabref.logic.importer.fileformat.mods.ExtentDefinition)1 NamePartDefinition (org.jabref.logic.importer.fileformat.mods.NamePartDefinition)1 PartDefinition (org.jabref.logic.importer.fileformat.mods.PartDefinition)1 TitleInfoDefinition (org.jabref.logic.importer.fileformat.mods.TitleInfoDefinition)1