use of org.orcid.jaxb.model.record_rc3.Address in project ORCID-Source by ORCID.
the class ValidateV2RC4SamplesTest method testUnmarshallAddress.
@Test
public void testUnmarshallAddress() throws SAXException, URISyntaxException {
Addresses addresses = (Addresses) unmarshallFromPath("/record_2.0_rc4/samples/addresses-2.0_rc4.xml", Addresses.class, "/record_2.0_rc4/address-2.0_rc4.xsd");
assertNotNull(addresses);
assertNotNull(addresses.getAddress());
assertEquals(2, addresses.getAddress().size());
for (Address address : addresses.getAddress()) {
assertNotNull(address.getPutCode());
assertNotNull(address.getCreatedDate());
assertNotNull(address.getLastModifiedDate());
assertNotNull(address.getCountry());
if (address.getPutCode().equals(new Long(1))) {
assertEquals(Iso3166Country.US, address.getCountry().getValue());
assertEquals(Visibility.PUBLIC, address.getVisibility());
} else {
assertEquals(Iso3166Country.CR, address.getCountry().getValue());
assertEquals(Visibility.LIMITED, address.getVisibility());
}
}
Address address = (Address) unmarshallFromPath("/record_2.0_rc4/samples/address-2.0_rc4.xml", Address.class);
assertNotNull(address);
assertNotNull(address.getPutCode());
assertNotNull(address.getCreatedDate());
assertNotNull(address.getLastModifiedDate());
assertNotNull(address.getCountry());
assertEquals(Iso3166Country.US, address.getCountry().getValue());
assertEquals(Visibility.PUBLIC, address.getVisibility());
}
use of org.orcid.jaxb.model.record_rc3.Address in project ORCID-Source by ORCID.
the class ValidateV2_1SamplesTest method testUnmarshallRecord.
@Test
public void testUnmarshallRecord() throws SAXException, URISyntaxException {
Record record = (Record) unmarshallFromPath("/record_2.1/samples/read_samples/record-2.1.xml", Record.class, "/record_2.1/record-2.1.xsd");
assertNotNull(record);
//Check activities
assertNotNull(record.getActivitiesSummary());
ActivitiesSummary activities = record.getActivitiesSummary();
assertNotNull(activities.getLastModifiedDate());
assertNotNull(activities.getEducations());
Educations educations = activities.getEducations();
assertNotNull(educations.getLastModifiedDate());
assertEquals(1, educations.getSummaries().size());
EducationSummary education = educations.getSummaries().get(0);
assertEquals(Long.valueOf(0), education.getPutCode());
assertEquals(Visibility.PRIVATE, education.getVisibility());
assertEquals("education:department-name", education.getDepartmentName());
assertEquals("education:role-title", education.getRoleTitle());
assertNotNull(education.getEndDate());
assertEquals("02", education.getEndDate().getDay().getValue());
assertEquals("02", education.getEndDate().getMonth().getValue());
assertEquals("1848", education.getEndDate().getYear().getValue());
assertNotNull(education.getStartDate());
assertEquals("02", education.getStartDate().getDay().getValue());
assertEquals("02", education.getStartDate().getMonth().getValue());
assertEquals("1848", education.getStartDate().getYear().getValue());
assertNotNull(education.getOrganization());
assertEquals("common:name", education.getOrganization().getName());
assertEquals("common:city", education.getOrganization().getAddress().getCity());
assertEquals("common:region", education.getOrganization().getAddress().getRegion());
assertEquals(Iso3166Country.AF, education.getOrganization().getAddress().getCountry());
validateSourceInHttps(education.getSource());
assertNotNull(activities.getEmployments());
Employments employments = activities.getEmployments();
assertNotNull(employments.getLastModifiedDate());
assertEquals(1, employments.getSummaries().size());
EmploymentSummary employment = employments.getSummaries().get(0);
assertEquals(Long.valueOf(0), employment.getPutCode());
assertEquals(Visibility.PRIVATE, employment.getVisibility());
assertEquals("employment:department-name", employment.getDepartmentName());
assertEquals("employment:role-title", employment.getRoleTitle());
assertNotNull(employment.getEndDate());
assertEquals("02", employment.getEndDate().getDay().getValue());
assertEquals("02", employment.getEndDate().getMonth().getValue());
assertEquals("1848", employment.getEndDate().getYear().getValue());
assertNotNull(employment.getStartDate());
assertEquals("02", employment.getStartDate().getDay().getValue());
assertEquals("02", employment.getStartDate().getMonth().getValue());
assertEquals("1848", employment.getStartDate().getYear().getValue());
assertNotNull(employment.getOrganization());
assertEquals("common:name", employment.getOrganization().getName());
assertEquals("common:city", employment.getOrganization().getAddress().getCity());
assertEquals("common:region", employment.getOrganization().getAddress().getRegion());
assertEquals(Iso3166Country.AF, employment.getOrganization().getAddress().getCountry());
validateSourceInHttps(employment.getSource());
assertNotNull(activities.getFundings());
Fundings fundings = activities.getFundings();
assertNotNull(fundings.getLastModifiedDate());
assertEquals(1, fundings.getFundingGroup().size());
assertNotNull(fundings.getFundingGroup().get(0).getLastModifiedDate());
assertEquals(1, fundings.getFundingGroup().get(0).getFundingSummary().size());
assertEquals(1, fundings.getFundingGroup().get(0).getIdentifiers().getExternalIdentifier().size());
assertEquals("grant_number", fundings.getFundingGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getType());
assertEquals("external-id-value", fundings.getFundingGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getValue());
assertEquals(1, fundings.getFundingGroup().get(0).getFundingSummary().size());
FundingSummary funding = fundings.getFundingGroup().get(0).getFundingSummary().get(0);
assertEquals(Long.valueOf(0), funding.getPutCode());
assertEquals(Visibility.PRIVATE, funding.getVisibility());
assertNotNull(funding.getTitle());
assertEquals("common:title", funding.getTitle().getTitle().getContent());
assertEquals("common:translated-title", funding.getTitle().getTranslatedTitle().getContent());
assertEquals("en", funding.getTitle().getTranslatedTitle().getLanguageCode());
assertNotNull(funding.getExternalIdentifiers());
assertEquals(1, funding.getExternalIdentifiers().getExternalIdentifier().size());
assertEquals(Relationship.SELF, funding.getExternalIdentifiers().getExternalIdentifier().get(0).getRelationship());
assertEquals("grant_number", funding.getExternalIdentifiers().getExternalIdentifier().get(0).getType());
assertEquals("http://tempuri.org", funding.getExternalIdentifiers().getExternalIdentifier().get(0).getUrl().getValue());
assertEquals("external-id-value", funding.getExternalIdentifiers().getExternalIdentifier().get(0).getValue());
assertNotNull(funding.getEndDate());
assertEquals("02", funding.getEndDate().getDay().getValue());
assertEquals("02", funding.getEndDate().getMonth().getValue());
assertEquals("1848", funding.getEndDate().getYear().getValue());
assertNotNull(funding.getStartDate());
assertEquals("02", funding.getStartDate().getDay().getValue());
assertEquals("02", funding.getStartDate().getMonth().getValue());
assertEquals("1848", funding.getStartDate().getYear().getValue());
validateSourceInHttps(funding.getSource());
assertNotNull(funding.getOrganization());
assertEquals("common:name", funding.getOrganization().getName());
assertEquals("common:city", funding.getOrganization().getAddress().getCity());
assertEquals("common:region", funding.getOrganization().getAddress().getRegion());
assertEquals(Iso3166Country.AF, funding.getOrganization().getAddress().getCountry());
assertNotNull(activities.getPeerReviews());
assertNotNull(activities.getPeerReviews().getLastModifiedDate());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup());
assertEquals(1, activities.getPeerReviews().getPeerReviewGroup().size());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getIdentifiers());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getIdentifiers().getExternalIdentifier());
assertEquals(1, activities.getPeerReviews().getPeerReviewGroup().get(0).getIdentifiers().getExternalIdentifier().size());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getType());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getValue());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getUrl());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getRelationship());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary());
assertEquals(1, activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().size());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getCompletionDate());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getCompletionDate().getDay());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getCompletionDate().getMonth());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getCompletionDate().getYear());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getCreatedDate());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getCreatedDate().getValue());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getDisplayIndex());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getExternalIdentifiers());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getExternalIdentifiers().getExternalIdentifier());
assertEquals(1, activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getExternalIdentifiers().getExternalIdentifier().size());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getExternalIdentifiers().getExternalIdentifier().get(0).getType());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getExternalIdentifiers().getExternalIdentifier().get(0).getValue());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getExternalIdentifiers().getExternalIdentifier().get(0).getUrl());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getExternalIdentifiers().getExternalIdentifier().get(0).getRelationship());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getGroupId());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getLastModifiedDate());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getOrganization());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getOrganization().getAddress());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getOrganization().getAddress().getCity());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getOrganization().getAddress().getCountry());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getOrganization().getAddress().getRegion());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getOrganization().getName());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getPutCode());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getSource());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getSource().retrieveSourcePath());
assertNotNull(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getVisibility());
validateSourceInHttps(activities.getPeerReviews().getPeerReviewGroup().get(0).getPeerReviewSummary().get(0).getSource());
assertNotNull(activities.getWorks());
Works works = activities.getWorks();
assertNotNull(works.getLastModifiedDate());
assertEquals(1, works.getWorkGroup().size());
assertNotNull(works.getWorkGroup().get(0).getIdentifiers());
assertEquals(1, works.getWorkGroup().get(0).getIdentifiers().getExternalIdentifier().size());
assertEquals(Relationship.PART_OF, works.getWorkGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getRelationship());
assertEquals("agr", works.getWorkGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getType());
assertEquals("http://orcid.org", works.getWorkGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getUrl().getValue());
assertEquals("external-id-value", works.getWorkGroup().get(0).getIdentifiers().getExternalIdentifier().get(0).getValue());
assertEquals(1, works.getWorkGroup().get(0).getWorkSummary().size());
WorkSummary work = works.getWorkGroup().get(0).getWorkSummary().get(0);
assertEquals(Long.valueOf(0), work.getPutCode());
assertEquals(Visibility.PRIVATE, work.getVisibility());
assertNotNull(work.getTitle());
assertEquals("common:title", work.getTitle().getTitle().getContent());
assertEquals("common:translated-title", work.getTitle().getTranslatedTitle().getContent());
assertEquals("en", work.getTitle().getTranslatedTitle().getLanguageCode());
assertNotNull(work.getExternalIdentifiers());
assertEquals(1, work.getExternalIdentifiers().getExternalIdentifier().size());
assertEquals(Relationship.SELF, work.getExternalIdentifiers().getExternalIdentifier().get(0).getRelationship());
assertEquals("agr", work.getExternalIdentifiers().getExternalIdentifier().get(0).getType());
assertEquals("http://tempuri.org", work.getExternalIdentifiers().getExternalIdentifier().get(0).getUrl().getValue());
assertEquals("external-id-value", work.getExternalIdentifiers().getExternalIdentifier().get(0).getValue());
assertEquals(WorkType.ARTISTIC_PERFORMANCE, work.getType());
assertNotNull(work.getPublicationDate());
assertEquals("02", work.getPublicationDate().getDay().getValue());
assertEquals("02", work.getPublicationDate().getMonth().getValue());
assertEquals("1848", work.getPublicationDate().getYear().getValue());
validateSourceInHttps(work.getSource());
//Check biography
Person person = record.getPerson();
assertNotNull(person);
assertNotNull(person.getLastModifiedDate().getValue());
assertNotNull(person.getAddresses());
assertNotNull(person.getAddresses().getLastModifiedDate());
assertEquals(1, person.getAddresses().getAddress().size());
Address address = person.getAddresses().getAddress().get(0);
assertEquals(Long.valueOf(1), address.getPutCode());
assertEquals(Visibility.PUBLIC, address.getVisibility());
assertEquals(Iso3166Country.US, address.getCountry().getValue());
assertEquals(Long.valueOf(0), address.getDisplayIndex());
assertNotNull(address.getLastModifiedDate());
assertNotNull(person.getBiography());
assertEquals(Visibility.PUBLIC, person.getBiography().getVisibility());
assertEquals("biography", person.getBiography().getContent());
assertNotNull(person.getEmails());
assertTrue(StringUtils.isNotBlank(person.getEmails().getPath()));
assertNotNull(person.getEmails().getLastModifiedDate());
assertNotNull(person.getEmails().getEmails());
assertEquals(1, person.getEmails().getEmails().size());
Email email = person.getEmails().getEmails().get(0);
assertNotNull(email.getCreatedDate().getValue());
assertEquals("user1@email.com", email.getEmail());
assertNotNull(email.getLastModifiedDate().getValue());
assertEquals(Long.valueOf(0), email.getPutCode());
assertNotNull(email.getSource());
validateSourceInHttps(email.getSource());
assertEquals(Visibility.PUBLIC, email.getVisibility());
assertNotNull(person.getExternalIdentifiers());
assertTrue(StringUtils.isNotBlank(person.getExternalIdentifiers().getPath()));
assertNotNull(person.getExternalIdentifiers().getLastModifiedDate().getValue());
assertNotNull(person.getExternalIdentifiers().getExternalIdentifiers());
assertEquals(1, person.getExternalIdentifiers().getExternalIdentifiers().size());
PersonExternalIdentifier extId = person.getExternalIdentifiers().getExternalIdentifiers().get(0);
assertNotNull(extId.getCreatedDate().getValue());
assertNotNull(extId.getLastModifiedDate());
assertEquals(Long.valueOf(0), extId.getDisplayIndex());
assertEquals(Long.valueOf(1), extId.getPutCode());
assertEquals(Relationship.PART_OF, extId.getRelationship());
assertNotNull(extId.getSource());
assertEquals("type-1", extId.getType());
assertEquals("http://url.com/1", extId.getUrl().getValue());
assertEquals("value-1", extId.getValue());
assertEquals(Visibility.PUBLIC, extId.getVisibility());
validateSourceInHttps(extId.getSource());
assertNotNull(person.getKeywords());
assertTrue(StringUtils.isNotBlank(person.getKeywords().getPath()));
assertNotNull(person.getKeywords().getLastModifiedDate().getValue());
assertNotNull(person.getKeywords().getKeywords());
assertEquals(1, person.getKeywords().getKeywords().size());
Keyword keyword = person.getKeywords().getKeywords().get(0);
assertEquals("keyword1", keyword.getContent());
assertNotNull(keyword.getCreatedDate().getValue());
assertNotNull(keyword.getLastModifiedDate().getValue());
assertEquals(Long.valueOf(0), keyword.getDisplayIndex());
assertEquals(Long.valueOf(1), keyword.getPutCode());
assertNotNull(keyword.getSource());
assertEquals(Visibility.PUBLIC, keyword.getVisibility());
validateSourceInHttps(keyword.getSource());
assertNotNull(person.getOtherNames());
assertTrue(StringUtils.isNotBlank(person.getOtherNames().getPath()));
assertNotNull(person.getOtherNames().getLastModifiedDate().getValue());
assertNotNull(person.getOtherNames().getOtherNames());
assertEquals(1, person.getOtherNames().getOtherNames().size());
OtherName otherName = person.getOtherNames().getOtherNames().get(0);
assertEquals("other-name-1", otherName.getContent());
assertNotNull(otherName.getCreatedDate().getValue());
assertNotNull(otherName.getLastModifiedDate().getValue());
assertEquals(Long.valueOf(0), otherName.getDisplayIndex());
assertEquals(Long.valueOf(1), otherName.getPutCode());
assertNotNull(otherName.getSource());
assertEquals(Visibility.PUBLIC, otherName.getVisibility());
validateSourceInHttps(otherName.getSource());
assertNotNull(person.getResearcherUrls());
assertTrue(StringUtils.isNotBlank(person.getResearcherUrls().getPath()));
assertNotNull(person.getResearcherUrls().getLastModifiedDate().getValue());
assertNotNull(person.getResearcherUrls().getResearcherUrls().size());
ResearcherUrl rUrl = person.getResearcherUrls().getResearcherUrls().get(0);
assertNotNull(rUrl.getCreatedDate().getValue());
assertEquals(Long.valueOf(0), rUrl.getDisplayIndex());
assertNotNull(rUrl.getLastModifiedDate().getValue());
assertEquals(Long.valueOf(1248), rUrl.getPutCode());
assertNotNull(rUrl.getSource());
assertEquals("http://url.com/", rUrl.getUrl().getValue());
assertEquals("url-name-1", rUrl.getUrlName());
assertEquals(Visibility.PUBLIC, rUrl.getVisibility());
validateSourceInHttps(rUrl.getSource());
assertNotNull(person.getName());
Name name = person.getName();
assertTrue(StringUtils.isNotBlank(name.getPath()));
assertEquals("credit-name", name.getCreditName().getContent());
assertEquals("family-name", name.getFamilyName().getContent());
assertEquals("give-names", name.getGivenNames().getContent());
assertNotNull(name.getLastModifiedDate().getValue());
assertEquals(Visibility.PUBLIC, name.getVisibility());
}
use of org.orcid.jaxb.model.record_rc3.Address in project ORCID-Source by ORCID.
the class ValidateV2_1SamplesTest method unmarshallFromPath.
private Object unmarshallFromPath(String path, Class<?> type, String schemaPath) throws SAXException, URISyntaxException {
try (Reader reader = new InputStreamReader(getClass().getResourceAsStream(path))) {
Object obj = unmarshall(reader, type, schemaPath);
Object result = null;
if (ResearcherUrls.class.equals(type)) {
result = (ResearcherUrls) obj;
} else if (ResearcherUrl.class.equals(type)) {
result = (ResearcherUrl) obj;
} else if (PersonalDetails.class.equals(type)) {
result = (PersonalDetails) obj;
} else if (PersonExternalIdentifier.class.equals(type)) {
result = (PersonExternalIdentifier) obj;
} else if (PersonExternalIdentifiers.class.equals(type)) {
result = (PersonExternalIdentifiers) obj;
} else if (Biography.class.equals(type)) {
result = (Biography) obj;
} else if (Name.class.equals(type)) {
result = (Name) obj;
} else if (CreditName.class.equals(type)) {
result = (CreditName) obj;
} else if (OtherName.class.equals(type)) {
result = (OtherName) obj;
} else if (OtherNames.class.equals(type)) {
result = (OtherNames) obj;
} else if (Keywords.class.equals(type)) {
result = (Keywords) obj;
} else if (Keyword.class.equals(type)) {
result = (Keyword) obj;
} else if (Addresses.class.equals(type)) {
result = (Addresses) obj;
} else if (Address.class.equals(type)) {
result = (Address) obj;
} else if (Emails.class.equals(type)) {
result = (Emails) obj;
} else if (Email.class.equals(type)) {
result = (Email) obj;
} else if (Person.class.equals(type)) {
result = (Person) obj;
} else if (Deprecated.class.equals(type)) {
result = (Deprecated) obj;
} else if (Preferences.class.equals(type)) {
result = (Preferences) obj;
} else if (History.class.equals(type)) {
result = (History) obj;
} else if (Record.class.equals(type)) {
result = (Record) obj;
} else if (ActivitiesSummary.class.equals(type)) {
result = (ActivitiesSummary) obj;
} else if (Works.class.equals(type)) {
result = (Works) obj;
}
return result;
} catch (IOException e) {
throw new RuntimeException("Error reading notification from classpath", e);
}
}
use of org.orcid.jaxb.model.record_rc3.Address in project ORCID-Source by ORCID.
the class PublicV2ApiServiceDelegatorTest method testViewAddresses.
@Test
public void testViewAddresses() {
Response response = serviceDelegator.viewAddresses(ORCID);
assertNotNull(response);
Addresses addresses = (Addresses) response.getEntity();
assertNotNull(addresses);
assertNotNull(addresses.getLastModifiedDate());
assertNotNull(addresses.getLastModifiedDate().getValue());
assertEquals("/0000-0000-0000-0003/address", addresses.getPath());
assertEquals(1, addresses.getAddress().size());
Address address = addresses.getAddress().get(0);
assertNotNull(address);
assertNotNull(address.getLastModifiedDate());
assertNotNull(address.getLastModifiedDate().getValue());
assertEquals(Long.valueOf(9), address.getPutCode());
assertNotNull(address.getCountry());
assertEquals(Iso3166Country.US, address.getCountry().getValue());
assertEquals(Visibility.PUBLIC.value(), address.getVisibility().value());
assertEquals("/0000-0000-0000-0003/address/9", address.getPath());
assertEquals("APP-5555555555555555", address.getSource().retrieveSourcePath());
}
use of org.orcid.jaxb.model.record_rc3.Address in project oxTrust by GluuFederation.
the class CopyUtils2 method copy.
/**
* Copy data from GluuCustomPerson object to ScimPerson object "Reda"
*
* @param source
* @param destination
* @return
* @throws Exception
*/
public User copy(GluuCustomPerson source, User destination) throws Exception {
if (source == null) {
return null;
}
if (destination == null) {
log.trace(" creating a new GluuCustomPerson instant ");
destination = new User();
}
log.trace(" setting ID ");
if (source.getInum() != null) {
destination.setId(source.getInum());
}
log.trace(" setting userName ");
if (source.getUid() != null) {
destination.setUserName(source.getUid());
}
log.trace(" setting ExternalID ");
if (source.getAttribute("oxTrustExternalId") != null) {
destination.setExternalId(source.getAttribute("oxTrustExternalId"));
}
log.trace(" setting givenname ");
if (source.getGivenName() != null) {
org.gluu.oxtrust.model.scim2.Name name = new org.gluu.oxtrust.model.scim2.Name();
name.setGivenName(source.getGivenName());
if (source.getSurname() != null)
name.setFamilyName(source.getSurname());
if (source.getAttribute("middleName") != null)
name.setMiddleName(source.getAttribute("middleName"));
/*
if (source.getAttribute("oxTrustMiddleName") != null)
name.setMiddleName(source.getAttribute("oxTrustMiddleName"));
*/
if (source.getAttribute("oxTrusthonorificPrefix") != null)
name.setHonorificPrefix(source.getAttribute("oxTrusthonorificPrefix"));
if (source.getAttribute("oxTrusthonorificSuffix") != null)
name.setHonorificSuffix(source.getAttribute("oxTrusthonorificSuffix"));
name.setFormatted(name.getFormatted());
destination.setName(name);
}
log.trace(" getting displayname ");
if (source.getDisplayName() != null) {
destination.setDisplayName(source.getDisplayName());
}
log.trace(" getting nickname ");
/*
if (source.getAttribute("oxTrustNickName") != null) {
destination.setNickName(source.getAttribute("oxTrustNickName"));
}
*/
if (source.getAttribute("nickname") != null) {
destination.setNickName(source.getAttribute("nickname"));
}
log.trace(" getting profileURL ");
if (source.getAttribute("oxTrustProfileURL") != null) {
destination.setProfileUrl(source.getAttribute("oxTrustProfileURL"));
}
log.trace(" getting emails ");
// source = Utils.syncEmailReverse(source, true);
if (source.getAttributeArray("oxTrustEmail") != null) {
/*
String[] emailArray = source.getAttributeArray("oxTrustEmail");
List<Email> emails = new ArrayList<Email>();
for (String emailStr : emailArray) {
Email email = mapper.readValue(emailStr, Email.class);
emails.add(email);
}
// List<Email> listOfEmails = mapper.readValue(source.getAttribute("oxTrustEmail"), new TypeReference<List<Email>>(){});
// destination.setEmails(listOfEmails);
*/
List<Email> emails = getAttributeListValue(source, Email.class, "oxTrustEmail");
destination.setEmails(emails);
}
log.trace(" getting addresses ");
// getting addresses
if (source.getAttribute("oxTrustAddresses") != null) {
List<Address> addresses = getAttributeListValue(source, Address.class, "oxTrustAddresses");
destination.setAddresses(addresses);
}
log.trace(" setting phoneNumber ");
// getting user's PhoneNumber
if (source.getAttribute("oxTrustPhoneValue") != null) {
List<PhoneNumber> phoneNumbers = getAttributeListValue(source, PhoneNumber.class, "oxTrustPhoneValue");
destination.setPhoneNumbers(phoneNumbers);
}
if ((source.getOxPPID()) != null) {
destination.setPairwiseIdentitifers(source.getOxPPID());
}
log.trace(" getting ims ");
// getting ims
if (source.getAttribute("oxTrustImsValue") != null) {
List<Im> ims = getAttributeListValue(source, Im.class, "oxTrustImsValue");
destination.setIms(ims);
}
log.trace(" setting photos ");
// getting photos
if (source.getAttribute("oxTrustPhotos") != null) {
List<Photo> photos = getAttributeListValue(source, Photo.class, "oxTrustPhotos");
destination.setPhotos(photos);
}
log.trace(" setting userType ");
if (source.getAttribute("oxTrustUserType") != null) {
destination.setUserType(source.getAttribute("oxTrustUserType"));
}
log.trace(" setting title ");
if (source.getAttribute("oxTrustTitle") != null) {
destination.setTitle(source.getAttribute("oxTrustTitle"));
}
log.trace(" setting Locale ");
/*
if (source.getAttribute("oxTrustLocale") != null) {
destination.setLocale(source.getAttribute("oxTrustLocale"));
}
*/
if (source.getAttribute("locale") != null) {
destination.setLocale(source.getAttribute("locale"));
}
log.trace(" setting preferredLanguage ");
if (source.getPreferredLanguage() != null) {
destination.setPreferredLanguage(source.getPreferredLanguage());
}
log.trace(" setting timeZone ");
if (source.getTimezone() != null) {
destination.setTimezone(source.getTimezone());
}
log.trace(" setting active ");
if (source.getAttribute("oxTrustActive") != null) {
destination.setActive(Boolean.parseBoolean(source.getAttribute("oxTrustActive")));
}
log.trace(" setting password ");
destination.setPassword("Hidden for Privacy Reasons");
// getting user groups
log.trace(" setting groups ");
if (source.getMemberOf() != null) {
List<String> listOfGroups = source.getMemberOf();
List<GroupRef> groupRefList = new ArrayList<GroupRef>();
for (String groupDN : listOfGroups) {
GluuGroup gluuGroup = groupService.getGroupByDn(groupDN);
GroupRef groupRef = new GroupRef();
groupRef.setDisplay(gluuGroup.getDisplayName());
groupRef.setValue(gluuGroup.getInum());
String reference = appConfiguration.getBaseEndpoint() + "/scim/v2/Groups/" + gluuGroup.getInum();
groupRef.setReference(reference);
groupRefList.add(groupRef);
}
destination.setGroups(groupRefList);
}
// getting roles
if (source.getAttribute("oxTrustRole") != null) {
List<Role> roles = getAttributeListValue(source, Role.class, "oxTrustRole");
destination.setRoles(roles);
}
log.trace(" getting entitlements ");
// getting entitlements
if (source.getAttribute("oxTrustEntitlements") != null) {
List<Entitlement> entitlements = getAttributeListValue(source, Entitlement.class, "oxTrustEntitlements");
destination.setEntitlements(entitlements);
}
// getting x509Certificates
log.trace(" setting certs ");
if (source.getAttribute("oxTrustx509Certificate") != null) {
List<X509Certificate> x509Certificates = getAttributeListValue(source, X509Certificate.class, "oxTrustx509Certificate");
destination.setX509Certificates(x509Certificates);
}
log.trace(" setting extensions ");
// List<GluuAttribute> scimCustomAttributes = attributeService.getSCIMRelatedAttributesImpl(attributeService.getCustomAttributes());
List<GluuAttribute> scimCustomAttributes = attributeService.getSCIMRelatedAttributes();
if (scimCustomAttributes != null && !scimCustomAttributes.isEmpty()) {
Map<String, Extension> extensionMap = new HashMap<String, Extension>();
Extension.Builder extensionBuilder = new Extension.Builder(Constants.USER_EXT_SCHEMA_ID);
boolean hasExtension = false;
outer: for (GluuCustomAttribute customAttribute : source.getCustomAttributes()) {
for (GluuAttribute scimCustomAttribute : scimCustomAttributes) {
if (customAttribute.getName().equals(scimCustomAttribute.getName())) {
hasExtension = true;
GluuAttributeDataType scimCustomAttributeDataType = scimCustomAttribute.getDataType();
if ((scimCustomAttribute.getOxMultivaluedAttribute() != null) && scimCustomAttribute.getOxMultivaluedAttribute().equals(OxMultivalued.TRUE)) {
extensionBuilder.setFieldAsList(customAttribute.getName(), Arrays.asList(customAttribute.getValues()));
} else {
if (scimCustomAttributeDataType.equals(GluuAttributeDataType.STRING) || scimCustomAttributeDataType.equals(GluuAttributeDataType.PHOTO)) {
String value = ExtensionFieldType.STRING.fromString(customAttribute.getValue());
extensionBuilder.setField(customAttribute.getName(), value);
} else if (scimCustomAttributeDataType.equals(GluuAttributeDataType.DATE)) {
Date value = ExtensionFieldType.DATE_TIME.fromString(customAttribute.getValue());
extensionBuilder.setField(customAttribute.getName(), value);
} else if (scimCustomAttributeDataType.equals(GluuAttributeDataType.NUMERIC)) {
BigDecimal value = ExtensionFieldType.DECIMAL.fromString(customAttribute.getValue());
extensionBuilder.setField(customAttribute.getName(), value);
}
}
continue outer;
}
}
}
if (hasExtension) {
extensionMap.put(Constants.USER_EXT_SCHEMA_ID, extensionBuilder.build());
destination.getSchemas().add(Constants.USER_EXT_SCHEMA_ID);
destination.setExtensions(extensionMap);
}
}
log.trace(" getting meta ");
Meta meta = (destination.getMeta() != null) ? destination.getMeta() : new Meta();
if (source.getAttribute("oxTrustMetaVersion") != null) {
meta.setVersion(source.getAttribute("oxTrustMetaVersion"));
}
String location = source.getAttribute("oxTrustMetaLocation");
if (location != null && !location.isEmpty()) {
if (!location.startsWith("https://") && !location.startsWith("http://")) {
location = appConfiguration.getBaseEndpoint() + location;
}
} else {
location = appConfiguration.getBaseEndpoint() + "/scim/v2/Users/" + source.getInum();
}
meta.setLocation(location);
if (source.getAttribute("oxTrustMetaCreated") != null && !source.getAttribute("oxTrustMetaCreated").isEmpty()) {
try {
DateTime dateTimeUtc = new DateTime(source.getAttribute("oxTrustMetaCreated"), DateTimeZone.UTC);
meta.setCreated(dateTimeUtc.toDate());
} catch (Exception e) {
log.error(" Date parse exception (NEW format), continuing...", e);
// For backward compatibility
try {
meta.setCreated(new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(source.getAttribute("oxTrustMetaCreated")));
} catch (Exception ex) {
log.error(" Date parse exception (OLD format)", ex);
}
}
}
if (source.getAttribute("oxTrustMetaLastModified") != null && !source.getAttribute("oxTrustMetaLastModified").isEmpty()) {
try {
DateTime dateTimeUtc = new DateTime(source.getAttribute("oxTrustMetaLastModified"), DateTimeZone.UTC);
meta.setLastModified(dateTimeUtc.toDate());
} catch (Exception e) {
log.error(" Date parse exception (NEW format), continuing...", e);
// For backward compatibility
try {
meta.setLastModified(new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy").parse(source.getAttribute("oxTrustMetaLastModified")));
} catch (Exception ex) {
log.error(" Date parse exception (OLD format)", ex);
}
}
}
destination.setMeta(meta);
return destination;
}
Aggregations