|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Predicate | Line # 26 | 52 | 24 | 57.8% |
0.57831323
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
(80) | |||
Result | |||
0.42168674
|
org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqSetTheoryScript1 org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqSetTheoryScript1 | 1 PASS | |
0.31325302
|
org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqLogicScript1 org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqLogicScript1 | 1 PASS | |
0.26506025
|
org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqLogicScript2 org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqLogicScript2 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology29 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology29 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology18 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology18 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology27 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology27 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.CalculateTruthDynamicThreeModelTest.testTautology44b org.qedeq.kernel.bo.logic.model.CalculateTruthDynamicThreeModelTest.testTautology44b | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology44 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology44 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.CalculateTruthDynamicThreeModelTest.testTautology44 org.qedeq.kernel.bo.logic.model.CalculateTruthDynamicThreeModelTest.testTautology44 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology42 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology42 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology30 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology30 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology32 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology32 | 1 PASS | |
0.21686748
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology40 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology40 | 1 PASS | |
0.20481928
|
org.qedeq.base.test.EachClassHasATestCase.testIfEveryClassIsTested org.qedeq.base.test.EachClassHasATestCase.testIfEveryClassIsTested | 3 FAIL | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology40 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology40 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology18 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology18 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology40 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology40 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology42 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology42 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology18 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology18 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology27 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology27 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology27 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology27 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology30 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology30 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology42 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology42 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology26 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology26 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology30 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology30 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology32 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology32 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology29 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology29 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology29 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology29 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology32 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology32 | 1 PASS | |
0.15662651
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology26 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology26 | 1 PASS | |
0.10843374
|
org.qedeq.kernel.bo.logic.model.CalculateTruthThreeModelTest.testTautology46 org.qedeq.kernel.bo.logic.model.CalculateTruthThreeModelTest.testTautology46 | 1 PASS | |
0.10843374
|
org.qedeq.kernel.bo.logic.model.CalculateTruthThreeModelTest.testTautology47 org.qedeq.kernel.bo.logic.model.CalculateTruthThreeModelTest.testTautology47 | 1 PASS | |
0.084337346
|
org.qedeq.kernel.bo.logic.model.CalculateTruthThreeModelTest.testTautology44 org.qedeq.kernel.bo.logic.model.CalculateTruthThreeModelTest.testTautology44 | 1 PASS | |
0.084337346
|
org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqSetTheoryScript2 org.qedeq.kernel.bo.service.heuristic.HeuristicCheckerPluginTest.testQedeqSetTheoryScript2 | 1 PASS | |
0.084337346
|
org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology45 org.qedeq.kernel.bo.logic.model.CalculateTruthTestCase.testTautology45 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology13 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology13 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology36 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology36 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology47 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology47 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology41 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology41 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology23 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology23 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.service.heuristic.DynamicHeuristicCheckerPluginTest.testQedeqSampleScript1 org.qedeq.kernel.bo.service.heuristic.DynamicHeuristicCheckerPluginTest.testQedeqSampleScript1 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology09 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology09 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology21 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology21 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology01 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology01 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology37 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology37 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology45 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology45 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology20 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology20 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology38 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology38 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology08 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology08 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology10 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology10 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology35 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology35 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology25 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology25 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology06 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology06 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology17 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology17 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology34 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology34 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology28 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology28 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology26 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology26 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology22 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology22 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology12 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology12 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology39 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology39 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology51 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology51 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology14 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology14 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology24 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology24 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology05 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology05 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology04 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology04 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology50 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology50 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology43 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology43 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology33 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology33 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology02 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology02 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology03 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology03 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology31 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology31 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology07 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology07 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology52 org.qedeq.kernel.bo.logic.model.DynamicInterpreterTest.testTautology52 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology15 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology15 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology16 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology16 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology46 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology46 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology11 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology11 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology53 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology53 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology52 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology52 | 1 PASS | |
0.060240965
|
org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology19 org.qedeq.kernel.bo.logic.model.DynamicDirectInterpreterTest.testTautology19 | 1 PASS | |
1 | /* This file is part of the project "Hilbert II" - http://www.qedeq.org | |
2 | * | |
3 | * Copyright 2000-2013, Michael Meyling <mime@qedeq.org>. | |
4 | * | |
5 | * "Hilbert II" is free software; you can redistribute | |
6 | * it and/or modify it under the terms of the GNU General Public | |
7 | * License as published by the Free Software Foundation; either | |
8 | * version 2 of the License, or (at your option) any later version. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | */ | |
15 | ||
16 | package org.qedeq.kernel.bo.logic.model; | |
17 | ||
18 | import org.qedeq.base.trace.Trace; | |
19 | import org.qedeq.base.utility.StringUtility; | |
20 | ||
21 | /** | |
22 | * One predicate for our model. | |
23 | * | |
24 | * @author Michael Meyling | |
25 | */ | |
26 | public abstract class Predicate { | |
27 | ||
28 | /** This class. */ | |
29 | private static final Class CLASS = Predicate.class; | |
30 | ||
31 | /** Minimum number of arguments this predicate has. */ | |
32 | private final int minimum; | |
33 | ||
34 | /** Maximum number of arguments this predicate has. */ | |
35 | private final int maximum; | |
36 | ||
37 | /** Display text. */ | |
38 | private final String display; | |
39 | ||
40 | /** Description for this predicate. */ | |
41 | private final String description; | |
42 | ||
43 | /** | |
44 | * Constructor. | |
45 | * | |
46 | * @param minimum Minimum number of arguments this predicate has. | |
47 | * @param maximum Maximum number of arguments this predicate has. | |
48 | * @param display Show this to represent the predicate within outputs. | |
49 | * @param description Description for this predicate. | |
50 | */ | |
51 | 980 | public Predicate(final int minimum, final int maximum, final String display, |
52 | final String description) { | |
53 | 980 | this.minimum = minimum; |
54 | 980 | this.maximum = maximum; |
55 | 980 | this.display = display; |
56 | 980 | this.description = description; |
57 | } | |
58 | ||
59 | /** | |
60 | * Construct negation of other predicate. | |
61 | * | |
62 | * @param predicate Negate this predicate. | |
63 | * @return Negation of predicate. | |
64 | */ | |
65 | 186 | public static Predicate not(final Predicate predicate) { |
66 | 186 | return new Predicate(predicate.getMinimumArgumentNumber(), |
67 | predicate.getMaximumArgumentNumber(), "!" + predicate.toString(), | |
68 | "!" + predicate.getDescription()) { | |
69 | 3842 | public boolean calculate(final Entity[] entities) { |
70 | 3842 | final String method = "not.calculate(Entity[])"; |
71 | 3842 | if (Trace.isDebugEnabled(CLASS)) { |
72 | 0 | Trace.param(CLASS, method, "toString", toString()); |
73 | 0 | Trace.param(CLASS, method, "entities", StringUtility.toString(entities)); |
74 | } | |
75 | 3842 | final boolean result = !predicate.calculate(entities); |
76 | 3842 | Trace.param(CLASS, method, "result ", result); |
77 | 3842 | return result; |
78 | } | |
79 | }; | |
80 | } | |
81 | ||
82 | /** | |
83 | * Construct conjunction of two predicates. | |
84 | * | |
85 | * @param op1 First predicate. | |
86 | * @param op2 Second predicate. | |
87 | * @return Conjunction of two predicates. | |
88 | */ | |
89 | 0 | public static Predicate and(final Predicate op1, final Predicate op2) { |
90 | 0 | if (op1.getMinimumArgumentNumber() > op2.getMaximumArgumentNumber() |
91 | || op1.getMaximumArgumentNumber() < op2.getMinimumArgumentNumber()) { | |
92 | 0 | throw new IllegalArgumentException("Predicates can not be combined " + op1 + " and " |
93 | + op2); | |
94 | } | |
95 | 0 | return new Predicate(Math.max(op1.getMinimumArgumentNumber(), |
96 | op2.getMinimumArgumentNumber()), Math.min(op1.getMaximumArgumentNumber(), | |
97 | op2.getMaximumArgumentNumber()), op1.toString() + " and " + op2.toString(), | |
98 | op1.getDescription() + " and " + op2.getDescription()) { | |
99 | 0 | public boolean calculate(final Entity[] entities) { |
100 | 0 | final String method = "and.calculate(Entity[])"; |
101 | 0 | if (Trace.isDebugEnabled(CLASS)) { |
102 | 0 | Trace.param(CLASS, method, "toString", toString()); |
103 | 0 | Trace.param(CLASS, method, "entities", StringUtility.toString(entities)); |
104 | } | |
105 | 0 | boolean result = op1.calculate(entities) && op2.calculate(entities); |
106 | 0 | Trace.param(CLASS, method, "result ", result); |
107 | 0 | return result; |
108 | } | |
109 | }; | |
110 | } | |
111 | ||
112 | /** | |
113 | * Construct disjunction of two predicates. | |
114 | * | |
115 | * @param op1 First predicate. | |
116 | * @param op2 Second predicate. | |
117 | * @return Disjunction of two predicates. | |
118 | */ | |
119 | 51 | public static Predicate or(final Predicate op1, final Predicate op2) { |
120 | 51 | if (op1.getMinimumArgumentNumber() > op2.getMaximumArgumentNumber() |
121 | || op1.getMaximumArgumentNumber() < op2.getMinimumArgumentNumber()) { | |
122 | 0 | throw new IllegalArgumentException("Predicates can not be combined " + op1 + " and " |
123 | + op2); | |
124 | } | |
125 | 51 | return new Predicate(Math.max(op1.getMinimumArgumentNumber(), |
126 | op2.getMinimumArgumentNumber()), Math.min(op1.getMaximumArgumentNumber(), | |
127 | op2.getMaximumArgumentNumber()), op1.toString() + " or " + op2.toString(), | |
128 | op1.getDescription() + " or " + op2.getDescription()) { | |
129 | 717 | public boolean calculate(final Entity[] entities) { |
130 | 717 | final String method = "or.calculate(Entity[])"; |
131 | 717 | if (Trace.isDebugEnabled(CLASS)) { |
132 | 0 | Trace.param(CLASS, method, "toString", toString()); |
133 | 0 | Trace.param(CLASS, method, "entities", StringUtility.toString(entities)); |
134 | } | |
135 | 717 | if (Trace.isDebugEnabled(CLASS)) { |
136 | 0 | Trace.param(CLASS, method, "toString", toString()); |
137 | 0 | Trace.param(CLASS, method, "entities", StringUtility.toString(entities)); |
138 | } | |
139 | 717 | boolean result = op1.calculate(entities) || op2.calculate(entities); |
140 | 717 | Trace.param(CLASS, method, "result ", result); |
141 | 717 | return result; |
142 | } | |
143 | }; | |
144 | } | |
145 | ||
146 | /** | |
147 | * Construct identifying predicate. | |
148 | * | |
149 | * @param entity Check if all entities are equal to this. | |
150 | * @return Predicate to check for this entity. | |
151 | */ | |
152 | 0 | public static Predicate isEntity(final Entity entity) { |
153 | 0 | return new Predicate(1, 99, "=" + entity, "= " + entity.getDescription()) { |
154 | 147523 | public boolean calculate(final Entity[] entities) { |
155 | 147523 | final String method = "isEntity.calculate(Entity[])"; |
156 | 147523 | if (Trace.isDebugEnabled(CLASS)) { |
157 | 0 | Trace.param(CLASS, method, "toString", toString()); |
158 | 0 | Trace.param(CLASS, method, "entities", StringUtility.toString(entities)); |
159 | } | |
160 | 147523 | if (Trace.isDebugEnabled(CLASS)) { |
161 | 0 | Trace.param(CLASS, method, "toString", toString()); |
162 | 0 | Trace.param(CLASS, method, "entities", StringUtility.toString(entities)); |
163 | } | |
164 | 147523 | boolean result = true; |
165 | 327728 | for (int i = 0; i < entities.length; i++) { |
166 | 180205 | result &= entity.getValue() == entities[i].getValue(); |
167 | } | |
168 | 147523 | Trace.param(CLASS, method, "result ", result); |
169 | 147523 | return result; |
170 | } | |
171 | }; | |
172 | } | |
173 | ||
174 | /** | |
175 | * Get minimum number of arguments this predicate has. | |
176 | * | |
177 | * @return Minimum number of arguments for this predicate. | |
178 | */ | |
179 | 390 | public int getMinimumArgumentNumber() { |
180 | 390 | return minimum; |
181 | } | |
182 | ||
183 | /** | |
184 | * Get maximum number of arguments this predicate has. | |
185 | * | |
186 | * @return Maximum umber of arguments for this predicate. | |
187 | */ | |
188 | 390 | public int getMaximumArgumentNumber() { |
189 | 390 | return maximum; |
190 | } | |
191 | ||
192 | /** | |
193 | * Get display text. | |
194 | * | |
195 | * @return Representation of this predicate for textual output. | |
196 | */ | |
197 | 288 | public String toString() { |
198 | 288 | return display; |
199 | } | |
200 | ||
201 | /** | |
202 | * Get description. | |
203 | * | |
204 | * @return Description of this predicate. | |
205 | */ | |
206 | 288 | public String getDescription() { |
207 | 288 | return description; |
208 | } | |
209 | ||
210 | /** | |
211 | * Calculate truth value. | |
212 | * | |
213 | * @param entities Calculate predicate for this entities. | |
214 | * @return Truth value. | |
215 | */ | |
216 | public abstract boolean calculate(Entity[] entities); | |
217 | ||
218 | } |
|