use of org.orcid.jaxb.model.record_v2.WorkBulk in project ORCID-Source by ORCID.
the class WorkManagerTest method testFindWorkBulkInvalidPutCodes.
@Test
public void testFindWorkBulkInvalidPutCodes() {
String putCodes = "11,12,13,invalid";
WorkBulk workBulk = workManager.findWorkBulk("0000-0000-0000-0003", putCodes, System.currentTimeMillis());
assertNotNull(workBulk);
assertNotNull(workBulk.getBulk());
assertEquals(4, workBulk.getBulk().size());
assertTrue(workBulk.getBulk().get(0) instanceof Work);
assertTrue(workBulk.getBulk().get(1) instanceof Work);
assertTrue(workBulk.getBulk().get(2) instanceof Work);
assertTrue(workBulk.getBulk().get(3) instanceof OrcidError);
}
use of org.orcid.jaxb.model.record_v2.WorkBulk in project ORCID-Source by ORCID.
the class WorkManagerTest method testCreateWorksWithBulkAllErrors.
@Test
public void testCreateWorksWithBulkAllErrors() {
String orcid = "0000-0000-0000-0003";
when(sourceManager.retrieveSourceEntity()).thenReturn(new SourceEntity(new ClientDetailsEntity(CLIENT_1_ID)));
//Set up data:
//Create one work with a DOI doi-1 so we can create a duplicate
Work work = new Work();
WorkTitle workTitle = new WorkTitle();
workTitle.setTitle(new Title("work #1"));
work.setWorkTitle(workTitle);
ExternalIDs extIds = new ExternalIDs();
ExternalID extId = new ExternalID();
extId.setRelationship(Relationship.SELF);
extId.setType("doi");
extId.setUrl(new Url("http://doi/1"));
extId.setValue("doi-1");
extIds.getExternalIdentifier().add(extId);
work.setWorkExternalIdentifiers(extIds);
work.setWorkType(WorkType.BOOK);
Work newWork = workManager.createWork(orcid, work, true);
Long putCode = newWork.getPutCode();
WorkBulk bulk = new WorkBulk();
//Work # 1: No ext ids
Work work1 = getWork("work # 1 " + System.currentTimeMillis());
work1.getExternalIdentifiers().getExternalIdentifier().clear();
//Work # 2: No title
Work work2 = getWork("work # 2 " + System.currentTimeMillis());
work2.getWorkTitle().getTitle().setContent(null);
//Work # 3: No work type
Work work3 = getWork("work # 3 " + System.currentTimeMillis());
work3.setWorkType(null);
//Work # 4: Ext id already exists
Work work4 = getWork("work # 4 " + System.currentTimeMillis());
work4.getExternalIdentifiers().getExternalIdentifier().add(extId);
bulk.getBulk().add(work1);
bulk.getBulk().add(work2);
bulk.getBulk().add(work3);
bulk.getBulk().add(work4);
bulk = workManager.createWorks(orcid, bulk);
assertNotNull(bulk);
assertEquals(4, bulk.getBulk().size());
for (int i = 0; i < bulk.getBulk().size(); i++) {
BulkElement element = bulk.getBulk().get(i);
assertTrue(OrcidError.class.isAssignableFrom(element.getClass()));
OrcidError error = (OrcidError) element;
switch(i) {
case 0:
assertEquals(Integer.valueOf(9023), error.getErrorCode());
break;
case 1:
assertEquals(Integer.valueOf(9022), error.getErrorCode());
break;
case 2:
assertEquals(Integer.valueOf(9037), error.getErrorCode());
break;
case 3:
assertEquals(Integer.valueOf(9021), error.getErrorCode());
break;
}
}
//Delete the work
assertTrue(workManager.checkSourceAndRemoveWork(orcid, putCode));
}
use of org.orcid.jaxb.model.record_v2.WorkBulk in project ORCID-Source by ORCID.
the class MemberV2ApiServiceDelegatorImpl method viewBulkWorks.
@Override
public Response viewBulkWorks(String orcid, String putCodes) {
ProfileEntity profileEntity = profileEntityManager.findByOrcid(orcid);
if (profileEntity == null) {
throw new OrcidNoResultException("No such profile: " + orcid);
}
WorkBulk workBulk = workManagerReadOnly.findWorkBulk(orcid, putCodes, profileEntity.getLastModified().getTime());
orcidSecurityManager.checkAndFilter(orcid, workBulk, ScopePathType.ORCID_WORKS_READ_LIMITED);
ActivityUtils.cleanEmptyFields(workBulk);
sourceUtils.setSourceName(workBulk);
return Response.ok(workBulk).build();
}
use of org.orcid.jaxb.model.record_v2.WorkBulk in project ORCID-Source by ORCID.
the class MemberV2ApiServiceDelegatorImpl method createWorks.
@Override
public Response createWorks(String orcid, WorkBulk works) {
orcidSecurityManager.checkClientAccessAndScopes(orcid, ScopePathType.ORCID_WORKS_CREATE);
if (works != null) {
for (BulkElement b : works.getBulk()) {
if (Work.class.isAssignableFrom(b.getClass())) {
clearSource((Work) b);
}
}
}
works = workManager.createWorks(orcid, works);
sourceUtils.setSourceName(works);
return Response.ok(works).build();
}
use of org.orcid.jaxb.model.record_v2.WorkBulk in project ORCID-Source by ORCID.
the class WorkManagerReadOnlyImpl method findWorkBulk.
@Override
public WorkBulk findWorkBulk(String orcid, String putCodesAsString, long profileLastModified) {
List<BulkElement> works = new ArrayList<>();
String[] putCodes = getPutCodeArray(putCodesAsString);
for (String putCode : putCodes) {
try {
Long id = Long.valueOf(putCode);
WorkEntity workEntity = workEntityCacheManager.retrieveFullWork(orcid, id, profileLastModified);
works.add(jpaJaxbWorkAdapter.toWork(workEntity));
} catch (Exception e) {
works.add(orcidCoreExceptionMapper.getOrcidError(new PutCodeFormatException("'" + putCode + "' is not a valid put code")));
}
}
WorkBulk bulk = new WorkBulk();
bulk.setBulk(works);
return bulk;
}
Aggregations