2020import org .springframework .batch .core .repository .dao .mongodb .MongoExecutionContextDao ;
2121import org .springframework .batch .core .repository .dao .mongodb .MongoJobExecutionDao ;
2222import org .springframework .batch .core .repository .dao .mongodb .MongoJobInstanceDao ;
23+ import org .springframework .batch .core .repository .dao .mongodb .MongoSequenceIncrementer ;
2324import org .springframework .batch .core .repository .dao .mongodb .MongoStepExecutionDao ;
2425import org .springframework .beans .factory .InitializingBean ;
2526import org .springframework .data .mongodb .core .MongoOperations ;
2627import org .springframework .data .mongodb .core .convert .MappingMongoConverter ;
28+ import org .springframework .jdbc .support .incrementer .DataFieldMaxValueIncrementer ;
2729import org .springframework .util .Assert ;
2830
2931/**
@@ -41,10 +43,28 @@ public class MongoJobRepositoryFactoryBean extends AbstractJobRepositoryFactoryB
4143
4244 private @ Nullable MongoOperations mongoOperations ;
4345
46+ private @ Nullable DataFieldMaxValueIncrementer jobInstanceIncrementer ;
47+
48+ private @ Nullable DataFieldMaxValueIncrementer jobExecutionIncrementer ;
49+
50+ private @ Nullable DataFieldMaxValueIncrementer stepExecutionIncrementer ;
51+
4452 public void setMongoOperations (MongoOperations mongoOperations ) {
4553 this .mongoOperations = mongoOperations ;
4654 }
4755
56+ public void setJobInstanceIncrementer (DataFieldMaxValueIncrementer jobInstanceIncrementer ) {
57+ this .jobInstanceIncrementer = jobInstanceIncrementer ;
58+ }
59+
60+ public void setJobExecutionIncrementer (DataFieldMaxValueIncrementer jobExecutionIncrementer ) {
61+ this .jobExecutionIncrementer = jobExecutionIncrementer ;
62+ }
63+
64+ public void setStepExecutionIncrementer (DataFieldMaxValueIncrementer stepExecutionIncrementer ) {
65+ this .stepExecutionIncrementer = stepExecutionIncrementer ;
66+ }
67+
4868 @ Override
4969 protected Object getTarget () throws Exception {
5070 MongoJobInstanceDao jobInstanceDao = createJobInstanceDao ();
@@ -60,17 +80,22 @@ protected Object getTarget() throws Exception {
6080 protected MongoJobInstanceDao createJobInstanceDao () {
6181 MongoJobInstanceDao mongoJobInstanceDao = new MongoJobInstanceDao (this .mongoOperations );
6282 mongoJobInstanceDao .setJobKeyGenerator (this .jobKeyGenerator );
83+ mongoJobInstanceDao .setJobInstanceIncrementer (this .jobInstanceIncrementer );
6384 return mongoJobInstanceDao ;
6485 }
6586
6687 @ Override
6788 protected MongoJobExecutionDao createJobExecutionDao () {
68- return new MongoJobExecutionDao (this .mongoOperations );
89+ MongoJobExecutionDao mongoJobExecutionDao = new MongoJobExecutionDao (this .mongoOperations );
90+ mongoJobExecutionDao .setJobExecutionIncrementer (this .jobExecutionIncrementer );
91+ return mongoJobExecutionDao ;
6992 }
7093
7194 @ Override
7295 protected MongoStepExecutionDao createStepExecutionDao () {
73- return new MongoStepExecutionDao (this .mongoOperations );
96+ MongoStepExecutionDao mongoStepExecutionDao = new MongoStepExecutionDao (this .mongoOperations );
97+ mongoStepExecutionDao .setStepExecutionIncrementer (this .stepExecutionIncrementer );
98+ return mongoStepExecutionDao ;
7499 }
75100
76101 @ Override
@@ -82,6 +107,17 @@ protected MongoExecutionContextDao createExecutionContextDao() {
82107 public void afterPropertiesSet () throws Exception {
83108 super .afterPropertiesSet ();
84109 Assert .notNull (this .mongoOperations , "MongoOperations must not be null." );
110+ if (this .jobInstanceIncrementer == null ) {
111+ this .jobInstanceIncrementer = new MongoSequenceIncrementer (this .mongoOperations , "BATCH_JOB_INSTANCE_SEQ" );
112+ }
113+ if (this .jobExecutionIncrementer == null ) {
114+ this .jobExecutionIncrementer = new MongoSequenceIncrementer (this .mongoOperations ,
115+ "BATCH_JOB_EXECUTION_SEQ" );
116+ }
117+ if (this .stepExecutionIncrementer == null ) {
118+ this .stepExecutionIncrementer = new MongoSequenceIncrementer (this .mongoOperations ,
119+ "BATCH_STEP_EXECUTION_SEQ" );
120+ }
85121 }
86122
87123}
0 commit comments