Skip to content
Snippets Groups Projects

refactor[DLCM-2830]: dissemination package

Merged Homada.Boumedane requested to merge dlcm-2830_reuse_subset_dip into master
All threads resolved!
Files
22
@@ -195,19 +195,16 @@ public class OrderService extends ResourceService<Order> {
order.setQuery(aipId);
order.setDisseminationPolicyId(disseminationPolicy.getDisseminationPolicyId());
order.setOrganizationalUnitDisseminationPolicyId(disseminationPolicy.getOrganizationalUnitDisseminationPolicyId());
this.calculateChecksum(order, subsetItemList); //calculate and set checksum
final Order savedOrder = this.save(order);
if (subsetItemList == null) { // if no subsetItemList is provided, set it to an empty list
subsetItemList = List.of();
}
order.setSubitemsChecksum(this.calculateChecksum(subsetItemList)); //calculate and set checksum
final Order savedOrder = this.save(order);
subsetItemList.forEach(subsetItem -> {
subsetItem.setOrder(savedOrder);
subsetItem.setCreatedBy(savedOrder.getCreatedBy());
subsetItem.setUpdatedBy(savedOrder.getUpdatedBy());
});
this.orderSubsetItemRepository.saveAll(subsetItemList);
return savedOrder;
@@ -230,7 +227,7 @@ public class OrderService extends ResourceService<Order> {
this.submitOrder(order1);
}
public List<Order> findDirectOrderByAipAndDisseminationPolicy(String aipId, String disseminationPolicyId) {
public List<Order> findFullDirectOrderByAipAndDisseminationPolicy(String aipId, String disseminationPolicyId) {
return ((OrderRepository) this.itemRepository).findFullDirectOrderByAipAndDisseminationPolicyId(aipId, disseminationPolicyId);
}
@@ -322,29 +319,25 @@ public class OrderService extends ResourceService<Order> {
}
public Optional<Order> isThereAnyOrderWithSameChecksum(Order order) {
return ((OrderRepository) this.itemRepository).findOrdersByChecksum(order.getChecksum(), order.getResId())
return ((OrderRepository) this.itemRepository).findDifferentOrdersWithSameChecksum(order.getSubitemsChecksum(), order.getResId())
.stream()
.findFirst();
}
private void calculateChecksum(Order order, List<OrderSubsetItem> subsetItems) {
public String calculateChecksum(List<OrderSubsetItem> subsetItems) {
if (subsetItems != null && !subsetItems.isEmpty()) {
// Create a string combining all paths, sorted by path to ensure consistent checksum
String content = subsetItems.stream()
.map(OrderSubsetItem::getItemPath)
.sorted()
.collect(Collectors.joining("|"));
if (content.isEmpty()) {
order.setChecksum(null);
return;
}
.collect(Collectors.joining(""));
try {
String hash = HashTool.hash(this.defaultChecksumAlgorithm.toString(), content.getBytes(StandardCharsets.UTF_8));
order.setChecksum(hash);
return HashTool.hash(this.defaultChecksumAlgorithm.toString(), content.getBytes(StandardCharsets.UTF_8));
} catch (TransformerFactoryConfigurationError | NoSuchAlgorithmException e) {
throw new SolidifyProcessingException(e.getMessage(), e);
}
}
return "";
}
@Override
Loading