Skip to content

Commit 22b230e

Browse files
committed
feat: configure Trigger JobData
- add `jobDataMap` property to SimpleTriggerInputDTO - update SimpleTriggerCommandDTOToSimpleTrigger converter - update SimpleTriggerToSimpleTriggerDTO converter - update unit tests - add .idea and .iml to .gitignore for ignoring intellij files
1 parent 82a60eb commit 22b230e

File tree

8 files changed

+26
-2
lines changed

8 files changed

+26
-2
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
11
/.project
2+
.idea
3+
*.iml

quartz-manager-parent/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
.classpath
55
.project
66
.idea
7+
*.iml

quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO;
5+
import org.quartz.JobDataMap;
56
import org.quartz.SimpleScheduleBuilder;
67
import org.quartz.SimpleTrigger;
78
import org.quartz.Trigger;
@@ -19,6 +20,8 @@ public SimpleTrigger convert(SimpleTriggerCommandDTO triggerCommandDTO) {
1920
if (triggerCommandDTO.getSimpleTriggerInputDTO().getEndDate() != null)
2021
triggerTriggerBuilder.endAt(triggerCommandDTO.getSimpleTriggerInputDTO().getEndDate());
2122

23+
if (triggerCommandDTO.getSimpleTriggerInputDTO().getJobDataMap() != null)
24+
triggerTriggerBuilder.usingJobData(new JobDataMap(triggerCommandDTO.getSimpleTriggerInputDTO().getJobDataMap()));
2225

2326
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule();
2427
if (triggerCommandDTO.getSimpleTriggerInputDTO().getRepeatInterval() != null)

quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ protected void convert(SimpleTrigger source, SimpleTriggerDTO target) {
1414
target.setRepeatCount(source.getRepeatCount());
1515
target.setRepeatInterval(source.getRepeatInterval());
1616
target.setMisfireInstruction(source.getMisfireInstruction());
17+
target.setJobDataMap(source.getJobDataMap());
1718
}
1819

1920
@Override

quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import it.fabioformosa.quartzmanager.api.validators.ValidTriggerRepetition;
44
import lombok.*;
55
import lombok.experimental.SuperBuilder;
6-
6+
import javax.annotation.Nullable;
77
import javax.validation.constraints.Positive;
8+
import java.util.Map;
89

910
@ValidTriggerRepetition
1011
@SuperBuilder
@@ -18,4 +19,7 @@ public class SimpleTriggerInputDTO extends TriggerCommandDTO implements TriggerR
1819

1920
@Positive
2021
private Long repeatInterval;
22+
23+
@Nullable
24+
private Map<String, ?> jobDataMap;
2125
}

quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import lombok.Data;
55
import lombok.NoArgsConstructor;
66
import lombok.experimental.SuperBuilder;
7+
import org.quartz.JobDataMap;
78

89
import java.util.Date;
910

@@ -23,4 +24,5 @@ public class TriggerDTO {
2324
private JobKeyDTO jobKeyDTO;
2425
private JobDetailDTO jobDetailDTO;
2526
private boolean mayFireAgain;
27+
private JobDataMap jobDataMap;
2628
}

quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
2222

2323
import java.util.Date;
24-
24+
import java.util.Map;
25+
import static java.util.Map.entry;
2526
import static org.mockito.ArgumentMatchers.any;
2627
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
2728

@@ -68,13 +69,18 @@ void givenACompleteSimpleTriggerCommandDTO_whenPosted_thenANewSimpleTriggerIsCre
6869
}
6970

7071
private SimpleTriggerInputDTO buildACompleteSimpleTriggerCommandDTO() {
72+
Map<String, ?> triggerJobDataMap = Map.ofEntries(
73+
entry("customTriggerData1", "value1"),
74+
entry("customTriggerData2", "value2")
75+
);
7176
return SimpleTriggerInputDTO.builder()
7277
.jobClass("it.fabioformosa.quartzmanager.api.jobs.SampleJob")
7378
.startDate(new Date())
7479
.endDate(DateUtils.addHoursToNow(6))
7580
.misfireInstruction(MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW)
7681
.repeatCount(5)
7782
.repeatInterval(1000L * 60 * 60)
83+
.jobDataMap(triggerJobDataMap)
7884
.build();
7985
}
8086

quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java

+5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
import it.fabioformosa.quartzmanager.api.common.utils.DateUtils;
44
import it.fabioformosa.quartzmanager.api.dto.*;
5+
import org.quartz.JobDataMap;
56

67
import java.time.LocalDateTime;
8+
import java.util.Map;
9+
import static java.util.Map.entry;
710

811
public class TriggerUtils {
912

@@ -48,6 +51,7 @@ static public SimpleTriggerDTO getSimpleTriggerInstance(String triggerName, Simp
4851
.nextFireTime(DateUtils.addHoursToNow(1L))
4952
.priority(1)
5053
.startTime(DateUtils.fromLocalDateTimeToDate(LocalDateTime.now()))
54+
.jobDataMap(new JobDataMap(simpleTriggerInputDTO.getJobDataMap()))
5155
.build();
5256
}
5357

@@ -71,6 +75,7 @@ static public SimpleTriggerDTO getSimpleTriggerInstance(String triggerName){
7175
.nextFireTime(DateUtils.addHoursToNow(1L))
7276
.priority(1)
7377
.startTime(DateUtils.fromLocalDateTimeToDate(LocalDateTime.now()))
78+
.jobDataMap(new JobDataMap(Map.ofEntries(entry("customTriggerData1", "value1"))))
7479
.build();
7580
}
7681

0 commit comments

Comments
 (0)