use of org.orcid.jaxb.model.common_v2.CreditName in project ORCID-Source by ORCID.
the class ValidateV2RC2SamplesTest 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;
}
return result;
} catch (IOException e) {
throw new RuntimeException("Error reading notification from classpath", e);
}
}
use of org.orcid.jaxb.model.common_v2.CreditName in project ORCID-Source by ORCID.
the class ValidateV2RC2SamplesTest method testMarshallCreditName.
@Test
public void testMarshallCreditName() throws JAXBException, SAXException, URISyntaxException {
CreditName object = (CreditName) unmarshallFromPath("/record_2.0_rc2/samples/credit-name-2.0_rc2.xml", CreditName.class);
marshall(object, "/record_2.0_rc2/personal-details-2.0_rc2.xsd");
}
use of org.orcid.jaxb.model.common_v2.CreditName in project ORCID-Source by ORCID.
the class ManageProfileControllerTest method testStripHtmlFromNames.
@Test
public void testStripHtmlFromNames() throws NoSuchRequestHandlingMethodException {
RecordNameManager mockRecordNameManager = Mockito.mock(RecordNameManager.class);
SecurityContextHolder.getContext().setAuthentication(getAuthentication(USER_ORCID));
TargetProxyHelper.injectIntoProxy(controller, "recordNameManager", mockRecordNameManager);
when(mockRecordNameManager.exists(Mockito.anyString())).thenReturn(true);
NamesForm nf = new NamesForm();
nf.setCreditName(Text.valueOf("<button onclick=\"alert('hello')\">Credit Name</button>"));
nf.setGivenNames(Text.valueOf("<button onclick=\"alert('hello')\">Given Names</button>"));
nf.setFamilyName(Text.valueOf("<button onclick=\"alert('hello')\">Family Name</button>"));
nf = controller.setNameFormJson(nf);
assertEquals("Credit Name", nf.getCreditName().getValue());
assertEquals("Given Names", nf.getGivenNames().getValue());
assertEquals("Family Name", nf.getFamilyName().getValue());
Name name = new Name();
name.setCreditName(new CreditName("Credit Name"));
name.setFamilyName(new FamilyName("Family Name"));
name.setGivenNames(new GivenNames("Given Names"));
name.setVisibility(Visibility.PUBLIC);
verify(mockRecordNameManager, times(1)).updateRecordName(Mockito.eq(USER_ORCID), Mockito.eq(name));
}
use of org.orcid.jaxb.model.common_v2.CreditName in project ORCID-Source by ORCID.
the class MigrateNamesAndBioToTheirOwnTables method migrateData.
private void migrateData() {
LOG.debug("Starting migration process");
List<Object[]> profileElements = Collections.emptyList();
int counter = 0;
int batchCount = 0;
do {
LOG.debug("About to fetch a batch from DB");
profileElements = profileDao.findProfilesWhereNamesAreNotMigrated(batchSize);
LOG.debug("Procesing batch, profiles processed so far: " + counter);
for (final Object[] profileElement : profileElements) {
String orcid = (String) profileElement[0];
String givenNames = (String) profileElement[1];
String familyName = (String) profileElement[2];
String creditName = (String) profileElement[3];
String namesVisibility = (String) profileElement[4];
String biography = (String) profileElement[5];
String biographyVisibility = (String) profileElement[6];
String defaultVisibility = (String) profileElement[7];
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
LOG.info("Migrating names for profile: {}", orcid);
if (!recordNameDao.exists(orcid)) {
ProfileEntity profile = new ProfileEntity(orcid);
RecordNameEntity recordName = new RecordNameEntity();
recordName.setProfile(profile);
recordName.setCreditName(creditName);
recordName.setFamilyName(familyName);
recordName.setGivenNames(givenNames);
if (PojoUtil.isEmpty(namesVisibility)) {
recordName.setVisibility(Visibility.fromValue(OrcidVisibilityDefaults.NAMES_DEFAULT.getVisibility().value()));
} else {
recordName.setVisibility(Visibility.fromValue(namesVisibility));
}
recordNameDao.createRecordName(recordName);
}
LOG.info("Migrating biography for profile: {}", orcid);
if (!biographyDao.exists(orcid)) {
Visibility visibility = Visibility.fromValue(OrcidVisibilityDefaults.BIOGRAPHY_DEFAULT.getVisibility().value());
if (!PojoUtil.isEmpty(biographyVisibility)) {
visibility = Visibility.fromValue(biographyVisibility);
} else if (!PojoUtil.isEmpty(defaultVisibility)) {
visibility = Visibility.fromValue(defaultVisibility);
}
biographyDao.persistBiography(orcid, biography, visibility);
}
}
});
counter += 1;
}
batchCount += 1;
LOG.info("Batches processed so far: {}", String.valueOf(batchCount));
//Stop if we ran the number of batches
if (numberOfBatches > 0) {
if (batchCount >= numberOfBatches) {
profileElements = null;
}
}
} while (profileElements != null && !profileElements.isEmpty());
LOG.debug("Finished migration process");
}
use of org.orcid.jaxb.model.common_v2.CreditName in project ORCID-Source by ORCID.
the class ProfileEntityManagerImpl method deprecateProfile.
/**
* Deprecates a profile
*
* @param deprecatedProfile
* The profile that want to be deprecated
* @param primaryProfile
* The primary profile for the deprecated profile
* @return true if the account was successfully deprecated, false otherwise
*/
@Override
@Transactional
public boolean deprecateProfile(String deprecatedOrcid, String primaryOrcid) {
boolean wasDeprecated = profileDao.deprecateProfile(deprecatedOrcid, primaryOrcid);
// If it was successfully deprecated
if (wasDeprecated) {
LOGGER.info("Account {} was deprecated to primary account: {}", deprecatedOrcid, primaryOrcid);
ProfileEntity deprecated = profileDao.find(deprecatedOrcid);
// Remove works
workManager.removeAllWorks(deprecatedOrcid);
// Remove funding
if (deprecated.getProfileFunding() != null) {
for (ProfileFundingEntity funding : deprecated.getProfileFunding()) {
fundingManager.removeProfileFunding(funding.getProfile().getId(), funding.getId());
}
}
// Remove affiliations
if (deprecated.getOrgAffiliationRelations() != null) {
for (OrgAffiliationRelationEntity affiliation : deprecated.getOrgAffiliationRelations()) {
orgAffiliationRelationDao.removeOrgAffiliationRelation(affiliation.getProfile().getId(), affiliation.getId());
}
}
// Remove external identifiers
if (deprecated.getExternalIdentifiers() != null) {
for (ExternalIdentifierEntity externalIdentifier : deprecated.getExternalIdentifiers()) {
externalIdentifierManager.deleteExternalIdentifier(deprecated.getId(), externalIdentifier.getId(), false);
}
}
// Remove researcher urls
if (deprecated.getResearcherUrls() != null) {
for (ResearcherUrlEntity rUrl : deprecated.getResearcherUrls()) {
researcherUrlManager.deleteResearcherUrl(deprecatedOrcid, rUrl.getId(), false);
}
}
// Remove other names
if (deprecated.getOtherNames() != null) {
for (OtherNameEntity otherName : deprecated.getOtherNames()) {
otherNamesManager.deleteOtherName(deprecatedOrcid, otherName.getId(), false);
}
}
// Remove keywords
if (deprecated.getKeywords() != null) {
for (ProfileKeywordEntity keyword : deprecated.getKeywords()) {
profileKeywordManager.deleteKeyword(deprecatedOrcid, keyword.getId(), false);
}
}
//Remove biography
if (biographyManager.exists(deprecatedOrcid)) {
Biography deprecatedBio = new Biography();
deprecatedBio.setContent(null);
deprecatedBio.setVisibility(Visibility.PRIVATE);
biographyManager.updateBiography(deprecatedOrcid, deprecatedBio);
}
//Set the deactivated names
if (recordNameManager.exists(deprecatedOrcid)) {
Name name = new Name();
name.setCreditName(new CreditName());
name.setGivenNames(new GivenNames("Given Names Deactivated"));
name.setFamilyName(new FamilyName("Family Name Deactivated"));
name.setVisibility(org.orcid.jaxb.model.common_v2.Visibility.PRIVATE);
name.setPath(deprecatedOrcid);
recordNameManager.updateRecordName(deprecatedOrcid, name);
}
userConnectionDao.deleteByOrcid(deprecatedOrcid);
// Move all emails to the primary email
Set<EmailEntity> deprecatedAccountEmails = deprecated.getEmails();
if (deprecatedAccountEmails != null) {
// For each email in the deprecated profile
for (EmailEntity email : deprecatedAccountEmails) {
// Delete each email from the deprecated
// profile
LOGGER.info("About to move email {} from profile {} to profile {}", new Object[] { email.getId(), deprecatedOrcid, primaryOrcid });
emailManager.moveEmailToOtherAccount(email.getId(), deprecatedOrcid, primaryOrcid);
}
}
return true;
}
return false;
}
Aggregations