Search in sources :

Example 11 with FundingList

use of org.orcid.jaxb.model.message.FundingList in project ORCID-Source by ORCID.

the class Jaxb2JpaAdapterImpl method setActivityDetails.

private void setActivityDetails(ProfileEntity profileEntity, OrcidActivities orcidActivities, UpdateOptions updateOptions) {
    Affiliations affiliations = null;
    FundingList orcidFundings = null;
    OrcidWorks orcidWorks = null;
    if (orcidActivities != null) {
        affiliations = orcidActivities.getAffiliations();
        orcidFundings = orcidActivities.getFundings();
        orcidWorks = orcidActivities.getOrcidWorks();
    }
    if (updateOptions.isUpdateAffiliations()) {
        setOrgAffiliationRelations(profileEntity, affiliations);
    }
    if (updateOptions.isUpdateFundings()) {
        setFundings(profileEntity, orcidFundings);
    }
    if (updateOptions.isUpdateWorks()) {
        setWorks(profileEntity, orcidWorks);
    }
}
Also used : FundingList(org.orcid.jaxb.model.message.FundingList) Affiliations(org.orcid.jaxb.model.message.Affiliations) OrcidWorks(org.orcid.jaxb.model.message.OrcidWorks)

Example 12 with FundingList

use of org.orcid.jaxb.model.message.FundingList in project ORCID-Source by ORCID.

the class OrcidProfileManagerImpl method dedupeFundings.

private FundingList dedupeFundings(FundingList fundings) {
    Set<Funding> fundingsSet = new LinkedHashSet<Funding>();
    for (Funding funding : fundings.getFundings()) {
        orcidProfileCleaner.clean(funding);
        fundingsSet.add(funding);
    }
    FundingList dedupedFundings = new FundingList();
    dedupedFundings.getFundings().addAll(fundingsSet);
    return dedupedFundings;
}
Also used : LinkedHashSet(java.util.LinkedHashSet) FundingList(org.orcid.jaxb.model.message.FundingList) Funding(org.orcid.jaxb.model.message.Funding)

Example 13 with FundingList

use of org.orcid.jaxb.model.message.FundingList in project ORCID-Source by ORCID.

the class OrcidSearchManagerImpl method buildSearchResultsFromPublicProfile.

private List<OrcidSearchResult> buildSearchResultsFromPublicProfile(List<OrcidSolrResult> solrResults) {
    List<OrcidSearchResult> orcidSearchResults = new ArrayList<OrcidSearchResult>();
    for (OrcidSolrResult solrResult : solrResults) {
        OrcidMessage orcidMessage = null;
        String orcid = solrResult.getOrcid();
        if (cachingSource.equals(SOLR)) {
            try (Reader reader = solrDao.findByOrcidAsReader(orcid)) {
                if (reader != null) {
                    BufferedReader br = new BufferedReader(reader);
                    orcidMessage = OrcidMessage.unmarshall(br);
                }
            } catch (IOException e) {
                throw new OrcidSearchException("Error closing record stream from solr search results for orcid: " + orcid, e);
            }
        }
        OrcidProfile orcidProfile = null;
        if (orcidMessage == null) {
            // Fall back to DB
            orcidProfile = orcidProfileCacheManager.retrievePublicBio(orcid);
        } else {
            orcidProfile = orcidMessage.getOrcidProfile();
        }
        if (orcidProfile != null) {
            OrcidSearchResult orcidSearchResult = new OrcidSearchResult();
            RelevancyScore relevancyScore = new RelevancyScore();
            relevancyScore.setValue(solrResult.getRelevancyScore());
            orcidSearchResult.setRelevancyScore(relevancyScore);
            OrcidWorks orcidWorksTitlesOnly = new OrcidWorks();
            OrcidWorks fullOrcidWorks = orcidProfile.retrieveOrcidWorks();
            if (fullOrcidWorks != null && !fullOrcidWorks.getOrcidWork().isEmpty()) {
                for (OrcidWork fullOrcidWork : fullOrcidWorks.getOrcidWork()) {
                    OrcidWork orcidWorkSubset = new OrcidWork();
                    orcidWorkSubset.setVisibility(fullOrcidWork.getVisibility());
                    orcidWorkSubset.setWorkTitle(fullOrcidWork.getWorkTitle());
                    orcidWorkSubset.setWorkExternalIdentifiers(fullOrcidWork.getWorkExternalIdentifiers());
                    orcidWorksTitlesOnly.getOrcidWork().add(orcidWorkSubset);
                }
            }
            FundingList reducedFundings = new FundingList();
            FundingList fullOrcidFundings = orcidProfile.retrieveFundings();
            if (fullOrcidFundings != null && !fullOrcidFundings.getFundings().isEmpty()) {
                for (Funding fullOrcidFunding : fullOrcidFundings.getFundings()) {
                    Funding reducedFunding = new Funding();
                    reducedFunding.setVisibility(fullOrcidFunding.getVisibility());
                    reducedFunding.setDescription(fullOrcidFunding.getDescription());
                    reducedFunding.setTitle(fullOrcidFunding.getTitle());
                    reducedFundings.getFundings().add(reducedFunding);
                }
            }
            orcidProfile.setOrcidWorks(orcidWorksTitlesOnly);
            orcidProfile.setFundings(reducedFundings);
            orcidSearchResult.setOrcidProfile(orcidProfile);
            orcidSearchResults.add(orcidSearchResult);
        }
    }
    return orcidSearchResults;
}
Also used : OrcidSearchException(org.orcid.core.exception.OrcidSearchException) Funding(org.orcid.jaxb.model.message.Funding) ArrayList(java.util.ArrayList) OrcidWork(org.orcid.jaxb.model.message.OrcidWork) Reader(java.io.Reader) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) OrcidWorks(org.orcid.jaxb.model.message.OrcidWorks) OrcidSearchResult(org.orcid.jaxb.model.message.OrcidSearchResult) OrcidProfile(org.orcid.jaxb.model.message.OrcidProfile) RelevancyScore(org.orcid.jaxb.model.message.RelevancyScore) OrcidSolrResult(org.orcid.utils.solr.entities.OrcidSolrResult) FundingList(org.orcid.jaxb.model.message.FundingList) OrcidMessage(org.orcid.jaxb.model.message.OrcidMessage) BufferedReader(java.io.BufferedReader)

Example 14 with FundingList

use of org.orcid.jaxb.model.message.FundingList in project ORCID-Source by ORCID.

the class OrcidProfileManagerImpl method dedupeFundings.

private void dedupeFundings(OrcidProfile orcidProfile) {
    OrcidActivities orcidActivities = orcidProfile.getOrcidActivities();
    if (orcidActivities != null) {
        FundingList fungins = orcidActivities.getFundings();
        if (fungins != null) {
            FundingList dedupedFundings = dedupeFundings(fungins);
            orcidActivities.setFundings(dedupedFundings);
        }
    }
}
Also used : FundingList(org.orcid.jaxb.model.message.FundingList) OrcidActivities(org.orcid.jaxb.model.message.OrcidActivities)

Example 15 with FundingList

use of org.orcid.jaxb.model.message.FundingList in project ORCID-Source by ORCID.

the class OrcidProfileManagerImpl method setFundingAmountsWithTheCorrectFormat.

/**
     * Replace the funding amount string into the desired format
     * 
     * @param updatedOrcidProfile
     *            The profile containing the new funding
     * */
private void setFundingAmountsWithTheCorrectFormat(OrcidProfile updatedOrcidProfile) throws IllegalArgumentException {
    FundingList fundings = updatedOrcidProfile.retrieveFundings();
    for (Funding funding : fundings.getFundings()) {
        // If the amount is not empty, update it
        if (funding.getAmount() != null && StringUtils.isNotBlank(funding.getAmount().getContent())) {
            String amount = funding.getAmount().getContent();
            Locale locale = localeManager.getLocale();
            ParsePosition parsePosition = new ParsePosition(0);
            DecimalFormat numberFormat = (DecimalFormat) NumberFormat.getNumberInstance(locale);
            DecimalFormatSymbols symbols = numberFormat.getDecimalFormatSymbols();
            /**
                 * When spaces are allowed, the grouping separator is the
                 * character 160, which is a non-breaking space So, lets change
                 * it so it uses the default space as a separator
                 * */
            if (symbols.getGroupingSeparator() == 160) {
                symbols.setGroupingSeparator(' ');
            }
            numberFormat.setDecimalFormatSymbols(symbols);
            Number number = numberFormat.parse(amount, parsePosition);
            String formattedAmount = number.toString();
            if (parsePosition.getIndex() != amount.length()) {
                double example = 1234567.89;
                NumberFormat numberFormatExample = NumberFormat.getNumberInstance(localeManager.getLocale());
                throw new IllegalArgumentException("The amount: " + amount + " doesn'n have the right format, it should use the format: " + numberFormatExample.format(example));
            }
            funding.getAmount().setContent(formattedAmount);
        }
    }
}
Also used : Locale(java.util.Locale) FundingList(org.orcid.jaxb.model.message.FundingList) DecimalFormatSymbols(java.text.DecimalFormatSymbols) Funding(org.orcid.jaxb.model.message.Funding) DecimalFormat(java.text.DecimalFormat) ParsePosition(java.text.ParsePosition) NumberFormat(java.text.NumberFormat)

Aggregations

FundingList (org.orcid.jaxb.model.message.FundingList)18 Funding (org.orcid.jaxb.model.message.Funding)12 OrcidProfile (org.orcid.jaxb.model.message.OrcidProfile)10 OrcidActivities (org.orcid.jaxb.model.message.OrcidActivities)9 OrcidWorks (org.orcid.jaxb.model.message.OrcidWorks)7 FundingTitle (org.orcid.jaxb.model.message.FundingTitle)6 Title (org.orcid.jaxb.model.message.Title)6 Affiliations (org.orcid.jaxb.model.message.Affiliations)5 OrcidWork (org.orcid.jaxb.model.message.OrcidWork)5 WorkTitle (org.orcid.jaxb.model.message.WorkTitle)5 CreditName (org.orcid.jaxb.model.message.CreditName)3 ExternalIdentifier (org.orcid.jaxb.model.message.ExternalIdentifier)3 ExternalIdentifiers (org.orcid.jaxb.model.message.ExternalIdentifiers)3 FundingExternalIdentifier (org.orcid.jaxb.model.message.FundingExternalIdentifier)3 FundingExternalIdentifiers (org.orcid.jaxb.model.message.FundingExternalIdentifiers)3 OrcidBio (org.orcid.jaxb.model.message.OrcidBio)3 OrcidMessage (org.orcid.jaxb.model.message.OrcidMessage)3 Organization (org.orcid.jaxb.model.message.Organization)3 OrganizationAddress (org.orcid.jaxb.model.message.OrganizationAddress)3 OtherName (org.orcid.jaxb.model.message.OtherName)3