-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathUseCase.java
35 lines (29 loc) · 1016 Bytes
/
UseCase.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package workFlowPattern;
import lombok.*;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
@Getter
@Setter
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class UseCase {
@Builder.Default private Map<Class<?>, Object> useCases = new ConcurrentHashMap<>();
@Builder.Default private List<Class<?>> completedStates = new CopyOnWriteArrayList<>();
public UseCase addToUseCase(Object data) {
useCases.put(data.getClass(), data);
return this;
}
public <Q> Q getData(Class<Q> tClass) {
return (Q) useCases.get(tClass);
}
public WorkFlowDefinition persistState(WorkFlowDefinition currentState) {
this.completedStates.add(currentState.getClass());
return currentState;
}
public boolean isACompletedState(WorkFlowDefinition workflowDefinition) {
return completedStates.contains(workflowDefinition.getClass());
}
}