Skip to content

Commit 858e6a1

Browse files
authored
Merge pull request #10 from gdgib/G2-1724-AbstractSprintControl
G2-1724 Abstract sprint control
2 parents a21b3cf + d9a3daf commit 858e6a1

4 files changed

Lines changed: 59 additions & 10 deletions

File tree

pj-create/src/main/java/com/g2forge/project/plan/create/Create.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,9 @@ protected static class LinkType {
160160
protected static final Pattern PATTERN_KEY = Pattern.compile("([A-Z0-9]{2,5}-[0-9]+)(\\s.*)?");
161161

162162
protected static Changes computeChanges(Server server, CreateConfig config) {
163-
final int sprintOffset = (((server == null) || (server.getSprintOffset() == null)) ? 0 : server.getSprintOffset()) + ((config.getSprintOffset() == null) ? 0 : config.getSprintOffset());
163+
final SprintConfig sprintWithDefault = config.getSprintConfig() == null ? SprintConfig.getDEFAULT() : config.getSprintConfig().fallback(SprintConfig.getDEFAULT());
164+
final SprintConfig sprintWithOffset = ((server == null) || (server.getSprintOffset() == null)) ? sprintWithDefault : sprintWithDefault.toBuilder().offset(sprintWithDefault.getOffset() + server.getSprintOffset()).build();
165+
164166
final Changes.ChangesBuilder retVal = Changes.builder();
165167
final Set<String> disabledSummaries = config.getDisabledIssues().stream().map(CreateIssue::getSummary).collect(Collectors.toSet());
166168
for (CreateIssue raw : config.getEnabledIssues()) {
@@ -169,7 +171,7 @@ protected static Changes computeChanges(Server server, CreateConfig config) {
169171
final CreateIssue issueWithServer;
170172
{
171173
final CreateIssueBuilder builder = issueWithFallback.toBuilder();
172-
if (sprintOffset != 0) builder.sprint(issueWithFallback.getSprint() + sprintOffset);
174+
builder.sprint(sprintWithOffset.modify(issueWithFallback.getSprint()));
173175
if ((server != null) && (server.getUsers() != null)) builder.assignee(server.getUsers().getOrDefault(issueWithFallback.getAssignee(), issueWithFallback.getAssignee()));
174176
issueWithServer = builder.build();
175177
}

pj-create/src/main/java/com/g2forge/project/plan/create/CreateConfig.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@
1616
import lombok.Data;
1717
import lombok.Getter;
1818
import lombok.Singular;
19+
import lombok.extern.jackson.Jacksonized;
1920

2021
@Data
21-
@Builder
22+
@Builder(toBuilder = true)
2223
@AllArgsConstructor
24+
@Jacksonized
2325
public class CreateConfig implements ICreateConfig {
26+
27+
2428
protected final String project;
2529

2630
protected final String type;
@@ -31,9 +35,7 @@ public class CreateConfig implements ICreateConfig {
3135

3236
protected final String assignee;
3337

34-
protected final Integer sprint;
35-
36-
protected final Integer sprintOffset;
38+
protected final SprintConfig sprintConfig;
3739

3840
@Singular
3941
protected final Set<String> components;
@@ -58,14 +60,19 @@ public class CreateConfig implements ICreateConfig {
5860
@JsonIgnore
5961
private final Set<String> disabledFlags = getSpecifiedFlags().entrySet().stream().filter(entry -> !entry.getValue()).map(Map.Entry::getKey).collect(Collectors.toSet());
6062

63+
@JsonIgnore
64+
public List<CreateIssue> getDisabledIssues() {
65+
return getIssues().stream().filter(issue -> !issue.isEnabled(this)).collect(Collectors.toList());
66+
}
67+
6168
@JsonIgnore
6269
public List<CreateIssue> getEnabledIssues() {
6370
return getIssues().stream().filter(issue -> issue.isEnabled(this)).collect(Collectors.toList());
6471
}
6572

66-
@JsonIgnore
67-
public List<CreateIssue> getDisabledIssues() {
68-
return getIssues().stream().filter(issue -> !issue.isEnabled(this)).collect(Collectors.toList());
73+
@Override
74+
public Integer getSprint() {
75+
return getSprintConfig() == null ? null : sprintConfig.getSprint();
6976
}
7077

7178
public void validateFlags() {

pj-create/src/main/java/com/g2forge/project/plan/create/CreateIssue.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class CreateIssue implements ICreateConfig {
4848
@Singular
4949
protected final Set<String> flags;
5050

51-
public CreateIssue fallback(CreateConfig config) {
51+
public CreateIssue fallback(ICreateConfig config) {
5252
final CreateIssueBuilder retVal = builder();
5353

5454
// Configurable fields
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.g2forge.project.plan.create;
2+
3+
import com.g2forge.alexandria.java.function.IFunction1;
4+
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Data;
8+
import lombok.Getter;
9+
import lombok.extern.jackson.Jacksonized;
10+
11+
@Data
12+
@Builder(toBuilder = true)
13+
@AllArgsConstructor
14+
@Jacksonized
15+
public class SprintConfig {
16+
@Getter(lazy = true)
17+
private static final SprintConfig DEFAULT = new SprintConfig(null, 0, 1, Integer.MAX_VALUE);
18+
19+
protected final Integer sprint;
20+
21+
protected final Integer offset;
22+
23+
protected final Integer min;
24+
25+
protected final Integer max;
26+
27+
public SprintConfig fallback(SprintConfig that) {
28+
final SprintConfigBuilder retVal = builder();
29+
retVal.sprint(IFunction1.create(SprintConfig::getSprint).applyWithFallback(this, that));
30+
retVal.offset(IFunction1.create(SprintConfig::getOffset).applyWithFallback(this, that));
31+
retVal.min(IFunction1.create(SprintConfig::getMin).applyWithFallback(this, that));
32+
retVal.max(IFunction1.create(SprintConfig::getMax).applyWithFallback(this, that));
33+
return retVal.build();
34+
}
35+
36+
public Integer modify(Integer sprint) {
37+
if (sprint == null) return null;
38+
return Integer.min(Integer.max(sprint + getOffset(), getMin()), getMax());
39+
}
40+
}

0 commit comments

Comments
 (0)