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);
}
}
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;
}
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;
}
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);
}
}
}
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);
}
}
}
Aggregations