4949import org .fao .geonet .kernel .harvest .harvester .sftp .client .SftpClient ;
5050import org .fao .geonet .kernel .harvest .harvester .sftp .client .SftpFileInfo ;
5151import org .fao .geonet .kernel .search .IndexingMode ;
52+ import org .fao .geonet .kernel .search .submission .batch .BatchingDeletionSubmitter ;
5253import org .fao .geonet .repository .MetadataRepository ;
5354import org .fao .geonet .repository .specification .MetadataSpecs ;
5455import org .fao .geonet .utils .Xml ;
@@ -176,14 +177,16 @@ public HarvestResult align(Collection<HarvestError> errors) throws Exception {
176177 "from the same source if they " +
177178 " were not in this harvesting result..." );
178179 List <Integer > existingMetadata = context .getBean (MetadataRepository .class ).findIdsBy ((Specification <Metadata >) MetadataSpecs .hasHarvesterUuid (params .getUuid ()));
179- for (Integer existingId : existingMetadata ) {
180- if (cancelMonitor .get ()) {
181- return this .result ;
182- }
183- if (!idsForHarvestingResult .contains (existingId )) {
184- log .debug (" Removing: " + existingId );
185- metadataManager .deleteMetadata (context , existingId .toString ());
186- result .locallyRemoved ++;
180+ try (BatchingDeletionSubmitter deletionSubmitter = new BatchingDeletionSubmitter ()) {
181+ for (Integer existingId : existingMetadata ) {
182+ if (cancelMonitor .get ()) {
183+ return this .result ;
184+ }
185+ if (!idsForHarvestingResult .contains (existingId )) {
186+ log .debug (" Removing: " + existingId );
187+ metadataManager .deleteMetadata (context , existingId .toString (), deletionSubmitter );
188+ result .locallyRemoved ++;
189+ }
187190 }
188191 }
189192
@@ -320,13 +323,13 @@ private void addMetadata(RecordInfo ri, Element md, String uuidToAssign) throws
320323
321324 addCategories (metadata , params .getCategories (), localCateg , context , null , false );
322325
323- metadata = metadataManager .insertMetadata (context , metadata , md , IndexingMode .none , false , UpdateDatestamp .NO , false , false );
326+ metadata = metadataManager .insertMetadata (context , metadata , md , IndexingMode .none , false , UpdateDatestamp .NO , false , batchingIndexSubmitter );
324327
325328 String id = String .valueOf (metadata .getId ());
326329
327330 addPrivileges (id , params .getPrivileges (), localGroups , context );
328331
329- metadataIndexer .indexMetadata (id , true , IndexingMode .full );
332+ metadataIndexer .indexMetadata (id , batchingIndexSubmitter , IndexingMode .full );
330333 result .addedMetadata ++;
331334 idsForHarvestingResult .add (metadata .getId ());
332335 }
@@ -343,7 +346,7 @@ private void updateMetadata(RecordInfo ri, String id, Element md, boolean force)
343346 } else {
344347 log .debug (" - Updating local metadata for uuid:" + ri .uuid );
345348 if (updatingLocalMetadata (ri , id , md , force )) {
346- metadataIndexer .indexMetadata (id , true , IndexingMode .full );
349+ metadataIndexer .indexMetadata (id , batchingIndexSubmitter , IndexingMode .full );
347350 result .updatedMetadata ++;
348351 }
349352 }
0 commit comments