mirror of
https://github.com/eMoflon/emoflon-neo.git
synced 2024-05-21 04:00:37 +00:00
Added class for defining composite termination conditions
This commit is contained in:
parent
e74bd3a328
commit
75ef3db2bb
|
@ -0,0 +1,33 @@
|
|||
package org.emoflon.neo.engine.modules.terminationcondition;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.emoflon.neo.cypher.patterns.NeoMatch;
|
||||
import org.emoflon.neo.cypher.rules.NeoCoMatch;
|
||||
import org.emoflon.neo.engine.generator.MatchContainer;
|
||||
import org.emoflon.neo.engine.generator.modules.ITerminationCondition;
|
||||
|
||||
public class CompositeTerminationCondition implements ITerminationCondition<NeoMatch, NeoCoMatch> {
|
||||
|
||||
private List<ITerminationCondition<NeoMatch, NeoCoMatch>> terminationConditions;
|
||||
|
||||
public CompositeTerminationCondition() {
|
||||
this.terminationConditions = new ArrayList<>();
|
||||
}
|
||||
|
||||
public boolean add(ITerminationCondition<NeoMatch, NeoCoMatch> e) {
|
||||
return terminationConditions.add(e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReached(MatchContainer<NeoMatch, NeoCoMatch> matchContainer) {
|
||||
if(terminationConditions.isEmpty())
|
||||
return true;
|
||||
for(ITerminationCondition<NeoMatch, NeoCoMatch> terminationCondition : terminationConditions) {
|
||||
if(terminationCondition.isReached(matchContainer))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue