From 2aac80a8a33a560c77a00156d0ed2600e3fe8c86 Mon Sep 17 00:00:00 2001 From: Matija Obreza Date: Thu, 27 Feb 2014 15:01:24 +0100 Subject: [PATCH] REST genus not required for faoInstitute.uniqueAcceNumbs --- .../service/impl/BatchRESTServiceImpl.java | 16 ++++++++++++++-- .../server/service/impl/GenesysServiceImpl.java | 2 ++ .../controller/rest/AccessionController.java | 6 ++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/genesys2/server/service/impl/BatchRESTServiceImpl.java b/src/main/java/org/genesys2/server/service/impl/BatchRESTServiceImpl.java index fd6e0805b..74e011724 100644 --- a/src/main/java/org/genesys2/server/service/impl/BatchRESTServiceImpl.java +++ b/src/main/java/org/genesys2/server/service/impl/BatchRESTServiceImpl.java @@ -586,9 +586,15 @@ public class BatchRESTServiceImpl implements BatchRESTService { List toSave = new ArrayList(); List toRemove = new ArrayList(); + boolean useUniqueAcceNumbs = institute.hasUniqueAcceNumbs(); for (AccessionNamesJson dataJson : batch) { - Accession accession = genesysService.getAccession(institute.getCode(), dataJson.acceNumb, dataJson.genus); + Accession accession = null; + if (useUniqueAcceNumbs) + accession = genesysService.getAccession(institute.getCode(), dataJson.acceNumb); + else + accession = genesysService.getAccession(institute.getCode(), dataJson.acceNumb, dataJson.genus); + if (accession == null) { LOG.warn("No such accession " + dataJson); continue; @@ -664,6 +670,7 @@ public class BatchRESTServiceImpl implements BatchRESTService { public int deleteAccessions(FaoInstitute institute, List batch) { LOG.info("Batch deleting " + batch.size() + " entries for " + institute); List toDelete = new ArrayList(batch.size()); + boolean useUniqueAcceNumbs = institute.hasUniqueAcceNumbs(); for (AccessionJson dataJson : batch) { if (LOG.isDebugEnabled()) @@ -673,7 +680,12 @@ public class BatchRESTServiceImpl implements BatchRESTService { throw new RuntimeException("Accession does not belong to instCode=" + institute.getCode() + " acn=" + dataJson); } - Accession accession = genesysService.getAccession(dataJson.instCode, dataJson.acceNumb, dataJson.genus); + Accession accession; + if (useUniqueAcceNumbs) + accession = genesysService.getAccession(institute.getCode(), dataJson.acceNumb); + else + accession = genesysService.getAccession(institute.getCode(), dataJson.acceNumb, dataJson.genus); + if (accession != null) { toDelete.add(accession); } diff --git a/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java b/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java index 1e8bf9b93..118cee85b 100644 --- a/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java +++ b/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java @@ -234,6 +234,8 @@ public class GenesysServiceImpl implements GenesysService, TraitService, Dataset @Override public Accession getAccession(String instCode, String acceNumb, String genus) { + if (genus == null) + throw new NullPointerException("Genus is required to load accession by instCode, acceNumb and genus"); return accessionRepository.findOne(instCode, acceNumb, genus); } diff --git a/src/main/java/org/genesys2/server/servlet/controller/rest/AccessionController.java b/src/main/java/org/genesys2/server/servlet/controller/rest/AccessionController.java index 643079ce3..190d70dc6 100644 --- a/src/main/java/org/genesys2/server/servlet/controller/rest/AccessionController.java +++ b/src/main/java/org/genesys2/server/servlet/controller/rest/AccessionController.java @@ -210,6 +210,12 @@ public class AccessionController extends RestController { if (institute == null) { throw new ResourceNotFoundException(); } + + for (AccessionNamesJson aid3 : batch) { + if (!instCode.equals(aid3.instCode)) { + throw new RuntimeException("Accession does not belong to instCode=" + instCode + " acn=" + aid3); + } + } batchRESTService.upsertAccessionNames(institute, batch); return JSON_OK; -- GitLab