11package com .marklogic .spring .batch .item .tasklet ;
22
33import com .marklogic .client .DatabaseClient ;
4+ import com .marklogic .client .datamovement .DataMovementManager ;
5+ import com .marklogic .client .datamovement .DeleteListener ;
6+ import com .marklogic .client .datamovement .JobTicket ;
7+ import com .marklogic .client .datamovement .QueryBatcher ;
48import com .marklogic .client .document .GenericDocumentManager ;
59import com .marklogic .client .helper .DatabaseClientProvider ;
610import com .marklogic .client .io .SearchHandle ;
711import com .marklogic .client .query .MatchDocumentSummary ;
812import com .marklogic .client .query .QueryManager ;
913import com .marklogic .client .query .StructuredQueryDefinition ;
14+ import com .marklogic .mgmt .admin .AdminConfig ;
15+ import com .marklogic .mgmt .admin .AdminManager ;
1016import org .springframework .batch .core .StepContribution ;
1117import org .springframework .batch .core .scope .context .ChunkContext ;
1218import org .springframework .batch .core .step .tasklet .Tasklet ;
@@ -16,6 +22,7 @@ public class DeleteDocumentsTasklet implements Tasklet {
1622
1723 private DatabaseClient databaseClient ;
1824 private StructuredQueryDefinition queryDefinition ;
25+ private String marklogicVersion = "8" ;
1926
2027 public DeleteDocumentsTasklet (DatabaseClientProvider databaseClientProvider , StructuredQueryDefinition queryDef ) {
2128 this .databaseClient = databaseClientProvider .getDatabaseClient ();
@@ -24,26 +31,31 @@ public DeleteDocumentsTasklet(DatabaseClientProvider databaseClientProvider, Str
2431
2532 @ Override
2633 public RepeatStatus execute (StepContribution contribution , ChunkContext chunkContext ) throws Exception {
27- QueryManager qryMgr = databaseClient .newQueryManager ();
28- GenericDocumentManager docMgr = databaseClient .newDocumentManager ();
29- SearchHandle handle = qryMgr .search (queryDefinition , new SearchHandle ());
30- MatchDocumentSummary [] results = handle .getMatchResults ();
31- for (int i = 0 ; i < results .length ; i ++) {
32- docMgr .delete (results [i ].getUri ());
33- }
34+ if (marklogicVersion .equals ("8" )) {
35+ QueryManager qryMgr = databaseClient .newQueryManager ();
36+ GenericDocumentManager docMgr = databaseClient .newDocumentManager ();
37+ SearchHandle handle = qryMgr .search (queryDefinition , new SearchHandle ());
38+ MatchDocumentSummary [] results = handle .getMatchResults ();
39+ for (int i = 0 ; i < results .length ; i ++) {
40+ docMgr .delete (results [i ].getUri ());
41+ }
42+ } else if (marklogicVersion .equals ("9" )) {
43+ final DataMovementManager dataMovementManager = databaseClient .newDataMovementManager ();
44+ QueryBatcher qb = dataMovementManager .newQueryBatcher (queryDefinition )
45+ .withBatchSize (2500 )
46+ .withConsistentSnapshot ()
47+ .onUrisReady (new DeleteListener ())
48+ .onQueryFailure (throwable -> throwable .printStackTrace ());
49+ JobTicket ticket = dataMovementManager .startJob (qb );
50+ qb .awaitCompletion ();
51+ dataMovementManager .stopJob (ticket );
3452
35- /*
36- final DataMovementManager dataMovementManager = databaseClient.newDataMovementManager();
37- QueryBatcher qb = dataMovementManager.newQueryBatcher(queryDefinition)
38- .withBatchSize(2500)
39- .withConsistentSnapshot()
40- .onUrisReady(new DeleteListener())
41- .onQueryFailure(throwable -> throwable.printStackTrace());
42- JobTicket ticket = dataMovementManager.startJob(qb);
43- qb.awaitCompletion();
44- dataMovementManager.stopJob(ticket);
45- */
53+ }
4654 return RepeatStatus .FINISHED ;
4755 }
4856
57+
58+ public void setMarklogicVersion (String marklogicVersion ) {
59+ this .marklogicVersion = marklogicVersion ;
60+ }
4961}
0 commit comments