use of org.orcid.persistence.jpa.entities.OrgEntity in project ORCID-Source by ORCID.
the class AffiliationsManagerImpl method createAffiliation.
private Affiliation createAffiliation(String orcid, Affiliation affiliation, boolean isApiRequest, AffiliationType type) {
SourceEntity sourceEntity = sourceManager.retrieveSourceEntity();
activityValidator.validateAffiliation(affiliation, sourceEntity, true, isApiRequest, null);
if (isApiRequest) {
checkAffiliationExternalIDsForDuplicates(orcid, affiliation, sourceEntity);
}
OrgAffiliationRelationEntity entity = null;
switch(type) {
case DISTINCTION:
entity = jpaJaxbDistinctionAdapter.toOrgAffiliationRelationEntity((Distinction) affiliation);
break;
case EDUCATION:
entity = jpaJaxbEducationAdapter.toOrgAffiliationRelationEntity((Education) affiliation);
break;
case EMPLOYMENT:
entity = jpaJaxbEmploymentAdapter.toOrgAffiliationRelationEntity((Employment) affiliation);
break;
case INVITED_POSITION:
entity = jpaJaxbInvitedPositionAdapter.toOrgAffiliationRelationEntity((InvitedPosition) affiliation);
break;
case MEMBERSHIP:
entity = jpaJaxbMembershipAdapter.toOrgAffiliationRelationEntity((Membership) affiliation);
break;
case QUALIFICATION:
entity = jpaJaxbQualificationAdapter.toOrgAffiliationRelationEntity((Qualification) affiliation);
break;
case SERVICE:
entity = jpaJaxbServiceAdapter.toOrgAffiliationRelationEntity((Service) affiliation);
break;
}
// Updates the give organization with the latest organization from
// database
OrgEntity updatedOrganization = orgManager.getOrgEntity(affiliation);
entity.setOrg(updatedOrganization);
// Set source id
if (sourceEntity.getSourceProfile() != null) {
entity.setSourceId(sourceEntity.getSourceProfile().getId());
}
if (sourceEntity.getSourceClient() != null) {
entity.setClientSourceId(sourceEntity.getSourceClient().getId());
}
ProfileEntity profile = profileEntityCacheManager.retrieve(orcid);
entity.setProfile(profile);
setIncomingWorkPrivacy(entity, profile);
entity.setAffiliationType(type);
orgAffiliationRelationDao.persist(entity);
orgAffiliationRelationDao.flush();
Affiliation result = null;
switch(type) {
case DISTINCTION:
notificationManager.sendAmendEmail(orcid, AmendedSection.DISTINCTION, createItemList(entity));
result = jpaJaxbDistinctionAdapter.toDistinction(entity);
break;
case EDUCATION:
notificationManager.sendAmendEmail(orcid, AmendedSection.EDUCATION, createItemList(entity));
result = jpaJaxbEducationAdapter.toEducation(entity);
break;
case EMPLOYMENT:
notificationManager.sendAmendEmail(orcid, AmendedSection.EMPLOYMENT, createItemList(entity));
result = jpaJaxbEmploymentAdapter.toEmployment(entity);
break;
case INVITED_POSITION:
notificationManager.sendAmendEmail(orcid, AmendedSection.INVITED_POSITION, createItemList(entity));
result = jpaJaxbInvitedPositionAdapter.toInvitedPosition(entity);
break;
case MEMBERSHIP:
notificationManager.sendAmendEmail(orcid, AmendedSection.MEMBERSHIP, createItemList(entity));
result = jpaJaxbMembershipAdapter.toMembership(entity);
break;
case QUALIFICATION:
notificationManager.sendAmendEmail(orcid, AmendedSection.QUALIFICATION, createItemList(entity));
result = jpaJaxbQualificationAdapter.toQualification(entity);
break;
case SERVICE:
notificationManager.sendAmendEmail(orcid, AmendedSection.SERVICE, createItemList(entity));
result = jpaJaxbServiceAdapter.toService(entity);
break;
}
return result;
}
use of org.orcid.persistence.jpa.entities.OrgEntity in project ORCID-Source by ORCID.
the class Jaxb2JpaAdapterImpl method getOrgEntity.
/**
* Get an OrgEntity object based on the provided orcidGrant
*
* @param orcidGrant
* @return a OrgEntity based on the provided OrcidGrant
*/
private OrgEntity getOrgEntity(Funding orcidFunding) {
if (orcidFunding != null) {
OrgEntity orgEntity = new OrgEntity();
Organization organization = orcidFunding.getOrganization();
orgEntity.setName(organization.getName());
OrganizationAddress address = organization.getAddress();
orgEntity.setCity(address.getCity());
orgEntity.setRegion(address.getRegion());
orgEntity.setCountry(address.getCountry());
if (organization.getDisambiguatedOrganization() != null && organization.getDisambiguatedOrganization().getDisambiguatedOrganizationIdentifier() != null) {
orgEntity.setOrgDisambiguated(orgDisambiguatedDao.findBySourceIdAndSourceType(organization.getDisambiguatedOrganization().getDisambiguatedOrganizationIdentifier(), organization.getDisambiguatedOrganization().getDisambiguationSource()));
}
return orgManager.createUpdate(orgEntity);
}
return null;
}
use of org.orcid.persistence.jpa.entities.OrgEntity in project ORCID-Source by ORCID.
the class Jaxb2JpaAdapterImpl method getProfileFundingEntity.
/**
* Get a ProfileFundingEntity based on a Grant object
*
* @param funding
* @param exisitingProfileFundingEntity
* @return a ProfileFundingEntity created from the provided funding
*/
private ProfileFundingEntity getProfileFundingEntity(Funding funding, ProfileFundingEntity exisitingProfileFundingEntity) {
if (funding != null) {
// Get the org
OrgEntity orgEntity = getOrgEntity(funding);
ProfileFundingEntity profileFundingEntity = null;
if (exisitingProfileFundingEntity == null) {
String putCode = funding.getPutCode();
if (StringUtils.isNotBlank(putCode) && !"-1".equals(putCode)) {
throw new IllegalArgumentException("Invalid put-code was supplied for a funding: " + putCode);
}
profileFundingEntity = new ProfileFundingEntity();
// Set source
setSource(sourceManager.retrieveSourceEntity(), profileFundingEntity);
} else {
profileFundingEntity = exisitingProfileFundingEntity;
profileFundingEntity.clean();
}
FuzzyDate startDate = funding.getStartDate();
FuzzyDate endDate = funding.getEndDate();
if (funding.getAmount() != null) {
String amount = StringUtils.isNotBlank(funding.getAmount().getContent()) ? funding.getAmount().getContent() : null;
String currencyCode = funding.getAmount().getCurrencyCode() != null ? funding.getAmount().getCurrencyCode() : null;
if (StringUtils.isNotBlank(amount)) {
try {
BigDecimal bigDecimalAmount = getAmountAsBigDecimal(amount);
profileFundingEntity.setNumericAmount(bigDecimalAmount);
} catch (Exception e) {
String sample = getSampleAmountInProperFormat(localeManager.getLocale());
throw new IllegalArgumentException("Cannot cast amount: " + amount + " proper format is: " + sample);
}
profileFundingEntity.setCurrencyCode(currencyCode);
}
}
profileFundingEntity.setContributorsJson(getFundingContributorsJson(funding.getFundingContributors()));
profileFundingEntity.setDescription(StringUtils.isNotBlank(funding.getDescription()) ? funding.getDescription() : null);
profileFundingEntity.setEndDate(endDate != null ? new EndDateEntity(endDate) : null);
JSONFundingExternalIdentifiersConverterV1 fundingExternalIDConverter = new JSONFundingExternalIdentifiersConverterV1();
String fundingExternalIdentifiersJSONString = fundingExternalIDConverter.convertTo(funding.getFundingExternalIdentifiers());
profileFundingEntity.setExternalIdentifiersJson(fundingExternalIdentifiersJSONString);
profileFundingEntity.setStartDate(startDate != null ? new StartDateEntity(startDate) : null);
FundingTitle fundingTitle = funding.getTitle();
if (fundingTitle != null) {
String title = null, translatedTitle = null, languageCode = null;
if (fundingTitle.getTitle() != null)
title = fundingTitle.getTitle().getContent();
if (fundingTitle.getTranslatedTitle() != null) {
translatedTitle = fundingTitle.getTranslatedTitle().getContent();
languageCode = fundingTitle.getTranslatedTitle().getLanguageCode();
}
profileFundingEntity.setTitle(StringUtils.isNotBlank(title) ? title : null);
profileFundingEntity.setTranslatedTitle(StringUtils.isNotBlank(translatedTitle) ? translatedTitle : null);
profileFundingEntity.setTranslatedTitleLanguageCode(StringUtils.isNotBlank(languageCode) ? languageCode : null);
}
if (funding.getType() != null) {
profileFundingEntity.setType(org.orcid.jaxb.model.record_v2.FundingType.fromValue(funding.getType().value()));
}
profileFundingEntity.setOrganizationDefinedType(funding.getOrganizationDefinedFundingType() != null ? funding.getOrganizationDefinedFundingType().getContent() : null);
if (funding.getUrl() != null)
profileFundingEntity.setUrl(StringUtils.isNotBlank(funding.getUrl().getValue()) ? funding.getUrl().getValue() : null);
if (funding.getVisibility() != null) {
profileFundingEntity.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.fromValue(funding.getVisibility().value()));
} else {
profileFundingEntity.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.fromValue(OrcidVisibilityDefaults.WORKS_DEFAULT.getVisibility().value()));
}
if (funding.getCreatedDate() != null && funding.getCreatedDate().getValue() != null)
profileFundingEntity.setDateCreated(funding.getCreatedDate().getValue().toGregorianCalendar().getTime());
if (funding.getLastModifiedDate() != null && funding.getLastModifiedDate().getValue() != null)
profileFundingEntity.setLastModified(funding.getLastModifiedDate().getValue().toGregorianCalendar().getTime());
profileFundingEntity.setOrg(orgEntity);
if (profileFundingEntity.getDisplayIndex() == null) {
profileFundingEntity.setDisplayIndex(0L);
}
return profileFundingEntity;
}
return null;
}
Aggregations