Skip to content

Commit 7e3f40a

Browse files
chore: review comments
1 parent fbf633f commit 7e3f40a

23 files changed

+1616
-1432
lines changed

core/src/main/java/ai/timefold/solver/core/api/score/stream/bi/BiConstraintStream.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,9 +1592,11 @@ <C> TriConstraintStream<A, B, C> concat(@NonNull TriConstraintStream<A, B, C> ot
15921592
return firstStream.concat(secondStream.ifNotExists(remapped, Joiners.equal()),
15931593
paddingFunction);
15941594
} else {
1595-
var secondStream = getConstraintFactory().forEach(otherClass)
1596-
.ifNotExists(remapped, Joiners.equal());
1597-
return firstStream.concat(secondStream, paddingFunction);
1595+
throw new IllegalStateException("""
1596+
Impossible state: the %s class (%s) does not extend %s.
1597+
%s are not expected to be implemented by the user.
1598+
""".formatted(ConstraintStream.class.getSimpleName(), this.getClass().getSimpleName(),
1599+
AbstractConstraintStream.class.getSimpleName(), ConstraintStream.class.getSimpleName()));
15981600
}
15991601
}
16001602

core/src/main/java/ai/timefold/solver/core/api/score/stream/quad/QuadConstraintStream.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,9 +1093,11 @@ QuadConstraintStream<A, B, C, D> concat(@NonNull TriConstraintStream<A, B, C> ot
10931093
return firstStream.concat(secondStream.ifNotExists(remapped, Joiners.equal()),
10941094
paddingFunctionB, paddingFunctionC, paddingFunctionD);
10951095
} else {
1096-
var secondStream = getConstraintFactory().forEach(otherClass)
1097-
.ifNotExists(remapped, Joiners.equal());
1098-
return firstStream.concat(secondStream, paddingFunctionB, paddingFunctionC, paddingFunctionD);
1096+
throw new IllegalStateException("""
1097+
Impossible state: the %s class (%s) does not extend %s.
1098+
%s are not expected to be implemented by the user.
1099+
""".formatted(ConstraintStream.class.getSimpleName(), this.getClass().getSimpleName(),
1100+
AbstractConstraintStream.class.getSimpleName(), ConstraintStream.class.getSimpleName()));
10991101
}
11001102
}
11011103

core/src/main/java/ai/timefold/solver/core/api/score/stream/tri/TriConstraintStream.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1304,9 +1304,11 @@ TriConstraintStream<A, B, C> concat(@NonNull BiConstraintStream<A, B> otherStrea
13041304
return firstStream.concat(secondStream.ifNotExists(remapped, Joiners.equal()),
13051305
paddingFunctionB, paddingFunctionC);
13061306
} else {
1307-
var secondStream = getConstraintFactory().forEach(otherClass)
1308-
.ifNotExists(remapped, Joiners.equal());
1309-
return firstStream.concat(secondStream, paddingFunctionB, paddingFunctionC);
1307+
throw new IllegalStateException("""
1308+
Impossible state: the %s class (%s) does not extend %s.
1309+
%s are not expected to be implemented by the user.
1310+
""".formatted(ConstraintStream.class.getSimpleName(), this.getClass().getSimpleName(),
1311+
AbstractConstraintStream.class.getSimpleName(), ConstraintStream.class.getSimpleName()));
13101312
}
13111313
}
13121314

core/src/main/java/ai/timefold/solver/core/api/score/stream/uni/UniConstraintStream.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,9 +1735,11 @@ default UniConstraintStream<A> ifNotExistsOtherIncludingNullVars(Class<A> otherC
17351735
};
17361736
return firstStream.concat(secondStream.ifNotExists(firstStream, Joiners.equal()));
17371737
} else {
1738-
var secondStream = getConstraintFactory().forEach(otherClass)
1739-
.ifNotExists(firstStream, Joiners.equal());
1740-
return firstStream.concat(secondStream);
1738+
throw new IllegalStateException("""
1739+
Impossible state: the %s class (%s) does not extend %s.
1740+
%s are not expected to be implemented by the user.
1741+
""".formatted(ConstraintStream.class.getSimpleName(), this.getClass().getSimpleName(),
1742+
AbstractConstraintStream.class.getSimpleName(), ConstraintStream.class.getSimpleName()));
17411743
}
17421744
}
17431745

core/src/main/java/ai/timefold/solver/core/impl/bavet/common/AbstractPrecomputeNode.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,14 @@ public final void settle() {
124124
queuedUpdateSet.clear();
125125
}
126126

127-
private void insertNew(Tuple_ tuple) {
127+
private void insertIfAbsent(Tuple_ tuple) {
128128
var state = tuple.state;
129129
if (state != TupleState.CREATING) {
130130
propagationQueue.insert(tuple);
131131
}
132132
}
133133

134-
private void retractExisting(Tuple_ tuple) {
134+
private void retractIfPresent(Tuple_ tuple) {
135135
var state = tuple.state;
136136
if (state.isDirty()) {
137137
if (state == TupleState.DYING || state == TupleState.ABORTING) {
@@ -158,7 +158,7 @@ private void retractFromInnerNodeNetwork(Object toRetract) {
158158
}
159159

160160
private void invalidateCache() {
161-
objectToOutputTuplesMap.values().stream().flatMap(List::stream).forEach(this::retractExisting);
161+
objectToOutputTuplesMap.values().stream().flatMap(List::stream).forEach(this::retractIfPresent);
162162
inputTupleToOutputTupleMap.clear();
163163
}
164164

@@ -177,7 +177,7 @@ private void recalculateTuples() {
177177

178178
recordingTupleNode.stopRecording();
179179
}
180-
objectToOutputTuplesMap.values().stream().flatMap(List::stream).forEach(this::insertNew);
180+
objectToOutputTuplesMap.values().stream().flatMap(List::stream).forEach(this::insertIfAbsent);
181181
}
182182

183183
protected abstract Tuple_ remapTuple(Tuple_ tuple);

core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/bi/BavetPrecomputeBiConstraintStream.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515

1616
public class BavetPrecomputeBiConstraintStream<Solution_, A, B> extends BavetAbstractBiConstraintStream<Solution_, A, B>
1717
implements TupleSource {
18-
private final BavetAbstractConstraintStream<Solution_> recordingStaticConstraintStream;
18+
private final BavetAbstractConstraintStream<Solution_> recordingPrecomputedConstraintStream;
1919
private BavetAftBridgeBiConstraintStream<Solution_, A, B> aftStream;
2020

2121
public BavetPrecomputeBiConstraintStream(
2222
BavetConstraintFactory<Solution_> constraintFactory,
23-
BavetAbstractConstraintStream<Solution_> staticConstraintStream) {
23+
BavetAbstractConstraintStream<Solution_> precomputedConstraintStream) {
2424
super(constraintFactory, RetrievalSemantics.STANDARD);
25-
this.recordingStaticConstraintStream = new BavetRecordingBiConstraintStream<>(constraintFactory,
26-
staticConstraintStream);
27-
staticConstraintStream.getChildStreamList().add(recordingStaticConstraintStream);
25+
this.recordingPrecomputedConstraintStream = new BavetRecordingBiConstraintStream<>(constraintFactory,
26+
precomputedConstraintStream);
27+
precomputedConstraintStream.getChildStreamList().add(recordingPrecomputedConstraintStream);
2828
}
2929

3030
public void setAftBridge(BavetAftBridgeBiConstraintStream<Solution_, A, B> aftStream) {
@@ -33,14 +33,14 @@ public void setAftBridge(BavetAftBridgeBiConstraintStream<Solution_, A, B> aftSt
3333

3434
@Override
3535
public <Score_ extends Score<Score_>> void buildNode(ConstraintNodeBuildHelper<Solution_, Score_> buildHelper) {
36-
var staticDataBuildHelper = new BavetPrecomputeBuildHelper<BiTuple<A, B>>(recordingStaticConstraintStream);
36+
var precomputeBuildHelper = new BavetPrecomputeBuildHelper<BiTuple<A, B>>(recordingPrecomputedConstraintStream);
3737
var outputStoreSize = buildHelper.extractTupleStoreSize(aftStream);
3838

39-
buildHelper.addNode(new PrecomputeBiNode<>(staticDataBuildHelper.getNodeNetwork(),
40-
staticDataBuildHelper.getRecordingTupleLifecycle(),
39+
buildHelper.addNode(new PrecomputeBiNode<>(precomputeBuildHelper.getNodeNetwork(),
40+
precomputeBuildHelper.getRecordingTupleLifecycle(),
4141
outputStoreSize,
4242
buildHelper.getAggregatedTupleLifecycle(aftStream.getChildStreamList()),
43-
staticDataBuildHelper.getSourceClasses()),
43+
precomputeBuildHelper.getSourceClasses()),
4444
this);
4545
}
4646

core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/quad/BavetPrecomputeQuadConstraintStream.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@
1616
public class BavetPrecomputeQuadConstraintStream<Solution_, A, B, C, D>
1717
extends BavetAbstractQuadConstraintStream<Solution_, A, B, C, D>
1818
implements TupleSource {
19-
private final BavetAbstractConstraintStream<Solution_> recordingStaticConstraintStream;
19+
private final BavetAbstractConstraintStream<Solution_> recordingPrecomputedConstraintStream;
2020
private BavetAftBridgeQuadConstraintStream<Solution_, A, B, C, D> aftStream;
2121

2222
public BavetPrecomputeQuadConstraintStream(
2323
BavetConstraintFactory<Solution_> constraintFactory,
24-
BavetAbstractConstraintStream<Solution_> staticConstraintStream) {
24+
BavetAbstractConstraintStream<Solution_> precomputedConstraintStream) {
2525
super(constraintFactory, RetrievalSemantics.STANDARD);
26-
this.recordingStaticConstraintStream = new BavetRecordingQuadConstraintStream<>(constraintFactory,
27-
staticConstraintStream);
28-
staticConstraintStream.getChildStreamList().add(recordingStaticConstraintStream);
26+
this.recordingPrecomputedConstraintStream = new BavetRecordingQuadConstraintStream<>(constraintFactory,
27+
precomputedConstraintStream);
28+
precomputedConstraintStream.getChildStreamList().add(recordingPrecomputedConstraintStream);
2929
}
3030

3131
public void setAftBridge(BavetAftBridgeQuadConstraintStream<Solution_, A, B, C, D> aftStream) {
@@ -34,14 +34,14 @@ public void setAftBridge(BavetAftBridgeQuadConstraintStream<Solution_, A, B, C,
3434

3535
@Override
3636
public <Score_ extends Score<Score_>> void buildNode(ConstraintNodeBuildHelper<Solution_, Score_> buildHelper) {
37-
var staticDataBuildHelper = new BavetPrecomputeBuildHelper<QuadTuple<A, B, C, D>>(recordingStaticConstraintStream);
37+
var precomputeBuildHelper = new BavetPrecomputeBuildHelper<QuadTuple<A, B, C, D>>(recordingPrecomputedConstraintStream);
3838
var outputStoreSize = buildHelper.extractTupleStoreSize(aftStream);
3939

40-
buildHelper.addNode(new PrecomputeQuadNode<>(staticDataBuildHelper.getNodeNetwork(),
41-
staticDataBuildHelper.getRecordingTupleLifecycle(),
40+
buildHelper.addNode(new PrecomputeQuadNode<>(precomputeBuildHelper.getNodeNetwork(),
41+
precomputeBuildHelper.getRecordingTupleLifecycle(),
4242
outputStoreSize,
4343
buildHelper.getAggregatedTupleLifecycle(aftStream.getChildStreamList()),
44-
staticDataBuildHelper.getSourceClasses()),
44+
precomputeBuildHelper.getSourceClasses()),
4545
this);
4646
}
4747

core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/tri/BavetPrecomputeTriConstraintStream.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515

1616
public class BavetPrecomputeTriConstraintStream<Solution_, A, B, C> extends BavetAbstractTriConstraintStream<Solution_, A, B, C>
1717
implements TupleSource {
18-
private final BavetAbstractConstraintStream<Solution_> recordingStaticConstraintStream;
18+
private final BavetAbstractConstraintStream<Solution_> recordingPrecomputedConstraintStream;
1919
private BavetAftBridgeTriConstraintStream<Solution_, A, B, C> aftStream;
2020

2121
public BavetPrecomputeTriConstraintStream(
2222
BavetConstraintFactory<Solution_> constraintFactory,
23-
BavetAbstractConstraintStream<Solution_> staticConstraintStream) {
23+
BavetAbstractConstraintStream<Solution_> precomputedConstraintStream) {
2424
super(constraintFactory, RetrievalSemantics.STANDARD);
25-
this.recordingStaticConstraintStream = new BavetRecordingTriConstraintStream<>(constraintFactory,
26-
staticConstraintStream);
27-
staticConstraintStream.getChildStreamList().add(recordingStaticConstraintStream);
25+
this.recordingPrecomputedConstraintStream = new BavetRecordingTriConstraintStream<>(constraintFactory,
26+
precomputedConstraintStream);
27+
precomputedConstraintStream.getChildStreamList().add(recordingPrecomputedConstraintStream);
2828
}
2929

3030
public void setAftBridge(BavetAftBridgeTriConstraintStream<Solution_, A, B, C> aftStream) {
@@ -33,14 +33,14 @@ public void setAftBridge(BavetAftBridgeTriConstraintStream<Solution_, A, B, C> a
3333

3434
@Override
3535
public <Score_ extends Score<Score_>> void buildNode(ConstraintNodeBuildHelper<Solution_, Score_> buildHelper) {
36-
var staticDataBuildHelper = new BavetPrecomputeBuildHelper<TriTuple<A, B, C>>(recordingStaticConstraintStream);
36+
var precomputedBuildHelper = new BavetPrecomputeBuildHelper<TriTuple<A, B, C>>(recordingPrecomputedConstraintStream);
3737
var outputStoreSize = buildHelper.extractTupleStoreSize(aftStream);
3838

39-
buildHelper.addNode(new PrecomputeTriNode<>(staticDataBuildHelper.getNodeNetwork(),
40-
staticDataBuildHelper.getRecordingTupleLifecycle(),
39+
buildHelper.addNode(new PrecomputeTriNode<>(precomputedBuildHelper.getNodeNetwork(),
40+
precomputedBuildHelper.getRecordingTupleLifecycle(),
4141
outputStoreSize,
4242
buildHelper.getAggregatedTupleLifecycle(aftStream.getChildStreamList()),
43-
staticDataBuildHelper.getSourceClasses()),
43+
precomputedBuildHelper.getSourceClasses()),
4444
this);
4545
}
4646

core/src/main/java/ai/timefold/solver/core/impl/score/stream/bavet/uni/BavetPrecomputeUniConstraintStream.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,16 @@
1515

1616
public class BavetPrecomputeUniConstraintStream<Solution_, A> extends BavetAbstractUniConstraintStream<Solution_, A>
1717
implements TupleSource {
18-
private final BavetAbstractConstraintStream<Solution_> recordingStaticConstraintStream;
18+
private final BavetAbstractConstraintStream<Solution_> recordingPrecomputedConstraintStream;
1919
private BavetAftBridgeUniConstraintStream<Solution_, A> aftStream;
2020

2121
public BavetPrecomputeUniConstraintStream(
2222
BavetConstraintFactory<Solution_> constraintFactory,
23-
BavetAbstractConstraintStream<Solution_> staticConstraintStream) {
23+
BavetAbstractConstraintStream<Solution_> precomputedConstraintStream) {
2424
super(constraintFactory, RetrievalSemantics.STANDARD);
25-
this.recordingStaticConstraintStream = new BavetRecordingUniConstraintStream<>(constraintFactory,
26-
staticConstraintStream);
27-
staticConstraintStream.getChildStreamList().add(recordingStaticConstraintStream);
25+
this.recordingPrecomputedConstraintStream = new BavetRecordingUniConstraintStream<>(constraintFactory,
26+
precomputedConstraintStream);
27+
precomputedConstraintStream.getChildStreamList().add(recordingPrecomputedConstraintStream);
2828
}
2929

3030
public void setAftBridge(BavetAftBridgeUniConstraintStream<Solution_, A> aftStream) {
@@ -33,14 +33,14 @@ public void setAftBridge(BavetAftBridgeUniConstraintStream<Solution_, A> aftStre
3333

3434
@Override
3535
public <Score_ extends Score<Score_>> void buildNode(ConstraintNodeBuildHelper<Solution_, Score_> buildHelper) {
36-
var staticDataBuildHelper = new BavetPrecomputeBuildHelper<UniTuple<A>>(recordingStaticConstraintStream);
36+
var precomputeBuildHelper = new BavetPrecomputeBuildHelper<UniTuple<A>>(recordingPrecomputedConstraintStream);
3737
var outputStoreSize = buildHelper.extractTupleStoreSize(aftStream);
3838

39-
buildHelper.addNode(new PrecomputeUniNode<>(staticDataBuildHelper.getNodeNetwork(),
40-
staticDataBuildHelper.getRecordingTupleLifecycle(),
39+
buildHelper.addNode(new PrecomputeUniNode<>(precomputeBuildHelper.getNodeNetwork(),
40+
precomputeBuildHelper.getRecordingTupleLifecycle(),
4141
outputStoreSize,
4242
buildHelper.getAggregatedTupleLifecycle(aftStream.getChildStreamList()),
43-
staticDataBuildHelper.getSourceClasses()),
43+
precomputeBuildHelper.getSourceClasses()),
4444
this);
4545
}
4646

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package ai.timefold.solver.core.impl.score.stream.bavet.bi;
2+
3+
import ai.timefold.solver.core.impl.score.constraint.ConstraintMatchPolicy;
4+
import ai.timefold.solver.core.impl.score.stream.bavet.BavetConstraintStreamImplSupport;
5+
import ai.timefold.solver.core.impl.score.stream.common.bi.AbstractBiConstraintStreamPrecomputeTest;
6+
7+
final class BavetBiConstraintStreamPrecomputeTest extends AbstractBiConstraintStreamPrecomputeTest {
8+
9+
public BavetBiConstraintStreamPrecomputeTest(ConstraintMatchPolicy constraintMatchPolicy) {
10+
super(new BavetConstraintStreamImplSupport(constraintMatchPolicy));
11+
}
12+
13+
}

0 commit comments

Comments
 (0)