private void getMetaDataIdentificationInfo()

in tika-parsers/tika-parsers-extended/tika-parser-scientific-module/src/main/java/org/apache/tika/parser/geoinfo/GeographicInformationParser.java [234:386]


    private void getMetaDataIdentificationInfo(Metadata metadata, DefaultMetadata defaultMetaData) {
        ArrayList<Identification> identifications =
                (ArrayList<Identification>) defaultMetaData.getIdentificationInfo();
        for (Identification i : identifications) {
            DefaultDataIdentification defaultDataIdentification = (DefaultDataIdentification) i;
            if (i.getCitation() != null && i.getCitation().getTitle() != null) {
                metadata.add("IdentificationInfoCitationTitle ",
                        i.getCitation().getTitle().toString());
            }

            ArrayList<CitationDate> dateArrayList =
                    (ArrayList<CitationDate>) i.getCitation().getDates();
            for (CitationDate d : dateArrayList) {
                if (d.getDateType() != null) {
                    String date = DateUtils.formatDate(d.getDate());
                    metadata.add("CitationDate ", d.getDateType().name() + "-->" + date);
                }
            }
            ArrayList<ResponsibleParty> responsiblePartyArrayList =
                    (ArrayList<ResponsibleParty>) i.getCitation().getCitedResponsibleParties();
            for (ResponsibleParty r : responsiblePartyArrayList) {
                if (r.getRole() != null) {
                    metadata.add("CitedResponsiblePartyRole ", r.getRole().toString());
                }
                if (r.getIndividualName() != null) {
                    metadata.add("CitedResponsiblePartyName ", r.getIndividualName());
                }
                if (r.getOrganisationName() != null) {
                    metadata.add("CitedResponsiblePartyOrganizationName ",
                            r.getOrganisationName().toString());
                }
                if (r.getPositionName() != null) {
                    metadata.add("CitedResponsiblePartyPositionName ",
                            r.getPositionName().toString());
                }

                if (r.getContactInfo() != null) {
                    for (String s : r.getContactInfo().getAddress().getElectronicMailAddresses()) {
                        metadata.add("CitedResponsiblePartyEMail ", s);
                    }
                }
            }
            if (i.getAbstract() != null) {
                metadata.add("IdentificationInfoAbstract ", i.getAbstract().toString());
            }
            for (Progress p : i.getStatus()) {
                metadata.add("IdentificationInfoStatus ", p.name());
            }
            ArrayList<Format> formatArrayList = (ArrayList<Format>) i.getResourceFormats();
            for (Format f : formatArrayList) {
                if (f.getName() != null) {
                    metadata.add("ResourceFormatSpecificationAlternativeTitle ",
                            f.getName().toString());
                }
            }
            Map<Locale, Charset> localeCharsetMap =
                    defaultDataIdentification.getLocalesAndCharsets();
            for (Locale l : localeCharsetMap.keySet()) {
                metadata.add("IdentificationInfoLanguage-->", l.getDisplayLanguage(Locale.ENGLISH));
            }
            CodeListSet<TopicCategory> categoryList =
                    (CodeListSet<TopicCategory>) defaultDataIdentification.getTopicCategories();
            for (TopicCategory t : categoryList) {
                metadata.add("IdentificationInfoTopicCategory-->", t.name());
            }
            ArrayList<Keywords> keywordList = (ArrayList<Keywords>) i.getDescriptiveKeywords();
            int j = 1;
            for (Keywords k : keywordList) {
                j++;
                ArrayList<InternationalString> stringList =
                        (ArrayList<InternationalString>) k.getKeywords();
                for (InternationalString s : stringList) {
                    metadata.add("Keywords " + j, s.toString());
                }
                if (k.getType() != null) {
                    metadata.add("KeywordsType " + j, k.getType().name());
                }
                if (k.getThesaurusName() != null && k.getThesaurusName().getTitle() != null) {
                    metadata.add("ThesaurusNameTitle " + j,
                            k.getThesaurusName().getTitle().toString());
                }
                if (k.getThesaurusName() != null &&
                        k.getThesaurusName().getAlternateTitles() != null) {
                    metadata.add("ThesaurusNameAlternativeTitle " + j,
                            k.getThesaurusName().getAlternateTitles().toString());
                }

                ArrayList<CitationDate> citationDates =
                        (ArrayList<CitationDate>) k.getThesaurusName().getDates();
                for (CitationDate cd : citationDates) {
                    if (cd.getDateType() != null) {
                        String date = DateUtils.formatDate(cd.getDate());
                        metadata.add("ThesaurusNameDate ", cd.getDateType().name() + "-->" + date);
                    }
                }
            }
            ArrayList<DefaultLegalConstraints> constraintList =
                    (ArrayList<DefaultLegalConstraints>) i.getResourceConstraints();

            for (DefaultLegalConstraints c : constraintList) {
                for (Restriction r : c.getAccessConstraints()) {
                    metadata.add("AccessContraints ", r.name());
                }
                for (InternationalString s : c.getOtherConstraints()) {
                    metadata.add("OtherConstraints ", s.toString());
                }
                for (Restriction r : c.getUseConstraints()) {
                    metadata.add("UserConstraints ", r.name());
                }

            }
            Collection<Extent> extentList = ((DefaultDataIdentification) i).getExtents();
            for (Extent e : extentList) {
                ArrayList<GeographicExtent> geoElements =
                        (ArrayList<GeographicExtent>) e.getGeographicElements();
                for (GeographicExtent g : geoElements) {

                    if (g instanceof DefaultGeographicDescription) {
                        if (((DefaultGeographicDescription) g).getGeographicIdentifier() != null &&
                                ((DefaultGeographicDescription) g).getGeographicIdentifier()
                                        .getCode() != null) {
                            metadata.add("GeographicIdentifierCode ",
                                    ((DefaultGeographicDescription) g).getGeographicIdentifier()
                                            .getCode());
                        }
                        if (((DefaultGeographicDescription) g).getGeographicIdentifier() != null &&
                                ((DefaultGeographicDescription) g).getGeographicIdentifier()
                                        .getAuthority() != null &&
                                ((DefaultGeographicDescription) g).getGeographicIdentifier()
                                        .getAuthority().getTitle() != null) {
                            metadata.add("GeographicIdentifierAuthorityTitle ",
                                    ((DefaultGeographicDescription) g).getGeographicIdentifier()
                                            .getAuthority().getTitle().toString());
                        }

                        for (InternationalString s : ((DefaultGeographicDescription) g)
                                .getGeographicIdentifier().getAuthority().getAlternateTitles()) {
                            metadata.add("GeographicIdentifierAuthorityAlternativeTitle ",
                                    s.toString());
                        }
                        for (CitationDate cd : ((DefaultGeographicDescription) g)
                                .getGeographicIdentifier().getAuthority().getDates()) {
                            if (cd.getDateType() != null && cd.getDate() != null) {
                                String date = DateUtils.formatDate(cd.getDate());
                                metadata.add("GeographicIdentifierAuthorityDate ",
                                        cd.getDateType().name() + " " + date);
                            }
                        }
                    }
                }
            }
        }
    }