77import java .util .List ;
88import java .util .Optional ;
99
10+ import org .apache .commons .lang3 .StringUtils ;
1011import org .springframework .context .event .EventListener ;
1112import org .springframework .data .domain .PageRequest ;
1213import org .springframework .data .domain .Pageable ;
13- import org .springframework .data .domain .Sort ;
1414import org .springframework .data .domain .Sort .Direction ;
1515import org .springframework .lang .NonNull ;
1616import org .springframework .stereotype .Service ;
1717import org .springframework .transaction .annotation .Transactional ;
18- import org .sterl .spring .persistent_tasks .api .AddTriggerRequest ;
1918import org .sterl .spring .persistent_tasks .api .TriggerKey ;
19+ import org .sterl .spring .persistent_tasks .api .TriggerRequest ;
20+ import org .sterl .spring .persistent_tasks .api .TriggerSearch ;
2021import org .sterl .spring .persistent_tasks .api .event .TriggerTaskCommand ;
2122import org .sterl .spring .persistent_tasks .history .HistoryService ;
22- import org .sterl .spring .persistent_tasks .history .model .TriggerHistoryLastStateEntity ;
23+ import org .sterl .spring .persistent_tasks .history .model .CompletedTriggerEntity ;
2324import org .sterl .spring .persistent_tasks .scheduler .SchedulerService ;
24- import org .sterl .spring .persistent_tasks .shared .model .TriggerData ;
25+ import org .sterl .spring .persistent_tasks .shared .model .TriggerEntity ;
2526import org .sterl .spring .persistent_tasks .trigger .TriggerService ;
26- import org .sterl .spring .persistent_tasks .trigger .model .TriggerEntity ;
27+ import org .sterl .spring .persistent_tasks .trigger .model .RunningTriggerEntity ;
2728
2829import lombok .RequiredArgsConstructor ;
2930
@@ -40,14 +41,14 @@ public class PersistentTaskService {
4041 private final HistoryService historyService ;
4142
4243 /**
43- * Returns the last known {@link TriggerData } to a given key. First running triggers are checked.
44+ * Returns the last known {@link TriggerEntity } to a given key. First running triggers are checked.
4445 * Maybe out of the history event from a retry execution of the very same id.
4546 *
4647 * @param key the {@link TriggerKey} to look for
47- * @return the {@link TriggerData } to the {@link TriggerKey}
48+ * @return the {@link TriggerEntity } to the {@link TriggerKey}
4849 */
49- public Optional <TriggerData > getLastTriggerData (TriggerKey key ) {
50- final Optional <TriggerEntity > trigger = triggerService .get (key );
50+ public Optional <TriggerEntity > getLastTriggerData (TriggerKey key ) {
51+ final Optional <RunningTriggerEntity > trigger = triggerService .get (key );
5152 if (trigger .isEmpty ()) {
5253 var history = historyService .findLastKnownStatus (key );
5354 if (history .isPresent ()) {
@@ -59,7 +60,7 @@ public Optional<TriggerData> getLastTriggerData(TriggerKey key) {
5960 }
6061 }
6162
62- public Optional <TriggerData > getLastDetailData (TriggerKey key ) {
63+ public Optional <TriggerEntity > getLastDetailData (TriggerKey key ) {
6364 var data = historyService .findAllDetailsForKey (key , Pageable .ofSize (1 ));
6465 if (data .isEmpty ()) {
6566 return Optional .empty ();
@@ -85,14 +86,14 @@ void queue(TriggerTaskCommand<? extends Serializable> event) {
8586 */
8687 @ Transactional (timeout = 10 )
8788 @ NonNull
88- public <T extends Serializable > List <TriggerKey > queue (Collection <AddTriggerRequest <T >> triggers ) {
89+ public <T extends Serializable > List <TriggerKey > queue (Collection <TriggerRequest <T >> triggers ) {
8990 if (triggers == null || triggers .isEmpty ()) {
9091 return Collections .emptyList ();
9192 }
9293
9394 return triggers .stream () //
9495 .map (t -> triggerService .queue (t )) //
95- .map (TriggerEntity ::getKey ) //
96+ .map (RunningTriggerEntity ::getKey ) //
9697 .toList ();
9798 }
9899 /**
@@ -104,7 +105,7 @@ public <T extends Serializable> List<TriggerKey> queue(Collection<AddTriggerRequ
104105 */
105106 @ Transactional (timeout = 5 )
106107 @ NonNull
107- public <T extends Serializable > TriggerKey queue (AddTriggerRequest <T > trigger ) {
108+ public <T extends Serializable > TriggerKey queue (TriggerRequest <T > trigger ) {
108109 return triggerService .queue (trigger ).getKey ();
109110 }
110111
@@ -114,7 +115,7 @@ public <T extends Serializable> TriggerKey queue(AddTriggerRequest<T> trigger) {
114115 * @return the reference to the {@link TriggerKey}
115116 */
116117 public <T extends Serializable > TriggerKey runOrQueue (
117- AddTriggerRequest <T > triggerRequest ) {
118+ TriggerRequest <T > triggerRequest ) {
118119 if (schedulerService .isPresent ()) {
119120 schedulerService .get ().runOrQueue (triggerRequest );
120121 } else {
@@ -128,42 +129,41 @@ public <T extends Serializable> TriggerKey runOrQueue(
128129 * Data is limited to overall 300 elements.
129130 *
130131 * @param correlationId the id to search for
131- * @return the found {@link TriggerData } sorted by create time ASC
132+ * @return the found {@link TriggerEntity } sorted by create time ASC
132133 */
133134 @ Transactional (readOnly = true , timeout = 5 )
134- public List <TriggerData > findAllTriggerByCorrelationId (String correlationId ) {
135+ public List <TriggerEntity > findAllTriggerByCorrelationId (String correlationId ) {
136+ if (StringUtils .isAllBlank (correlationId )) return Collections .emptyList ();
137+
138+ final var search = TriggerSearch .byCorrelationId (correlationId );
135139
136- var running = triggerService .findTriggerByCorrelationId ( correlationId , Pageable . ofSize ( 100 ))
137- .stream ().map (TriggerEntity ::getData )
140+ final var running = triggerService .searchTriggers ( search , PageRequest . of ( 0 , 100 , TriggerSearch . DEFAULT_SORT ))
141+ .stream ().map (RunningTriggerEntity ::getData )
138142 .toList ();
139143
140- var done = historyService .findTriggerByCorrelationId ( correlationId , Pageable . ofSize ( 200 ))
141- .stream ().map (TriggerHistoryLastStateEntity ::getData )
144+ final var done = historyService .searchTriggers ( search , PageRequest . of ( 0 , 200 , TriggerSearch . DEFAULT_SORT ))
145+ .stream ().map (CompletedTriggerEntity ::getData )
142146 .toList ();
143147
144- var result = new ArrayList <TriggerData >(running .size () + done .size ());
148+ final var result = new ArrayList <TriggerEntity >(running .size () + done .size ());
145149 result .addAll (done );
146150 result .addAll (running );
147151 return result ;
148152 }
149-
150- /**
151- * Returns the first info to a trigger based on the correlationId.
152- *
153- * @param correlationId the id to search for
154- * @return the found {@link TriggerData}
155- */
153+
156154 @ Transactional (readOnly = true , timeout = 5 )
157- public Optional <TriggerData > findLastTriggerByCorrelationId (String correlationId ) {
158- final var page = PageRequest .of (0 , 1 , Sort .by (Direction .DESC , "data.createdTime" ));
159- var result = triggerService .findTriggerByCorrelationId (correlationId , page )
160- .stream ().map (TriggerEntity ::getData )
161- .toList ();
155+ public Optional <TriggerEntity > findLastTriggerByCorrelationId (String correlationId ) {
156+ final var page = PageRequest .of (0 , 1 , TriggerSearch .sortByCreatedTime (Direction .DESC ));
157+ final var search = TriggerSearch .byCorrelationId (correlationId );
158+
159+ var result = triggerService .searchTriggers (search , page )
160+ .stream ().map (RunningTriggerEntity ::getData )
161+ .toList ();
162162
163163 if (result .isEmpty ()) {
164- result = historyService .findTriggerByCorrelationId ( correlationId , page )
165- .stream ().map (TriggerHistoryLastStateEntity ::getData )
166- .toList ();
164+ result = historyService .searchTriggers ( search , page )
165+ .stream ().map (CompletedTriggerEntity ::getData )
166+ .toList ();
167167 }
168168 return result .isEmpty () ? Optional .empty () : Optional .of (result .getFirst ());
169169 }
0 commit comments