Class MultiRule
- All Implemented Interfaces:
ISchedulingRule
isConflicting
equivalence
relation.
A MultiRule will never contain other MultiRules as children. If a MultiRule is provided as a child, its children will be added instead.
- Since:
- 3.0
- Restriction:
- This class is not intended to be subclassed by clients.
-
Constructor Summary
ConstructorDescriptionMultiRule
(ISchedulingRule... nestedRules) Creates a new scheduling rule that composes a set of nested rules. -
Method Summary
Modifier and TypeMethodDescriptionstatic ISchedulingRule
combine
(ISchedulingRule[] ruleArray) Returns a scheduling rule that encompasses all provided rules.static ISchedulingRule
combine
(ISchedulingRule rule1, ISchedulingRule rule2) Returns a scheduling rule that encompasses both provided rules.boolean
contains
(ISchedulingRule rule) Returns whether this scheduling rule completely contains another scheduling rule.Returns the child rules within this rule.boolean
isConflicting
(ISchedulingRule rule) Returns whether this scheduling rule is compatible with another scheduling rule.toString()
-
Constructor Details
-
MultiRule
Creates a new scheduling rule that composes a set of nested rules.- Parameters:
nestedRules
- the nested rules for this compound rule.
-
-
Method Details
-
combine
Returns a scheduling rule that encompasses all provided rules. The resulting rule may or may not be an instance ofMultiRule
. If all provided rules arenull
then the result will benull
.- Parameters:
ruleArray
- An array of scheduling rules, some of which may benull
- Returns:
- a combined scheduling rule, or
null
- Since:
- 3.1
-
combine
Returns a scheduling rule that encompasses both provided rules. The resulting rule may or may not be an instance ofMultiRule
. If both provided rules arenull
then the result will benull
.- Parameters:
rule1
- a scheduling rule, ornull
rule2
- another scheduling rule, ornull
- Returns:
- a combined scheduling rule, or
null
-
getChildren
Returns the child rules within this rule.- Returns:
- the child rules
-
contains
Description copied from interface:ISchedulingRule
Returns whether this scheduling rule completely contains another scheduling rule. Rules can only be nested within a thread if the inner rule is completely contained within the outer rule.Implementations of this method must obey the rules of a partial order relation on the set of all scheduling rules. In particular, implementations must be reflexive (a.contains(a) is always true), antisymmetric (a.contains(b) and b.contains(a) iff a.equals(b), and transitive (if a.contains(b) and b.contains(c), then a.contains(c)). Implementations of this method must return
false
when compared to a rule they know nothing about.- Specified by:
contains
in interfaceISchedulingRule
- Parameters:
rule
- the rule to check for containment- Returns:
true
if this rule contains the given rule, andfalse
otherwise.
-
isConflicting
Description copied from interface:ISchedulingRule
Returns whether this scheduling rule is compatible with another scheduling rule. Iftrue
is returned, then no job with this rule will be run at the same time as a job with the conflicting rule. Iffalse
is returned, then the job manager is free to run jobs with these rules at the same time.Implementations of this method must be reflexive, symmetric, and consistent, and must return
false
when compared to a rule they know nothing about.This method must return true if calling
ISchedulingRule.contains(ISchedulingRule)
on the same rule also returns true. This is required because it would otherwise allow two threads to be running concurrently with the same rule.- Specified by:
isConflicting
in interfaceISchedulingRule
- Parameters:
rule
- the rule to check for conflicts- Returns:
true
if the rule is conflicting, andfalse
otherwise.
-
toString
-