diff --git a/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java b/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java index b6f2e33460d738bac2cfcc88c25352ae2b017639..f1a8ba0e7268837c008d2e99ff41db3cd6cd1b25 100644 --- a/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java +++ b/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java @@ -270,13 +270,17 @@ public abstract class SearchController extends AccessIndexResourceReadOnlyContro /* * DIP already exists */ - return new ResponseEntity<>("DIP already exists", HttpStatus.BAD_REQUEST); + final DisseminationInfoPackage dip = dipList.get(0); + if (dip.getOrders().size() != 1) { + return new ResponseEntity<>("Exactly one order should be associated to the DIP " + dip.getResId(), HttpStatus.INTERNAL_SERVER_ERROR); + } + return new ResponseEntity<>(dip.getOrders().get(0).getResId(), HttpStatus.ACCEPTED); } } @Override public HttpEntity<RestCollection<ArchiveMetadata>> search(@RequestParam(required = false) String query, Pageable pageable) { - // transform sort parameters from the portail to the corresponding name in the index + // transform sort parameters from the portal to the corresponding name in the index if (!pageable.getSort().isEmpty() && pageable.getSort().isSorted()) { pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), this.adaptSortProperties(pageable.getSort())); } @@ -288,7 +292,7 @@ public abstract class SearchController extends AccessIndexResourceReadOnlyContro public HttpEntity<RestCollection<ArchiveMetadata>> searchPost( @RequestBody(required = false) List<SearchCondition> searchConditions, Pageable pageable) { - // transform sort parameters from the portail to the corresponding name in the index + // transform sort parameters from the portal to the corresponding name in the index if (!pageable.getSort().isEmpty() && pageable.getSort().isSorted()) { pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), this.adaptSortProperties(pageable.getSort())); } diff --git a/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java b/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java index 1ea45599aaf37f56f7b29952b9890bd6fccd8702..eeecf0016eb363a6e3ac3e8a853f069f9a3db51f 100644 --- a/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java +++ b/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java @@ -42,18 +42,37 @@ public interface DisseminationInfoPackageRepository extends SolidifyRepository<D List<DisseminationInfoPackage> findByInfoName(String name); - @Query("SELECT COALESCE(SUM(df.fileSize), 0) FROM DipDataFile df WHERE df.infoPackage.resId = :dipId") + @Query("SELECT COALESCE(SUM(df.fileSize), 0) " + + "FROM DipDataFile df " + + "WHERE df.infoPackage.resId = :dipId") long getSize(String dipId); - @Query("SELECT COUNT(DISTINCT d.resId) FROM DisseminationInfoPackage d JOIN d.orders o WHERE o.queryType = 'SIMPLE' AND o.status = 'READY'") + @Query("SELECT COUNT(DISTINCT d.resId) " + + "FROM DisseminationInfoPackage d " + + "JOIN d.orders o " + + "WHERE o.queryType = 'SIMPLE' " + + "AND o.status = 'READY'") int countDIPOfCompletedOrders(); - @Query("SELECT dip FROM DisseminationInfoPackage dip JOIN dip.aips aip WHERE aip.resId = :aipId") + @Query("SELECT dip " + + "FROM DisseminationInfoPackage dip " + + "JOIN dip.aips aip " + + "WHERE aip.resId = :aipId") Page<DisseminationInfoPackage> findDipContainingAip(String aipId, Pageable pageable); - @Query("SELECT dip FROM DisseminationInfoPackage dip JOIN dip.orders order WHERE order.resId = :orderId") + @Query("SELECT dip " + + "FROM DisseminationInfoPackage dip " + + "JOIN dip.orders order " + + "WHERE order.resId = :orderId") List<DisseminationInfoPackage> findByOrderId(String orderId); - @Query("SELECT dip FROM DisseminationInfoPackage dip JOIN dip.orders order JOIN dip.aips aip JOIN order.subsetItems si WHERE aip.resId = :aipId AND order.disseminationPolicyId = :disseminationPolicyId and si IS NULL") + @Query("SELECT dip " + + "FROM DisseminationInfoPackage dip " + + "JOIN dip.orders order " + + "JOIN dip.aips aip " + + "LEFT JOIN order.subsetItems si " + + "WHERE aip.resId = :aipId " + + "AND order.disseminationPolicyId = :disseminationPolicyId " + + "AND si IS NULL") List<DisseminationInfoPackage> findByFullDisseminationPolicyIdAndAipId(String disseminationPolicyId, String aipId); }