public static void validateAddress(Address address, Source activeSource, boolean createFlag, boolean isApiRequest, Visibility originalVisibility) { if(createFlag) { if(address.getPutCode() != null) { throw InvalidPutCodeException.forSource(activeSource); } } else { if(address.getPutCode() == null) { Map<String, String> params = new HashMap<String, String>(); throw new PutCodeRequiredException(params); } } if(address.getCountry() == null || address.getCountry().getValue() == null) { String message = "Country cannot be null"; LOGGER.error(message); throw new OrcidValidationException(message); } //Check that we are not changing the visibility validateAndFixVisibility(address, createFlag, isApiRequest, originalVisibility); }
public static void calculateLastModified(Addresses addresses) { if (addresses != null && addresses.getAddress() != null && !addresses.getAddress().isEmpty()) { LastModifiedDate latest = null; for (Address address : addresses.getAddress()) { if (address.getLastModifiedDate() != null && address.getLastModifiedDate().after(latest)) { latest = address.getLastModifiedDate(); } } addresses.setLastModifiedDate(latest); } }
public static void setPathToAddress(Address address, String orcid) { if(address != null) { address.setPath(ADDRESS.replace("{orcid}", orcid) + '/' + address.getPutCode()); } }
if (address.getCountry() != null && address.getCountry().getValue() != null) { form.setIso2Country(Iso2Country.valueOf(address.getCountry().getValue())); if (address.getVisibility() != null) { form.setVisibility(Visibility.valueOf(address.getVisibility())); if (address.getPutCode() != null) { form.setPutCode(String.valueOf(address.getPutCode())); if (address.getCreatedDate() != null) { Date createdDate = new Date(); createdDate.setYear(String.valueOf(address.getCreatedDate().getValue().getYear())); createdDate.setMonth(String.valueOf(address.getCreatedDate().getValue().getMonth())); createdDate.setDay(String.valueOf(address.getCreatedDate().getValue().getDay())); form.setCreatedDate(createdDate); if (address.getLastModifiedDate() != null) { Date lastModifiedDate = new Date(); lastModifiedDate.setYear(String.valueOf(address.getLastModifiedDate().getValue().getYear())); lastModifiedDate.setMonth(String.valueOf(address.getLastModifiedDate().getValue().getMonth())); lastModifiedDate.setDay(String.valueOf(address.getLastModifiedDate().getValue().getDay())); form.setLastModified(lastModifiedDate); if (address.getSource() != null) { form.setSource(address.getSource().retrieveSourcePath()); if (address.getSource().getSourceName() != null) { form.setSourceName(address.getSource().getSourceName().getContent());
if(addresses.getAddress() != null) { for(Address updatedOrNew : addresses.getAddress()) { if(existingAddress.getId().equals(updatedOrNew.getPutCode())) { deleteMe = false; break; if(updatedOrNew.getPutCode() != null) { if(existingAddress.getId().equals(updatedOrNew.getPutCode())) { existingAddress.setLastModified(new Date()); existingAddress.setVisibility(updatedOrNew.getVisibility().name()); existingAddress.setIso2Country(updatedOrNew.getCountry().getValue().name()); existingAddress.setDisplayIndex(updatedOrNew.getDisplayIndex()); addressDao.merge(existingAddress); newAddress.setVisibility(updatedOrNew.getVisibility().name()); newAddress.setDisplayIndex(updatedOrNew.getDisplayIndex()); addressDao.persist(newAddress);
public Address toAddress() { Address address = new Address(); if (this.iso2Country != null && this.iso2Country.getValue() != null) { Country country = new Country(); country.setValue(Iso3166Country.fromValue(this.iso2Country.getValue().value())); address.setCountry(country); } if (this.visibility != null && this.visibility.getVisibility() != null) { address.setVisibility(org.orcid.jaxb.model.v3.rc2.common.Visibility.fromValue(this.getVisibility().getVisibility().value())); } if (!PojoUtil.isEmpty(this.getPutCode())) { address.setPutCode(Long.valueOf(this.getPutCode())); } if (displayIndex != null) { address.setDisplayIndex(displayIndex); } else { address.setDisplayIndex(0L); } address.setSource(new Source(source)); return address; }
@Override public int compareTo(Address o) { if(o == null || o.getCountry() == null) { return 1; } if(getCountry() == null) { return -1; } return this.getCountry().compareTo(o.getCountry()); } }
@Override @Cacheable(value = "primary-address", key = "#orcid.concat('-').concat(#lastModified)") public Address getPrimaryAddress(String orcid, long lastModified) { List<AddressEntity> addresses = addressDao.getAddresses(orcid, getLastModified(orcid)); Address address = null; if(addresses != null) { //Look for the address with the largest display index for(AddressEntity entity : addresses) { if(address == null || address.getDisplayIndex() < entity.getDisplayIndex()) { address = adapter.toAddress(entity); } } } return address; }
@Override public Address createAddress(String orcid, Address address, boolean isApiRequest) { Source activeSource = sourceManager.retrieveActiveSource(); // Validate the address PersonValidator.validateAddress(address, activeSource, true, isApiRequest, null); // Validate it is not duplicated List<AddressEntity> existingAddresses = addressDao.getAddresses(orcid, getLastModified(orcid)); for (AddressEntity existing : existingAddresses) { if (isDuplicated(existing, address, activeSource)) { Map<String, String> params = new HashMap<String, String>(); params.put("type", "address"); params.put("value", address.getCountry().getValue().name()); throw new OrcidDuplicatedElementException(params); } } AddressEntity newEntity = adapter.toAddressEntity(address); ProfileEntity profile = profileEntityCacheManager.retrieve(orcid); newEntity.setUser(profile); newEntity.setDateCreated(new Date()); SourceEntityUtils.populateSourceAwareEntityFromSource(activeSource, newEntity); DisplayIndexCalculatorHelper.setDisplayIndexOnNewEntity(newEntity, isApiRequest); setIncomingPrivacy(newEntity, profile); addressDao.persist(newEntity); return adapter.toAddress(newEntity); }
private boolean isDuplicated(AddressEntity existing, Address address, Source activeSource) { if (!existing.getId().equals(address.getPutCode())) { //If they have the same source String existingSourceId = existing.getElementSourceId(); if (!PojoUtil.isEmpty(existingSourceId) && SourceEntityUtils.isTheSameForDuplicateChecking(activeSource,existing)) { //TODO: Not sure this works! String vs Iso3166Country enum if(existing.getIso2Country().equals(address.getCountry().getValue())) { return true; } } } return false; }
if (a.getCountry() != null && a.getCountry().getValue() !=null) doc.address.add(new SchemaOrgAddress(a.getCountry().getValue().toString()));
for (AddressEntity existing : existingAddresses) { if(!existing.getId().equals(address.getPutCode())) { if (isDuplicated(existing, address, activeSource)) { Map<String, String> params = new HashMap<String, String>(); params.put("type", "address"); params.put("value", address.getCountry().getValue().name()); throw new OrcidDuplicatedElementException(params);