[jboss-svn-commits] JBL Code SVN: r19521 - in labs/jbossrules/trunk/drools-analytics/src: main/java/org/drools/verifier and 29 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Apr 11 08:06:12 EDT 2008


Author: Rikkola
Date: 2008-04-11 08:06:11 -0400 (Fri, 11 Apr 2008)
New Revision: 19521

Added:
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Analyzer.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/FindMissingNumber.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PackageDescrFlattener.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PatternSolver.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleLoader.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleSolver.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solver.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solvers.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccessorDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccumulateDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsClass.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsCollectDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponent.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponentType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsEvalDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFieldAccessDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFromDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFunctionCallDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsMethodAccessDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsPredicateDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsRule.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Consequence.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Constraint.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Field.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/FieldClassLink.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/InlineEvalDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/LiteralRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/OperatorDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Pattern.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/PatternPossibility.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Possibility.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/QualifiedIdentifierRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Restriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturValueFieldDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturnValueRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePackage.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePossibility.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/TextConsequence.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Variable.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/VariableRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsData.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsDataMaps.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResult.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultFactory.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultNormal.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/DataTree.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/ReportModeller.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessage.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessageBase.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsRangeCheckMessage.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Cause.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/CauseType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Gap.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Incompatibility.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MessageType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingRange.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Opposites.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/PartialRedundancy.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Redundancy.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RedundancyType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Severity.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Subsumption.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/AnalyticsMessagesVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportModeller.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportModeller.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/UrlFactory.java
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/Consequence.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/equivalence/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incompatibility/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/missingEquality/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/opposites/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/report/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/reports/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyticsTestStandalone.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyzerTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/ConsequenceTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/FindMissingNumberTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/PatternSolverTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckCleanTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDatesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDoublesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckIntegersTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SolversTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SubsumptantPossibilitiesRuleTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/TestBase.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentPatternsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/MissingEqualityTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/PatternOrderTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/RestrictionOrderTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/NotesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/ConsequenceTest.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc2.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc3.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDates.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDoubles.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForInts.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForVariables.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Overlap.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/missingEquality/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/optimisation/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/redundancy/
Removed:
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccessorDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccumulateDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsClass.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsCollectDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponent.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponentType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsEvalDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFieldAccessDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFromDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFunctionCallDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsMethodAccessDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsPredicateDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsRule.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Consequence.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Constraint.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Field.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/FieldClassLink.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/InlineEvalDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/LiteralRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/OperatorDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Pattern.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/PatternPossibility.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Possibility.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/QualifiedIdentifierRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Restriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturValueFieldDescr.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturnValueRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePackage.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePossibility.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/TextConsequence.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Variable.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/VariableRestriction.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsData.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsDataMaps.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResult.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultFactory.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultNormal.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/DataTree.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessage.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessageBase.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsRangeCheckMessage.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Cause.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/CauseType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Gap.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MessageType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingRange.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/PartialRedundancy.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Redundancy.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RedundancyType.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Severity.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Subsumption.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/AnalyticsMessagesVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportModeller.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportModeller.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportVisitor.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/UrlFactory.java
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/Consequence.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/equivalence/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/missingEquality/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/report/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/reports/
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentPatternsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/MissingEqualityTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/PatternOrderTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/RestrictionOrderTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/NotesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/ConsequenceTest.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc2.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc3.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDates.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDoubles.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForInts.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForVariables.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Overlap.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/missingEquality/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/optimisation/
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/redundancy/
Modified:
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/equivalence/Rules.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/Patterns.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/Restrictions.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incompatibility/Restrictions.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/PatternOrder.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Patterns.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Variables.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Consequence.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Notes.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Patterns.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Rules.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/reports/RangeCheckReports.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl
   labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/PatternsTest.drl
   labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/RestrictionsTest.drl
Log:
JBRULES-1555: Changing the analytics name to verifier

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Analyzer.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Analyzer.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Analyzer.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Analyzer.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,132 @@
+package org.drools.verifier;
+
+import java.util.Collection;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.rule.Package;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.ReportModeller;
+import org.drools.verifier.report.html.ComponentsReportModeller;
+
+/**
+ * This is the main user class for verifier.
+ * This will use rules to validate rules, caching the "knowledge base" of verifier rules.
+ *
+ * @author Toni Rikkola
+ */
+public class Analyzer {
+
+	static RuleBase verifierKnowledgeBase;
+
+
+	private AnalyticsResult result = AnalyticsResultFactory
+			.createAnalyticsResult();
+
+	public void addPackageDescr(PackageDescr descr) {
+		try {
+
+			PackageDescrFlattener ruleFlattener = new PackageDescrFlattener();
+
+			ruleFlattener.addPackageDescrToData(descr, result
+					.getAnalyticsData());
+
+		} catch (Throwable t) {
+			t.printStackTrace();
+		}
+	}
+
+
+	/**
+	 * As the analyzer uses rules itself, this will reload the knowledge base.
+	 * @throws Exception
+	 */
+	public synchronized void reloadAnalysisKnowledgeBase() throws Exception {
+		verifierKnowledgeBase = createRuleBase();
+	}
+
+	/**
+	 * This will run the verifier.
+	 */
+	public void fireAnalysis() {
+		try {
+
+			if (this.verifierKnowledgeBase == null) {
+				synchronized (this.getClass()) {
+					verifierKnowledgeBase = createRuleBase();
+				}
+			}
+
+			WorkingMemory workingMemory = verifierKnowledgeBase.newStatefulSession();
+
+			Collection<? extends Object> c = result.getAnalyticsData().getAll();
+
+			for (Object o : c) {
+				workingMemory.insert(o);
+			}
+
+			// Object that returns the results.
+			workingMemory.setGlobal("result", result);
+			workingMemory.fireAllRules();
+
+		} catch (Throwable t) {
+			t.printStackTrace();
+		}
+	}
+
+	/**
+	 * Returns the verifier results as plain text.
+	 *
+	 * @return Analysis results as plain text.
+	 */
+	public String getResultAsPlainText() {
+		return ReportModeller.writePlainText(result);
+	}
+
+	/**
+	 * Returns the verifier results as XML.
+	 *
+	 * @return Analysis results as XML
+	 */
+	public String getResultAsXML() {
+		return ReportModeller.writeXML(result);
+	}
+
+	/**
+	 * Returns the verifier results as HTML.
+	 *
+	 * @return Analysis results as HTML
+	 */
+	public void writeComponentsHTML(String path) {
+		ComponentsReportModeller.writeHTML(path, result);
+	}
+
+	/**
+	 * Returns the verifier results as <code>AnalysisResult</code> object.
+	 *
+	 * @return Analysis result
+	 */
+	public AnalyticsResult getResult() {
+		return result;
+	}
+
+	private static RuleBase createRuleBase() throws Exception {
+
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+
+		Collection<Package> packages = RuleLoader.loadPackages();
+		for (Package pkg : packages) {
+			try {
+				ruleBase.addPackage(pkg);
+			} catch (Exception e) {
+				throw new Exception("Adding package " + pkg.getName()
+						+ " caused an error.", e);
+			}
+		}
+
+		return ruleBase;
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/FindMissingNumber.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/FindMissingNumber.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/FindMissingNumber.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/FindMissingNumber.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,160 @@
+package org.drools.verifier;
+
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.LiteralRestriction;
+
+public class FindMissingNumber {
+
+	public static final int MIN_NUMBER_OF_RESTRICTIONS = 4;
+
+	/**
+	 * Test if the values in constraints are in pattern.
+	 * 
+	 * @param restrictions
+	 * @return false if can't find a pattern or constraints list is null or size
+	 *         of the list is under 3.
+	 */
+	public static Number testForPattern(
+			Collection<LiteralRestriction> restrictions) {
+
+		if (restrictions == null
+				|| restrictions.size() < MIN_NUMBER_OF_RESTRICTIONS) {
+			return null;
+		}
+
+		BigDecimal[] numbers = new BigDecimal[restrictions.size()];
+
+		int index = 0;
+		for (LiteralRestriction restriction : restrictions) {
+			if (restriction.getValueType() == Field.FieldType.DOUBLE) {
+				numbers[index++] = BigDecimal.valueOf(restriction
+						.getDoubleValue());
+			} else if (restriction.getValueType() == Field.FieldType.INT) {
+				numbers[index++] = BigDecimal
+						.valueOf(restriction.getIntValue());
+			}
+		}
+
+		Arrays.sort(numbers);
+
+		Number missingNumber = findSumPattern(numbers);
+		if (missingNumber != null) {
+			return missingNumber;
+		} else {
+			missingNumber = findMultiplicationPattern(numbers);
+			if (missingNumber != null) {
+				return missingNumber;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * Looks for sum pattern, on each step x is added or removed. -x is the same
+	 * as +(-x) so this works for both.
+	 * 
+	 * @param numbers
+	 * @return true if pattern is found.
+	 */
+	protected static Number findSumPattern(BigDecimal[] numbers) {
+		if (numbers == null || numbers.length < MIN_NUMBER_OF_RESTRICTIONS) {
+			return null;
+		}
+		BigDecimal gap = null;
+		Number missingNumber = null;
+
+		BigDecimal a = numbers[0];
+		BigDecimal b = numbers[1];
+		BigDecimal c = numbers[2];
+		BigDecimal d = numbers[3];
+
+		// Uses first four numbers to check if there is a pattern and to
+		// calculate the gap between them. One missing value is allowed.
+		if (b.subtract(a).equals(c.subtract(b))) {
+			gap = b.subtract(a);
+		} else if (c.subtract(b).equals(d.subtract(c))) {
+			gap = c.subtract(b);
+		} else if (b.subtract(a).equals(d.subtract(c))) {
+			gap = b.subtract(a);
+		} else {
+			// No pattern found.
+			return null;
+		}
+
+		for (int i = 0; i < (numbers.length - 1); i++) {
+			BigDecimal first = numbers[i];
+			BigDecimal second = numbers[i + 1];
+
+			if (missingNumber == null && !second.subtract(first).equals(gap)) {
+				missingNumber = second.subtract(gap);
+			} else if (!second.subtract(first).equals(gap)
+					&& missingNumber != null) {
+				// Happends if there is no pattern found, or more than 1
+				// missing number.
+				return null;
+			}
+		}
+
+		return missingNumber;
+	}
+
+	/**
+	 * Looks for multiplication pattern, on each step x multiplied or divided.
+	 * *x is the same as *(1/x) so this works for both.
+	 * 
+	 * @param numbers
+	 * @return true if pattern is found.
+	 */
+	protected static Number findMultiplicationPattern(BigDecimal[] numbers) {
+		if (numbers == null || numbers.length < MIN_NUMBER_OF_RESTRICTIONS) {
+			return null;
+		}
+		try {
+
+			BigDecimal gap = null;
+			Number missingNumber = null;
+
+			BigDecimal a = numbers[0];
+			BigDecimal b = numbers[1];
+			BigDecimal c = numbers[2];
+			BigDecimal d = numbers[3];
+
+			// Uses first four numbers to check if there is a pattern and to
+			// calculate the gap between them. One missing value is allowed.
+			if (b.divide(a).equals(c.divide(b))) {
+				gap = b.divide(a);
+			} else if (c.divide(b).equals(d.divide(c))) {
+				gap = c.divide(b);
+			} else if (b.divide(a).equals(d.divide(c))) {
+				gap = b.divide(a);
+			} else {
+				// No pattern found.
+				return null;
+			}
+
+			BigDecimal first = null;
+			BigDecimal second = null;
+			for (int i = 0; i < (numbers.length - 1); i++) {
+				first = numbers[i];
+				second = numbers[i + 1];
+
+				if (missingNumber == null && !second.divide(first).equals(gap)) {
+					missingNumber = first.multiply(gap);
+				} else if (!second.divide(first).equals(gap)
+						&& missingNumber != null) {
+					// Happends if there is no pattern found, or more than 1
+					// missing number.
+					return null;
+				}
+			}
+			return missingNumber;
+		} catch (Exception e) {
+			return null;
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PackageDescrFlattener.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PackageDescrFlattener.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PackageDescrFlattener.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,736 @@
+package org.drools.verifier;
+
+import java.util.Collection;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.lang.descr.AccessorDescr;
+import org.drools.lang.descr.AccumulateDescr;
+import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.BaseDescr;
+import org.drools.lang.descr.CollectDescr;
+import org.drools.lang.descr.ConditionalElementDescr;
+import org.drools.lang.descr.DeclarativeInvokerDescr;
+import org.drools.lang.descr.EvalDescr;
+import org.drools.lang.descr.ExistsDescr;
+import org.drools.lang.descr.FieldAccessDescr;
+import org.drools.lang.descr.FieldBindingDescr;
+import org.drools.lang.descr.FieldConstraintDescr;
+import org.drools.lang.descr.ForallDescr;
+import org.drools.lang.descr.FromDescr;
+import org.drools.lang.descr.FunctionCallDescr;
+import org.drools.lang.descr.LiteralRestrictionDescr;
+import org.drools.lang.descr.MethodAccessDescr;
+import org.drools.lang.descr.NotDescr;
+import org.drools.lang.descr.OrDescr;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.lang.descr.PatternDescr;
+import org.drools.lang.descr.PatternSourceDescr;
+import org.drools.lang.descr.PredicateDescr;
+import org.drools.lang.descr.QualifiedIdentifierRestrictionDescr;
+import org.drools.lang.descr.RestrictionConnectiveDescr;
+import org.drools.lang.descr.ReturnValueRestrictionDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.lang.descr.VariableRestrictionDescr;
+import org.drools.verifier.components.AnalyticsAccessorDescr;
+import org.drools.verifier.components.AnalyticsAccumulateDescr;
+import org.drools.verifier.components.AnalyticsClass;
+import org.drools.verifier.components.AnalyticsCollectDescr;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.AnalyticsComponentType;
+import org.drools.verifier.components.AnalyticsEvalDescr;
+import org.drools.verifier.components.AnalyticsFieldAccessDescr;
+import org.drools.verifier.components.AnalyticsFromDescr;
+import org.drools.verifier.components.AnalyticsFunctionCallDescr;
+import org.drools.verifier.components.AnalyticsMethodAccessDescr;
+import org.drools.verifier.components.AnalyticsPredicateDescr;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.Consequence;
+import org.drools.verifier.components.Constraint;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.QualifiedIdentifierRestriction;
+import org.drools.verifier.components.ReturnValueRestriction;
+import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.components.TextConsequence;
+import org.drools.verifier.components.Variable;
+import org.drools.verifier.components.VariableRestriction;
+import org.drools.verifier.dao.AnalyticsData;
+
+/**
+ * @author Toni Rikkola
+ * 
+ */
+class PackageDescrFlattener {
+
+	private Solvers solvers = new Solvers();
+
+	private AnalyticsData data;
+
+	private RulePackage currentPackage = null;
+	private AnalyticsRule currentRule = null;
+	private Pattern currentPattern = null;
+	private Constraint currentConstraint = null;
+	private AnalyticsClass currentClass = null;
+	private Field currentField = null;
+
+	/**
+	 * Adds packageDescr to given AnalyticsData object
+	 * 
+	 * @param packageDescr
+	 *            PackageDescr that will be flattened.
+	 * @param data
+	 *            AnalyticsData where the flattened objects are added.
+	 */
+	public void addPackageDescrToData(PackageDescr packageDescr,
+			AnalyticsData data) {
+
+		this.data = data;
+
+		flatten(packageDescr);
+
+		formPossibilities();
+	}
+
+	private void flatten(Collection<?> descrs, AnalyticsComponent parent) {
+
+		int orderNumber = 0;
+
+		for (Object o : descrs) {
+			BaseDescr descr = (BaseDescr) o;
+			if (descr instanceof PackageDescr) {
+				flatten((PackageDescr) descr);
+			} else if (descr instanceof RuleDescr) {
+				flatten((RuleDescr) descr, parent);
+			} else if (descr instanceof PatternDescr) {
+				flatten((PatternDescr) descr, parent, orderNumber);
+			} else if (descr instanceof VariableRestrictionDescr) {
+				flatten((VariableRestrictionDescr) descr, parent, orderNumber);
+			} else if (descr instanceof FieldBindingDescr) {
+				flatten((FieldBindingDescr) descr, parent, orderNumber);
+			} else if (descr instanceof FieldConstraintDescr) {
+				flatten((FieldConstraintDescr) descr, parent, orderNumber);
+			} else if (descr instanceof RestrictionConnectiveDescr) {
+				flatten((RestrictionConnectiveDescr) descr, parent, orderNumber);
+			} else if (descr instanceof LiteralRestrictionDescr) {
+				flatten((LiteralRestrictionDescr) descr, parent, orderNumber);
+			} else if (descr instanceof ReturnValueRestrictionDescr) {
+				flatten((ReturnValueRestrictionDescr) descr, parent,
+						orderNumber);
+			} else if (descr instanceof QualifiedIdentifierRestrictionDescr) {
+				flatten((QualifiedIdentifierRestrictionDescr) descr, parent,
+						orderNumber);
+			} else if (descr instanceof FunctionCallDescr) {
+				flatten((FunctionCallDescr) descr, parent, orderNumber);
+			} else if (descr instanceof PredicateDescr) {
+				flatten((PredicateDescr) descr, parent, orderNumber);
+			} else if (descr instanceof AccessorDescr) {
+				flatten((AccessorDescr) descr, parent, orderNumber);
+			} else if (descr instanceof MethodAccessDescr) {
+				flatten((MethodAccessDescr) descr, parent, orderNumber);
+			} else if (descr instanceof FieldAccessDescr) {
+				flatten((FieldAccessDescr) descr, parent, orderNumber);
+			} else if (descr instanceof PatternSourceDescr) {
+				flatten((PatternSourceDescr) descr, parent);
+			} else if (descr instanceof ConditionalElementDescr) {
+				flatten((ConditionalElementDescr) descr, parent, orderNumber);
+			}
+
+			orderNumber++;
+		}
+	}
+
+	private AnalyticsComponent flatten(PatternSourceDescr descr,
+			AnalyticsComponent parent) {
+		if (descr instanceof AccumulateDescr) {
+			return flatten((AccumulateDescr) descr, parent);
+		} else if (descr instanceof CollectDescr) {
+			return flatten((CollectDescr) descr, parent);
+		} else if (descr instanceof FromDescr) {
+			return flatten((FromDescr) descr, parent);
+		}
+
+		return null;
+	}
+
+	private AnalyticsComponent flatten(DeclarativeInvokerDescr descr,
+			AnalyticsComponent parent) {
+		if (descr instanceof AccessorDescr) {
+			return flatten((AccessorDescr) descr, parent);
+		} else if (descr instanceof FieldAccessDescr) {
+			return flatten((FieldAccessDescr) descr, parent);
+		} else if (descr instanceof FunctionCallDescr) {
+			return flatten((FunctionCallDescr) descr, parent);
+		} else if (descr instanceof MethodAccessDescr) {
+			return flatten((MethodAccessDescr) descr, parent);
+		}
+
+		return null;
+	}
+
+	private void flatten(ConditionalElementDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+		if (descr instanceof AndDescr) {
+			flatten((AndDescr) descr, parent, orderNumber);
+		} else if (descr instanceof CollectDescr) {
+			flatten((CollectDescr) descr, parent, orderNumber);
+		} else if (descr instanceof EvalDescr) {
+			flatten((EvalDescr) descr, parent, orderNumber);
+		} else if (descr instanceof ExistsDescr) {
+			flatten((ExistsDescr) descr, parent);
+		} else if (descr instanceof ForallDescr) {
+			flatten((ForallDescr) descr, parent);
+		} else if (descr instanceof FromDescr) {
+			flatten((FromDescr) descr, parent);
+		} else if (descr instanceof NotDescr) {
+			flatten((NotDescr) descr, parent);
+		} else if (descr instanceof OrDescr) {
+			flatten((OrDescr) descr, parent, orderNumber);
+		}
+	}
+
+	private void flatten(ForallDescr descr, AnalyticsComponent parent) {
+		solvers.startForall();
+		flatten(descr.getDescrs(), parent);
+		solvers.endForall();
+	}
+
+	private void flatten(ExistsDescr descr, AnalyticsComponent parent) {
+		solvers.startExists();
+		flatten(descr.getDescrs(), parent);
+		solvers.endExists();
+	}
+
+	private void flatten(NotDescr descr, AnalyticsComponent parent) {
+		solvers.startNot();
+		flatten(descr.getDescrs(), parent);
+		solvers.endNot();
+	}
+
+	/**
+	 * End leaf
+	 * 
+	 * @param descr
+	 * @return
+	 */
+	private AnalyticsFunctionCallDescr flatten(FunctionCallDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+		AnalyticsFunctionCallDescr functionCall = new AnalyticsFunctionCallDescr();
+		functionCall.setName(descr.getName());
+		functionCall.setArguments(descr.getArguments());
+		functionCall.setOrderNumber(orderNumber);
+		functionCall.setParent(parent);
+
+		return functionCall;
+	}
+
+	/**
+	 * End leaf
+	 * 
+	 * @param descr
+	 * @return
+	 */
+	private AnalyticsPredicateDescr flatten(PredicateDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+
+		AnalyticsPredicateDescr predicate = new AnalyticsPredicateDescr();
+		predicate.setRuleName(currentRule.getRuleName());
+		predicate.setRuleId(currentRule.getId());
+		predicate.setContent(descr.getContent().toString());
+		predicate.setClassMethodName(descr.getClassMethodName());
+		predicate.setOrderNumber(orderNumber);
+		predicate.setParent(parent);
+
+		data.add(predicate);
+
+		return predicate;
+	}
+
+	/**
+	 * End leaf
+	 * 
+	 * @param descr
+	 * @return
+	 */
+	private AnalyticsEvalDescr flatten(EvalDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+
+		AnalyticsEvalDescr eval = new AnalyticsEvalDescr();
+		eval.setRuleId(currentRule.getId());
+		eval.setRuleName(currentRule.getRuleName());
+		eval.setContent(descr.getContent().toString());
+		eval.setClassMethodName(descr.getClassMethodName());
+		eval.setOrderNumber(orderNumber);
+		eval.setParent(parent);
+
+		data.add(eval);
+
+		return eval;
+	}
+
+	/**
+	 * End leaf
+	 * 
+	 * @param descr
+	 * @return
+	 */
+	private AnalyticsFromDescr flatten(FromDescr descr,
+			AnalyticsComponent parent) {
+		AnalyticsFromDescr from = new AnalyticsFromDescr();
+
+		AnalyticsComponent ds = flatten(descr.getDataSource(), from);
+		from.setDataSourceId(ds.getId());
+		from.setDataSourceType(ds.getComponentType());
+		from.setParent(parent);
+
+		return from;
+	}
+
+	private AnalyticsAccumulateDescr flatten(AccumulateDescr descr,
+			AnalyticsComponent parent) {
+		AnalyticsAccumulateDescr accumulate = new AnalyticsAccumulateDescr();
+
+		accumulate.setInputPatternId(flatten(descr.getInputPattern(),
+				accumulate, 0));
+		accumulate.setInitCode(descr.getInitCode());
+		accumulate.setActionCode(descr.getActionCode());
+		accumulate.setReverseCode(descr.getReverseCode());
+		accumulate.setResultCode(descr.getResultCode());
+
+		// XXX: Array seems to be always null.
+		// accumulate.setDeclarations(descr.getDeclarations());
+
+		accumulate.setClassName(descr.getClassName());
+		accumulate.setExternalFunction(descr.isExternalFunction());
+		accumulate.setFunctionIdentifier(descr.getFunctionIdentifier());
+		accumulate.setExpression(descr.getExpression());
+		accumulate.setParent(parent);
+
+		return accumulate;
+	}
+
+	private AnalyticsCollectDescr flatten(CollectDescr descr,
+			AnalyticsComponent parent) {
+		AnalyticsCollectDescr collect = new AnalyticsCollectDescr();
+		collect.setClassMethodName(descr.getClassMethodName());
+		collect
+				.setInsidePatternId(flatten(descr.getInputPattern(), collect, 0));
+		collect.setParent(parent);
+
+		return collect;
+	}
+
+	private AnalyticsAccessorDescr flatten(AccessorDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+		AnalyticsAccessorDescr accessor = new AnalyticsAccessorDescr();
+		accessor.setOrderNumber(orderNumber);
+		accessor.setParent(parent);
+		// TODO: I wonder what this descr does.
+		return accessor;
+	}
+
+	/**
+	 * End leaf
+	 * 
+	 * @param descr
+	 */
+	private AnalyticsMethodAccessDescr flatten(MethodAccessDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+		AnalyticsMethodAccessDescr accessor = new AnalyticsMethodAccessDescr();
+		accessor.setMethodName(descr.getMethodName());
+		accessor.setArguments(descr.getArguments());
+		accessor.setOrderNumber(orderNumber);
+		accessor.setParent(parent);
+
+		return accessor;
+	}
+
+	/**
+	 * End leaf
+	 * 
+	 * @param descr
+	 */
+	private AnalyticsFieldAccessDescr flatten(FieldAccessDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+		AnalyticsFieldAccessDescr accessor = new AnalyticsFieldAccessDescr();
+		accessor.setFieldName(descr.getFieldName());
+		accessor.setArgument(descr.getArgument());
+		accessor.setOrderNumber(orderNumber);
+		accessor.setParent(parent);
+
+		return accessor;
+	}
+
+	private void flatten(PackageDescr descr) {
+		RulePackage rulePackage = data.getRulePackageByName(descr.getName());
+
+		if (rulePackage == null) {
+			rulePackage = new RulePackage();
+
+			rulePackage.setName(descr.getName());
+			data.add(rulePackage);
+		}
+
+		currentPackage = rulePackage;
+
+		flatten(descr.getRules(), rulePackage);
+	}
+
+	private void flatten(RuleDescr descr, AnalyticsComponent parent) {
+
+		AnalyticsRule rule = new AnalyticsRule();
+		currentRule = rule;
+
+		rule.setRuleName(descr.getName());
+		rule.setRuleSalience(descr.getSalience());
+		rule.setConsequence(flattenConsequence(rule, descr.getConsequence()));
+		rule.setLineNumber(descr.getLine());
+		rule.setPackageId(currentPackage.getId());
+		rule.setParent(parent);
+
+		data.add(rule);
+
+		currentPackage.getRules().add(rule);
+
+		solvers.startRuleSolver(rule);
+		flatten(descr.getLhs(), rule, 0);
+		solvers.endRuleSolver();
+	}
+
+	/**
+	 * Creates verifier object from rule consequence. Currently only supports
+	 * text based consequences.
+	 * 
+	 * @param o
+	 *            Consequence object.
+	 * @return Analytics object that implements the Consequence interface.
+	 */
+	private Consequence flattenConsequence(AnalyticsComponent parent, Object o) {
+
+		TextConsequence consequence = new TextConsequence();
+
+		String text = o.toString();
+
+		/*
+		 * Strip all comments out of the code.
+		 */
+		StringBuffer buffer = new StringBuffer(text);
+		int commentIndex = buffer.indexOf("//");
+
+		while (commentIndex != -1) {
+			buffer = buffer.delete(commentIndex, buffer.indexOf("\n",
+					commentIndex));
+			commentIndex = buffer.indexOf("//");
+		}
+
+		text = buffer.toString();
+
+		/*
+		 * Strip all useless characters out of the code.
+		 */
+		text = text.replaceAll("\n", "");
+		text = text.replaceAll("\r", "");
+		text = text.replaceAll("\t", "");
+		text = text.replaceAll(" ", "");
+
+		consequence.setText(text);
+		consequence.setRuleId(currentRule.getId());
+		consequence.setRuleName(currentRule.getRuleName());
+		consequence.setParent(parent);
+
+		data.add(consequence);
+
+		return consequence;
+	}
+
+	private void flatten(OrDescr descr, AnalyticsComponent parent,
+			int orderNumber) {
+		OperatorDescr operatorDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		operatorDescr.setOrderNumber(orderNumber);
+		operatorDescr.setParent(parent);
+
+		data.add(operatorDescr);
+
+		solvers.startOperator(operatorDescr);
+		flatten(descr.getDescrs(), operatorDescr);
+		solvers.endOperator();
+	}
+
+	private void flatten(AndDescr descr, AnalyticsComponent parent,
+			int orderNumber) {
+		OperatorDescr operatorDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		operatorDescr.setOrderNumber(orderNumber);
+		operatorDescr.setParent(parent);
+
+		data.add(operatorDescr);
+
+		solvers.startOperator(operatorDescr);
+		flatten(descr.getDescrs(), operatorDescr);
+		solvers.endOperator();
+	}
+
+	private int flatten(PatternDescr descr, AnalyticsComponent parent,
+			int orderNumber) {
+
+		AnalyticsClass clazz = data.getClassByPackageAndName(descr
+				.getObjectType());
+		if (clazz == null) {
+			clazz = new AnalyticsClass();
+			clazz.setName(descr.getObjectType());
+			data.add(clazz);
+		}
+		currentClass = clazz;
+
+		Pattern pattern = new Pattern();
+		pattern.setRuleId(currentRule.getId());
+		pattern.setRuleName(currentRule.getRuleName());
+		pattern.setClassId(clazz.getId());
+		pattern.setName(clazz.getName());
+		pattern.setPatternNot(solvers.getRuleSolver().isChildNot());
+		pattern.setPatternExists(solvers.getRuleSolver().isExists());
+		pattern.setPatternForall(solvers.getRuleSolver().isForall());
+		pattern.setOrderNumber(orderNumber);
+		pattern.setParent(parent);
+
+		data.add(pattern);
+		currentPattern = pattern;
+
+		if (descr.getIdentifier() != null) {
+			Variable variable = new Variable();
+			variable.setRuleId(currentRule.getId());
+			variable.setRuleName(currentRule.getRuleName());
+			variable.setName(descr.getIdentifier());
+
+			variable.setObjectType(AnalyticsComponentType.CLASS);
+			variable.setObjectId(clazz.getId());
+			variable.setObjectName(descr.getObjectType());
+
+			data.add(variable);
+		}
+
+		// flatten source.
+		if (descr.getSource() != null) {
+			AnalyticsComponent source = flatten(descr.getSource(), pattern);
+			pattern.setSourceId(source.getId());
+			pattern.setSourceType(source.getComponentType());
+		} else {
+			pattern.setSourceId(0);
+			pattern.setSourceType(AnalyticsComponentType.NOTHING);
+		}
+		solvers.startPatternSolver(pattern);
+		flatten(descr.getConstraint(), pattern, 0);
+		solvers.endPatternSolver();
+
+		return pattern.getId();
+	}
+
+	private void flatten(FieldConstraintDescr descr, AnalyticsComponent parent,
+			int orderNumber) {
+
+		Field field = data.getFieldByClassAndFieldName(currentClass.getName(),
+				descr.getFieldName());
+		if (field == null) {
+			field = createField(descr.getFieldName(), descr.getLine(),
+					currentClass.getId(), currentClass.getName());
+			data.add(field);
+		}
+		currentField = field;
+
+		Constraint constraint = new Constraint();
+
+		constraint.setRuleId(currentRule.getId());
+		constraint.setFieldId(currentField.getId());
+		constraint.setFieldName(currentField.getName());
+		constraint.setPatternId(currentPattern.getId());
+		constraint.setPatternIsNot(currentPattern.isPatternNot());
+		constraint.setFieldId(field.getId());
+		constraint.setOrderNumber(orderNumber);
+		constraint.setParent(parent);
+
+		data.add(constraint);
+
+		currentConstraint = constraint;
+
+		flatten(descr.getRestriction(), constraint, 0);
+	}
+
+	private void flatten(RestrictionConnectiveDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+		// TODO: check.
+		flatten(descr.getRestrictions(), parent);
+	}
+
+	/**
+	 * End
+	 * 
+	 * @param descr
+	 */
+	private void flatten(FieldBindingDescr descr, AnalyticsComponent parent,
+			int orderNumber) {
+
+		Variable variable = new Variable();
+		variable.setRuleId(currentRule.getId());
+		variable.setRuleName(currentRule.getRuleName());
+		variable.setName(descr.getIdentifier());
+		variable.setOrderNumber(orderNumber);
+		variable.setParent(parent);
+
+		variable.setObjectType(AnalyticsComponentType.FIELD);
+
+		data.add(variable);
+	}
+
+	/**
+	 * End
+	 * 
+	 * Foo( bar == $bar )<br>
+	 * $bar is a VariableRestrictionDescr
+	 * 
+	 * @param descr
+	 */
+	private void flatten(VariableRestrictionDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+
+		Variable variable = data.getVariableByRuleAndVariableName(currentRule
+				.getRuleName(), descr.getIdentifier());
+		VariableRestriction restriction = new VariableRestriction();
+
+		restriction.setRuleId(currentRule.getId());
+		restriction.setRuleName(currentRule.getRuleName());
+		restriction.setPatternId(currentPattern.getId());
+		restriction.setPatternIsNot(currentPattern.isPatternNot());
+		restriction.setConstraintId(currentConstraint.getId());
+		restriction.setFieldId(currentConstraint.getFieldId());
+		restriction.setOperator(Operator.determineOperator(
+				descr.getEvaluator(), descr.isNegated()));
+		restriction.setVariable(variable);
+		restriction.setOrderNumber(orderNumber);
+		restriction.setParent(parent);
+
+		// Set field value, if it is unset.
+		currentField.setFieldType(Field.FieldType.VARIABLE);
+
+		data.add(restriction);
+		solvers.addRestriction(restriction);
+	}
+
+	/**
+	 * End
+	 * 
+	 * @param descr
+	 */
+	private void flatten(ReturnValueRestrictionDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+
+		ReturnValueRestriction restriction = new ReturnValueRestriction();
+
+		restriction.setRuleId(currentRule.getId());
+		restriction.setRuleName(currentRule.getRuleName());
+		restriction.setPatternId(currentPattern.getId());
+		restriction.setPatternIsNot(currentPattern.isPatternNot());
+		restriction.setConstraintId(currentConstraint.getId());
+		restriction.setFieldId(currentConstraint.getFieldId());
+		restriction.setOperator(Operator.determineOperator(
+				descr.getEvaluator(), descr.isNegated()));
+		restriction.setClassMethodName(descr.getClassMethodName());
+		restriction.setContent(descr.getContent());
+		restriction.setDeclarations(descr.getDeclarations());
+		restriction.setOrderNumber(orderNumber);
+		restriction.setParent(parent);
+
+		data.add(restriction);
+		solvers.addRestriction(restriction);
+
+	}
+
+	/**
+	 * End
+	 * 
+	 * @param descr
+	 */
+	private void flatten(LiteralRestrictionDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+
+		LiteralRestriction restriction = new LiteralRestriction();
+
+		restriction.setRuleId(currentRule.getId());
+		restriction.setRuleName(currentRule.getRuleName());
+		restriction.setRuleId(currentRule.getId());
+		restriction.setPatternId(currentPattern.getId());
+		restriction.setPatternIsNot(currentPattern.isPatternNot());
+		restriction.setConstraintId(currentConstraint.getId());
+		restriction.setFieldId(currentConstraint.getFieldId());
+		restriction.setOperator(Operator.determineOperator(
+				descr.getEvaluator(), descr.isNegated()));
+		restriction.setValue(descr.getText());
+		restriction.setOrderNumber(orderNumber);
+		restriction.setParent(parent);
+
+		// Set field value, if it is unset.
+		currentField.setFieldType(restriction.getValueType());
+
+		data.add(restriction);
+		solvers.addRestriction(restriction);
+	}
+
+	/**
+	 * End
+	 * 
+	 * @param descr
+	 */
+	private void flatten(QualifiedIdentifierRestrictionDescr descr,
+			AnalyticsComponent parent, int orderNumber) {
+
+		String text = descr.getText();
+		Variable variable = data.getVariableByRuleAndVariableName(currentRule
+				.getRuleName(), text.substring(0, text.indexOf(".")));
+
+		QualifiedIdentifierRestriction restriction = new QualifiedIdentifierRestriction();
+
+		restriction.setRuleId(currentRule.getId());
+		restriction.setPatternId(currentPattern.getId());
+		restriction.setPatternIsNot(currentPattern.isPatternNot());
+		restriction.setConstraintId(currentConstraint.getId());
+		restriction.setFieldId(currentConstraint.getFieldId());
+		restriction.setOperator(Operator.determineOperator(
+				descr.getEvaluator(), descr.isNegated()));
+		restriction.setVariableId(variable.getId());
+		restriction.setVariableName(text.substring(0, text.indexOf(".")));
+		restriction.setVariablePath(text.substring(text.indexOf(".")));
+		restriction.setOrderNumber(orderNumber);
+		restriction.setParent(parent);
+
+		// Set field value, if it is unset.
+		currentField.setFieldType(Field.FieldType.VARIABLE);
+
+		variable.setObjectType(AnalyticsComponentType.FIELD);
+
+		data.add(restriction);
+		solvers.addRestriction(restriction);
+	}
+
+	private Field createField(String fieldName, int line, int classId,
+			String className) {
+		Field field = new Field();
+		field.setClassId(classId);
+		field.setClassName(className);
+		field.setName(fieldName);
+		field.setLineNumber(line);
+
+		currentClass.getFields().add(field);
+		return field;
+	}
+
+	private void formPossibilities() {
+
+		for (PatternPossibility possibility : solvers.getPatternPossibilities()) {
+			data.add(possibility);
+		}
+		for (RulePossibility possibility : solvers.getRulePossibilities()) {
+			data.add(possibility);
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PatternSolver.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/PatternSolver.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PatternSolver.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/PatternSolver.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,23 @@
+package org.drools.verifier;
+
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+
+/**
+ * Takes a list of Constraints and makes possibilities from them.
+ * 
+ * @author Toni Rikkola
+ */
+class PatternSolver extends Solver {
+
+	private Pattern pattern;
+
+	public PatternSolver(Pattern pattern) {
+		super(OperatorDescr.Type.OR);
+		this.pattern = pattern;
+	}
+
+	public Pattern getPattern() {
+		return pattern;
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleLoader.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/RuleLoader.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleLoader.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleLoader.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,78 @@
+package org.drools.verifier;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Properties;
+
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.rule.Package;
+
+class RuleLoader {
+
+	public static Collection<Package> loadPackages() {
+
+		String[] fileNames = new String[] {
+				// Equivalence
+				"equivalence/Rules.drl",
+				// Incoherence
+				"incoherence/Patterns.drl",
+				"incoherence/Restrictions.drl",
+				// Missing equality
+				"missingEquality/MissingEquality.drl",
+				// Optimization
+				"optimisation/RestrictionOrder.drl",
+				"optimisation/PatternOrder.drl",
+				// Range checks
+				"rangeChecks/Dates.drl", "rangeChecks/Doubles.drl",
+				"rangeChecks/Integers.drl",
+				"rangeChecks/Patterns.drl",
+				"rangeChecks/Variables.drl",
+				"rangeChecks/Clean.drl",
+				// Redundancy
+				"redundancy/Restrictions.drl", "redundancy/Notes.drl",
+				"redundancy/Consequence.drl", "redundancy/Patterns.drl",
+				"redundancy/Possibilities.drl", "redundancy/Rules.drl",
+				"redundancy/Warnings.drl", "reports/RangeCheckReports.drl",
+				// Missing consequence
+				"Consequence.drl", };
+
+		Collection<Package> packages = new ArrayList<Package>();
+
+		for (int i = 0; i < fileNames.length; i++) {
+			try {
+				InputStreamReader reader = new InputStreamReader(
+						RuleLoader.class.getResourceAsStream(fileNames[i]));
+				packages.add(loadPackage(reader));
+				reader.close();
+			} catch (DroolsParserException e) {
+				e.printStackTrace();
+			} catch (NullPointerException e) {
+				System.err.println("Error when opening file " + fileNames[i]
+						+ ".");
+				e.printStackTrace();
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
+
+		return packages;
+	}
+
+	private static Package loadPackage(InputStreamReader reader)
+			throws DroolsParserException, IOException {
+
+        Properties properties = new Properties();
+        properties.setProperty( "drools.dialect.java.compiler",
+                                "JANINO" );
+
+		PackageBuilder builder = new PackageBuilder(new PackageBuilderConfiguration( properties ));
+
+		builder.addPackageFromDrl(reader);
+
+		return builder.getPackage();
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleSolver.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/RuleSolver.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleSolver.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/RuleSolver.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,23 @@
+package org.drools.verifier;
+
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.OperatorDescr;
+
+/**
+ * Takes a list of Constraints and makes possibilities from them.
+ * 
+ * @author Toni Rikkola
+ */
+class RuleSolver extends Solver {
+
+	private AnalyticsRule rule;
+
+	public RuleSolver(AnalyticsRule rule) {
+		super(OperatorDescr.Type.OR);
+		this.rule = (AnalyticsRule) rule;
+	}
+
+	public AnalyticsRule getRule() {
+		return rule;
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solver.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Solver.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solver.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solver.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,146 @@
+package org.drools.verifier;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.OperatorDescr;
+
+
+
+/**
+ * Takes a list of Constraints and makes possibilities from them.
+ * 
+ * @author Toni Rikkola
+ */
+class Solver {
+
+	private List<Set<AnalyticsComponent>> possibilityLists = new ArrayList<Set<AnalyticsComponent>>();
+	private Solver subSolver = null;
+	private boolean isChildExists = false;
+	private boolean isChildForall = false;
+	private boolean isChildNot = false;
+
+	private OperatorDescr.Type type;
+
+	protected Solver(OperatorDescr.Type type) {
+		this.type = type;
+	}
+
+	public void add(AnalyticsComponent descr) {
+		if (subSolver != null) {
+			subSolver.add(descr);
+		} else if (descr instanceof OperatorDescr) {
+			OperatorDescr operatorDescr = (OperatorDescr) descr;
+			subSolver = new Solver(operatorDescr.getType());
+		} else {
+			if (type == OperatorDescr.Type.AND) {
+				if (possibilityLists.isEmpty()) {
+					possibilityLists.add(new HashSet<AnalyticsComponent>());
+				}
+				for (Set<AnalyticsComponent> set : possibilityLists) {
+					set.add(descr);
+				}
+			} else if (type == OperatorDescr.Type.OR) {
+				Set<AnalyticsComponent> set = new HashSet<AnalyticsComponent>();
+				set.add(descr);
+				possibilityLists.add(set);
+			}
+		}
+	}
+
+	/**
+	 * Ends subSolvers data collection.
+	 * 
+	 */
+	protected void end() {
+		if (subSolver != null && subSolver.subSolver == null) {
+			if (type == OperatorDescr.Type.AND) {
+				if (possibilityLists.isEmpty()) {
+					possibilityLists.add(new HashSet<AnalyticsComponent>());
+				}
+
+				List<Set<AnalyticsComponent>> newPossibilities = new ArrayList<Set<AnalyticsComponent>>();
+
+				List<Set<AnalyticsComponent>> sets = subSolver
+						.getPossibilityLists();
+				for (Set<AnalyticsComponent> possibilityList : possibilityLists) {
+
+					for (Set<AnalyticsComponent> set : sets) {
+						Set<AnalyticsComponent> newSet = new HashSet<AnalyticsComponent>();
+						newSet.addAll(possibilityList);
+						newSet.addAll(set);
+						newPossibilities.add(newSet);
+					}
+				}
+				possibilityLists = newPossibilities;
+
+			} else if (type == OperatorDescr.Type.OR) {
+
+				possibilityLists.addAll(subSolver.getPossibilityLists());
+
+			}
+
+			subSolver = null;
+
+		} else if (subSolver != null && subSolver.subSolver != null) {
+
+			subSolver.end();
+		}
+
+	}
+
+	public void setChildForall(boolean b) {
+		if (subSolver != null) {
+			subSolver.setChildForall(b);
+		} else {
+			isChildForall = b;
+		}
+	}
+
+	public void setChildExists(boolean b) {
+		if (subSolver != null) {
+			subSolver.setChildExists(b);
+		} else {
+			isChildExists = b;
+		}
+	}
+
+	public void setChildNot(boolean b) {
+		if (subSolver != null) {
+			subSolver.setChildNot(b);
+		} else {
+			isChildNot = b;
+		}
+	}
+
+	public boolean isForall() {
+		if (subSolver != null) {
+			return subSolver.isForall();
+		} else {
+			return isChildForall;
+		}
+	}
+
+	public boolean isExists() {
+		if (subSolver != null) {
+			return subSolver.isExists();
+		} else {
+			return isChildExists;
+		}
+	}
+
+	public boolean isChildNot() {
+		if (subSolver != null) {
+			return subSolver.isChildNot();
+		} else {
+			return isChildNot;
+		}
+	}
+
+	public List<Set<AnalyticsComponent>> getPossibilityLists() {
+		return possibilityLists;
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solvers.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Solvers.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solvers.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/Solvers.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,174 @@
+package org.drools.verifier;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.RulePossibility;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+ class Solvers {
+
+	private RuleSolver ruleSolver = null;
+	private PatternSolver patternSolver = null;
+
+	private List<PatternPossibility> patternPossibilities = new ArrayList<PatternPossibility>();
+	private List<RulePossibility> rulePossibilities = new ArrayList<RulePossibility>();
+
+	public void startRuleSolver(AnalyticsRule rule) {
+		ruleSolver = new RuleSolver(rule);
+	}
+
+	public void endRuleSolver() {
+		createRulePossibilities();
+		ruleSolver = null;
+	}
+
+	public void startPatternSolver(Pattern pattern) {
+		patternSolver = new PatternSolver(pattern);
+
+		patternSolver.getPattern().setPatternNot(ruleSolver.isChildNot());
+	}
+
+	public void endPatternSolver() {
+		createPatternPossibilities();
+		patternSolver = null;
+	}
+
+	public void startForall() {
+		if (patternSolver != null) {
+			patternSolver.setChildForall(true);
+		} else if (ruleSolver != null) {
+			ruleSolver.setChildForall(true);
+		}
+	}
+
+	public void endForall() {
+		if (patternSolver != null) {
+			patternSolver.setChildForall(false);
+		} else if (ruleSolver != null) {
+			ruleSolver.setChildForall(false);
+		}
+	}
+
+	public void startExists() {
+		if (patternSolver != null) {
+			patternSolver.setChildExists(true);
+		} else if (ruleSolver != null) {
+			ruleSolver.setChildExists(true);
+		}
+	}
+
+	public void endExists() {
+		if (patternSolver != null) {
+			patternSolver.setChildExists(false);
+		} else if (ruleSolver != null) {
+			ruleSolver.setChildExists(false);
+		}
+	}
+
+	public void startNot() {
+		if (patternSolver != null) {
+			patternSolver.setChildNot(true);
+		} else if (ruleSolver != null) {
+			ruleSolver.setChildNot(true);
+		}
+	}
+
+	public void endNot() {
+		if (patternSolver != null) {
+			patternSolver.setChildNot(false);
+		} else if (ruleSolver != null) {
+			ruleSolver.setChildNot(false);
+		}
+	}
+
+	public void startOperator(OperatorDescr operatorDescr) {
+		if (patternSolver != null) {
+			patternSolver.add(operatorDescr);
+		} else if (ruleSolver != null) {
+			ruleSolver.add(operatorDescr);
+		}
+	}
+
+	public void endOperator() {
+		if (patternSolver != null) {
+			patternSolver.end();
+		} else if (ruleSolver != null) {
+			ruleSolver.end();
+		}
+	}
+
+	public void addRestriction(Restriction restriction) {
+		patternSolver.add(restriction);
+	}
+
+	private void createPatternPossibilities() {
+		for (Set<AnalyticsComponent> list : patternSolver.getPossibilityLists()) {
+			PatternPossibility possibility = new PatternPossibility();
+
+			possibility.setRuleId(ruleSolver.getRule().getId());
+			possibility.setRuleName(ruleSolver.getRule().getRuleName());
+			possibility.setRuleId(ruleSolver.getRule().getId());
+			possibility.setPatternId(patternSolver.getPattern().getId());
+
+			for (AnalyticsComponent descr : list) {
+				possibility.add((Restriction) descr);
+			}
+
+			ruleSolver.add(possibility);
+			patternPossibilities.add(possibility);
+		}
+	}
+
+	private void createRulePossibilities() {
+		for (Set<AnalyticsComponent> list : ruleSolver.getPossibilityLists()) {
+			RulePossibility possibility = new RulePossibility();
+
+			possibility.setRuleId(ruleSolver.getRule().getId());
+			possibility.setRuleName(ruleSolver.getRule().getRuleName());
+			possibility.setRuleId(ruleSolver.getRule().getId());
+
+			for (AnalyticsComponent descr : list) {
+				PatternPossibility patternPossibility = (PatternPossibility) descr;
+				possibility.add(patternPossibility);
+			}
+
+			rulePossibilities.add(possibility);
+		}
+	}
+
+	public List<PatternPossibility> getPatternPossibilities() {
+		return patternPossibilities;
+	}
+
+	public void setPatternPossibilities(
+			List<PatternPossibility> patternPossibilities) {
+		this.patternPossibilities = patternPossibilities;
+	}
+
+	public List<RulePossibility> getRulePossibilities() {
+		return rulePossibilities;
+	}
+
+	public void setRulePossibilities(List<RulePossibility> rulePossibilities) {
+		this.rulePossibilities = rulePossibilities;
+	}
+
+	public PatternSolver getPatternSolver() {
+		return patternSolver;
+	}
+
+	public RuleSolver getRuleSolver() {
+		return ruleSolver;
+	}
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components)

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccessorDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsAccessorDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccessorDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,19 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsAccessorDescr extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	public AnalyticsAccessorDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.ACCESSOR;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccessorDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsAccessorDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccessorDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccessorDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,19 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsAccessorDescr extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	public AnalyticsAccessorDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.ACCESSOR;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccumulateDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsAccumulateDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccumulateDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,111 +0,0 @@
-package org.drools.analytics.components;
-
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsAccumulateDescr extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private int inputPatternId;
-	private String initCode;
-	private String actionCode;
-	private String reverseCode;
-	private String resultCode;
-	private String[] declarations;
-	private String className;
-	private boolean externalFunction = false;
-	private String functionIdentifier;
-	private String expression;
-
-	public AnalyticsAccumulateDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.ACCUMULATE;
-	}
-
-	public String getActionCode() {
-		return actionCode;
-	}
-
-	public void setActionCode(String actionCode) {
-		this.actionCode = actionCode;
-	}
-
-	public String getClassName() {
-		return className;
-	}
-
-	public void setClassName(String className) {
-		this.className = className;
-	}
-
-	public String[] getDeclarations() {
-		return declarations;
-	}
-
-	public void setDeclarations(String[] declarations) {
-		this.declarations = declarations;
-	}
-
-	public String getExpression() {
-		return expression;
-	}
-
-	public void setExpression(String expression) {
-		this.expression = expression;
-	}
-
-	public boolean isExternalFunction() {
-		return externalFunction;
-	}
-
-	public void setExternalFunction(boolean externalFunction) {
-		this.externalFunction = externalFunction;
-	}
-
-	public String getFunctionIdentifier() {
-		return functionIdentifier;
-	}
-
-	public void setFunctionIdentifier(String functionIdentifier) {
-		this.functionIdentifier = functionIdentifier;
-	}
-
-	public String getInitCode() {
-		return initCode;
-	}
-
-	public void setInitCode(String initCode) {
-		this.initCode = initCode;
-	}
-
-	public int getInputPatternId() {
-		return inputPatternId;
-	}
-
-	public void setInputPatternId(int inputPatternId) {
-		this.inputPatternId = inputPatternId;
-	}
-
-	public String getResultCode() {
-		return resultCode;
-	}
-
-	public void setResultCode(String resultCode) {
-		this.resultCode = resultCode;
-	}
-
-	public String getReverseCode() {
-		return reverseCode;
-	}
-
-	public void setReverseCode(String reverseCode) {
-		this.reverseCode = reverseCode;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccumulateDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsAccumulateDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccumulateDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsAccumulateDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,111 @@
+package org.drools.verifier.components;
+
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsAccumulateDescr extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private int inputPatternId;
+	private String initCode;
+	private String actionCode;
+	private String reverseCode;
+	private String resultCode;
+	private String[] declarations;
+	private String className;
+	private boolean externalFunction = false;
+	private String functionIdentifier;
+	private String expression;
+
+	public AnalyticsAccumulateDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.ACCUMULATE;
+	}
+
+	public String getActionCode() {
+		return actionCode;
+	}
+
+	public void setActionCode(String actionCode) {
+		this.actionCode = actionCode;
+	}
+
+	public String getClassName() {
+		return className;
+	}
+
+	public void setClassName(String className) {
+		this.className = className;
+	}
+
+	public String[] getDeclarations() {
+		return declarations;
+	}
+
+	public void setDeclarations(String[] declarations) {
+		this.declarations = declarations;
+	}
+
+	public String getExpression() {
+		return expression;
+	}
+
+	public void setExpression(String expression) {
+		this.expression = expression;
+	}
+
+	public boolean isExternalFunction() {
+		return externalFunction;
+	}
+
+	public void setExternalFunction(boolean externalFunction) {
+		this.externalFunction = externalFunction;
+	}
+
+	public String getFunctionIdentifier() {
+		return functionIdentifier;
+	}
+
+	public void setFunctionIdentifier(String functionIdentifier) {
+		this.functionIdentifier = functionIdentifier;
+	}
+
+	public String getInitCode() {
+		return initCode;
+	}
+
+	public void setInitCode(String initCode) {
+		this.initCode = initCode;
+	}
+
+	public int getInputPatternId() {
+		return inputPatternId;
+	}
+
+	public void setInputPatternId(int inputPatternId) {
+		this.inputPatternId = inputPatternId;
+	}
+
+	public String getResultCode() {
+		return resultCode;
+	}
+
+	public void setResultCode(String resultCode) {
+		this.resultCode = resultCode;
+	}
+
+	public String getReverseCode() {
+		return reverseCode;
+	}
+
+	public void setReverseCode(String reverseCode) {
+		this.reverseCode = reverseCode;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsClass.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsClass.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsClass.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,50 +0,0 @@
-package org.drools.analytics.components;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * @author Toni Rikkola
- * 
- */
-public class AnalyticsClass implements Serializable {
-	private static final long serialVersionUID = -783733402566313623L;
-
-	private static int index = 0;
-
-	private int id = index++;
-	private int offset =0;
-	
-	private String name;
-
-	private Set<Field> fields = new HashSet<Field>();
-
-	public String getName() {
-		return name;
-	}
-	
-	public int getOffset(){ 
-	    return offset + id % 2;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public int getId() {
-		return id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public Set<Field> getFields() {
-		return fields;
-	}
-
-	public void setFields(Set<Field> fields) {
-		this.fields = fields;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsClass.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsClass.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsClass.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsClass.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,50 @@
+package org.drools.verifier.components;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Toni Rikkola
+ * 
+ */
+public class AnalyticsClass implements Serializable {
+	private static final long serialVersionUID = -783733402566313623L;
+
+	private static int index = 0;
+
+	private int id = index++;
+	private int offset =0;
+	
+	private String name;
+
+	private Set<Field> fields = new HashSet<Field>();
+
+	public String getName() {
+		return name;
+	}
+	
+	public int getOffset(){ 
+	    return offset + id % 2;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public Set<Field> getFields() {
+		return fields;
+	}
+
+	public void setFields(Set<Field> fields) {
+		this.fields = fields;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsCollectDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsCollectDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsCollectDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,38 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsCollectDescr extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private int insidePatternId;
-	private String classMethodName;
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.COLLECT;
-	}
-
-	public int getInsidePatternId() {
-		return insidePatternId;
-	}
-
-	public void setInsidePatternId(int insidePatternId) {
-		this.insidePatternId = insidePatternId;
-	}
-
-	public String getClassMethodName() {
-		return classMethodName;
-	}
-
-	public void setClassMethodName(String classMethodName) {
-		this.classMethodName = classMethodName;
-	}
-
-	public AnalyticsCollectDescr() {
-		super(index++);
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsCollectDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsCollectDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsCollectDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsCollectDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,38 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsCollectDescr extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private int insidePatternId;
+	private String classMethodName;
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.COLLECT;
+	}
+
+	public int getInsidePatternId() {
+		return insidePatternId;
+	}
+
+	public void setInsidePatternId(int insidePatternId) {
+		this.insidePatternId = insidePatternId;
+	}
+
+	public String getClassMethodName() {
+		return classMethodName;
+	}
+
+	public void setClassMethodName(String classMethodName) {
+		this.classMethodName = classMethodName;
+	}
+
+	public AnalyticsCollectDescr() {
+		super(index++);
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponent.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponent.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponent.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,68 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public abstract class AnalyticsComponent implements
-		Comparable<AnalyticsComponent> {
-
-	protected String ruleName;
-	protected int ruleId;
-	protected int id;
-
-	protected AnalyticsComponent parent;
-	
-	// Order number of this instance under parent.
-	protected int orderNumber = 0; 
-
-	public abstract AnalyticsComponentType getComponentType();
-
-	public int compareTo(AnalyticsComponent o) {
-		if (id == o.getId()) {
-			return 0;
-		}
-
-		return (id > o.getId() ? 1 : -1);
-	}
-
-	public AnalyticsComponent(int id) {
-		this.id = id;
-	}
-
-	public int getId() {
-		return id;
-	}
-
-	public String getRuleName() {
-		return ruleName;
-	}
-
-	public void setRuleName(String ruleName) {
-		this.ruleName = ruleName;
-	}
-
-	public AnalyticsComponent getParent() {
-		return parent;
-	}
-
-	public void setParent(AnalyticsComponent parent) {
-		this.parent = parent;
-	}
-
-	public int getOrderNumber() {
-		return orderNumber;
-	}
-
-	public void setOrderNumber(int orderNumber) {
-		this.orderNumber = orderNumber;
-	}
-
-	public int getRuleId() {
-		return ruleId;
-	}
-
-	public void setRuleId(int ruleId) {
-		this.ruleId = ruleId;
-	}
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponent.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponent.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponent.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponent.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,68 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public abstract class AnalyticsComponent implements
+		Comparable<AnalyticsComponent> {
+
+	protected String ruleName;
+	protected int ruleId;
+	protected int id;
+
+	protected AnalyticsComponent parent;
+	
+	// Order number of this instance under parent.
+	protected int orderNumber = 0; 
+
+	public abstract AnalyticsComponentType getComponentType();
+
+	public int compareTo(AnalyticsComponent o) {
+		if (id == o.getId()) {
+			return 0;
+		}
+
+		return (id > o.getId() ? 1 : -1);
+	}
+
+	public AnalyticsComponent(int id) {
+		this.id = id;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public String getRuleName() {
+		return ruleName;
+	}
+
+	public void setRuleName(String ruleName) {
+		this.ruleName = ruleName;
+	}
+
+	public AnalyticsComponent getParent() {
+		return parent;
+	}
+
+	public void setParent(AnalyticsComponent parent) {
+		this.parent = parent;
+	}
+
+	public int getOrderNumber() {
+		return orderNumber;
+	}
+
+	public void setOrderNumber(int orderNumber) {
+		this.orderNumber = orderNumber;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponentType.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponentType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,37 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsComponentType{
-	public static final AnalyticsComponentType NOTHING = new AnalyticsComponentType(0);
-	public static final AnalyticsComponentType CLASS = new AnalyticsComponentType(1);
-	public static final AnalyticsComponentType FIELD = new AnalyticsComponentType(2);
-	public static final AnalyticsComponentType RULE = new AnalyticsComponentType(3);
-	public static final AnalyticsComponentType CONSTRAINT = new AnalyticsComponentType(4);
-	public static final AnalyticsComponentType VARIABLE = new AnalyticsComponentType(5);
-	public static final AnalyticsComponentType PATTERN = new AnalyticsComponentType(6);
-	public static final AnalyticsComponentType PATTERN_POSSIBILITY = new AnalyticsComponentType(7);
-	public static final AnalyticsComponentType RULE_POSSIBILITY = new AnalyticsComponentType(8);
-	public static final AnalyticsComponentType RESTRICTION =new AnalyticsComponentType(9);
-	public static final AnalyticsComponentType OPERATOR = new AnalyticsComponentType(10);
-	public static final AnalyticsComponentType FIELD_CLASS_LINK = new AnalyticsComponentType(11);
-	public static final AnalyticsComponentType COLLECT = new AnalyticsComponentType(12);
-	public static final AnalyticsComponentType ACCUMULATE = new AnalyticsComponentType(13);
-	public static final AnalyticsComponentType FROM = new AnalyticsComponentType(14);
-	public static final AnalyticsComponentType EVAL = new AnalyticsComponentType(15);
-	public static final AnalyticsComponentType PREDICATE = new AnalyticsComponentType(16);
-	public static final AnalyticsComponentType METHOD_ACCESSOR = new AnalyticsComponentType(17);
-	public static final AnalyticsComponentType FIELD_ACCESSOR = new AnalyticsComponentType(18);
-	public static final AnalyticsComponentType FUNCTION_CALL = new AnalyticsComponentType(19);
-	public static final AnalyticsComponentType ACCESSOR = new AnalyticsComponentType(20);
-	public static final AnalyticsComponentType RULE_PACKAGE = new AnalyticsComponentType(21);
-	public static final AnalyticsComponentType CONSEQUENCE = new AnalyticsComponentType(22);
-
-	private final int index;
-
-	private AnalyticsComponentType(int i) {
-		index = i;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponentType.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsComponentType.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponentType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsComponentType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,37 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsComponentType{
+	public static final AnalyticsComponentType NOTHING = new AnalyticsComponentType(0);
+	public static final AnalyticsComponentType CLASS = new AnalyticsComponentType(1);
+	public static final AnalyticsComponentType FIELD = new AnalyticsComponentType(2);
+	public static final AnalyticsComponentType RULE = new AnalyticsComponentType(3);
+	public static final AnalyticsComponentType CONSTRAINT = new AnalyticsComponentType(4);
+	public static final AnalyticsComponentType VARIABLE = new AnalyticsComponentType(5);
+	public static final AnalyticsComponentType PATTERN = new AnalyticsComponentType(6);
+	public static final AnalyticsComponentType PATTERN_POSSIBILITY = new AnalyticsComponentType(7);
+	public static final AnalyticsComponentType RULE_POSSIBILITY = new AnalyticsComponentType(8);
+	public static final AnalyticsComponentType RESTRICTION =new AnalyticsComponentType(9);
+	public static final AnalyticsComponentType OPERATOR = new AnalyticsComponentType(10);
+	public static final AnalyticsComponentType FIELD_CLASS_LINK = new AnalyticsComponentType(11);
+	public static final AnalyticsComponentType COLLECT = new AnalyticsComponentType(12);
+	public static final AnalyticsComponentType ACCUMULATE = new AnalyticsComponentType(13);
+	public static final AnalyticsComponentType FROM = new AnalyticsComponentType(14);
+	public static final AnalyticsComponentType EVAL = new AnalyticsComponentType(15);
+	public static final AnalyticsComponentType PREDICATE = new AnalyticsComponentType(16);
+	public static final AnalyticsComponentType METHOD_ACCESSOR = new AnalyticsComponentType(17);
+	public static final AnalyticsComponentType FIELD_ACCESSOR = new AnalyticsComponentType(18);
+	public static final AnalyticsComponentType FUNCTION_CALL = new AnalyticsComponentType(19);
+	public static final AnalyticsComponentType ACCESSOR = new AnalyticsComponentType(20);
+	public static final AnalyticsComponentType RULE_PACKAGE = new AnalyticsComponentType(21);
+	public static final AnalyticsComponentType CONSEQUENCE = new AnalyticsComponentType(22);
+
+	private final int index;
+
+	private AnalyticsComponentType(int i) {
+		index = i;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsEvalDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsEvalDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsEvalDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,50 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class AnalyticsEvalDescr extends AnalyticsComponent implements Cause {
-
-	private static int index = 0;
-
-	private String content;
-	private String classMethodName;
-
-	public AnalyticsEvalDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.EVAL;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.EVAL;
-	}
-
-	public String getClassMethodName() {
-		return classMethodName;
-	}
-
-	public void setClassMethodName(String classMethodName) {
-		this.classMethodName = classMethodName;
-	}
-
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-
-	@Override
-	public String toString() {
-		return "Eval, content: " + content;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsEvalDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsEvalDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsEvalDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsEvalDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,50 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class AnalyticsEvalDescr extends AnalyticsComponent implements Cause {
+
+	private static int index = 0;
+
+	private String content;
+	private String classMethodName;
+
+	public AnalyticsEvalDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.EVAL;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.EVAL;
+	}
+
+	public String getClassMethodName() {
+		return classMethodName;
+	}
+
+	public void setClassMethodName(String classMethodName) {
+		this.classMethodName = classMethodName;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	@Override
+	public String toString() {
+		return "Eval, content: " + content;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFieldAccessDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsFieldAccessDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFieldAccessDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,38 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsFieldAccessDescr extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private String fieldName;
-	private String argument;
-
-	public AnalyticsFieldAccessDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.FIELD_ACCESSOR;
-	}
-
-	public String getArgument() {
-		return argument;
-	}
-
-	public void setArgument(String argument) {
-		this.argument = argument;
-	}
-
-	public String getFieldName() {
-		return fieldName;
-	}
-
-	public void setFieldName(String fieldName) {
-		this.fieldName = fieldName;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFieldAccessDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsFieldAccessDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFieldAccessDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFieldAccessDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,38 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsFieldAccessDescr extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private String fieldName;
+	private String argument;
+
+	public AnalyticsFieldAccessDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.FIELD_ACCESSOR;
+	}
+
+	public String getArgument() {
+		return argument;
+	}
+
+	public void setArgument(String argument) {
+		this.argument = argument;
+	}
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFromDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsFromDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFromDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,38 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsFromDescr extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private AnalyticsComponentType dataSourceType;
-	private int dataSourceId;
-
-	public AnalyticsFromDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.FROM;
-	}
-
-	public int getDataSourceId() {
-		return dataSourceId;
-	}
-
-	public void setDataSourceId(int dataSourceId) {
-		this.dataSourceId = dataSourceId;
-	}
-
-	public AnalyticsComponentType getDataSourceType() {
-		return dataSourceType;
-	}
-
-	public void setDataSourceType(AnalyticsComponentType dataSourceType) {
-		this.dataSourceType = dataSourceType;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFromDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsFromDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFromDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFromDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,38 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsFromDescr extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private AnalyticsComponentType dataSourceType;
+	private int dataSourceId;
+
+	public AnalyticsFromDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.FROM;
+	}
+
+	public int getDataSourceId() {
+		return dataSourceId;
+	}
+
+	public void setDataSourceId(int dataSourceId) {
+		this.dataSourceId = dataSourceId;
+	}
+
+	public AnalyticsComponentType getDataSourceType() {
+		return dataSourceType;
+	}
+
+	public void setDataSourceType(AnalyticsComponentType dataSourceType) {
+		this.dataSourceType = dataSourceType;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFunctionCallDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsFunctionCallDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFunctionCallDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,38 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsFunctionCallDescr extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private String name;
-	private String arguments;
-
-	public AnalyticsFunctionCallDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.FUNCTION_CALL;
-	}
-
-	public String getArguments() {
-		return arguments;
-	}
-
-	public void setArguments(String arguments) {
-		this.arguments = arguments;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFunctionCallDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsFunctionCallDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFunctionCallDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsFunctionCallDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,38 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsFunctionCallDescr extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private String name;
+	private String arguments;
+
+	public AnalyticsFunctionCallDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.FUNCTION_CALL;
+	}
+
+	public String getArguments() {
+		return arguments;
+	}
+
+	public void setArguments(String arguments) {
+		this.arguments = arguments;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsMethodAccessDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsMethodAccessDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsMethodAccessDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,38 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsMethodAccessDescr extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private String methodName;
-	private String arguments;
-
-	public AnalyticsMethodAccessDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.METHOD_ACCESSOR;
-	}
-
-	public String getArguments() {
-		return arguments;
-	}
-
-	public void setArguments(String arguments) {
-		this.arguments = arguments;
-	}
-
-	public String getMethodName() {
-		return methodName;
-	}
-
-	public void setMethodName(String methodName) {
-		this.methodName = methodName;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsMethodAccessDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsMethodAccessDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsMethodAccessDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsMethodAccessDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,38 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsMethodAccessDescr extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private String methodName;
+	private String arguments;
+
+	public AnalyticsMethodAccessDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.METHOD_ACCESSOR;
+	}
+
+	public String getArguments() {
+		return arguments;
+	}
+
+	public void setArguments(String arguments) {
+		this.arguments = arguments;
+	}
+
+	public String getMethodName() {
+		return methodName;
+	}
+
+	public void setMethodName(String methodName) {
+		this.methodName = methodName;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsPredicateDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsPredicateDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsPredicateDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,51 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class AnalyticsPredicateDescr extends AnalyticsComponent implements
-		Cause {
-
-	private static int index = 0;
-
-	private String content;
-	private String classMethodName;
-
-	public AnalyticsPredicateDescr() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.PREDICATE;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.PREDICATE;
-	}
-
-	public String getClassMethodName() {
-		return classMethodName;
-	}
-
-	public void setClassMethodName(String classMethodName) {
-		this.classMethodName = classMethodName;
-	}
-
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-
-	@Override
-	public String toString() {
-		return "Predicate id: " + id + " content: " + content;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsPredicateDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsPredicateDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsPredicateDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsPredicateDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,51 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class AnalyticsPredicateDescr extends AnalyticsComponent implements
+		Cause {
+
+	private static int index = 0;
+
+	private String content;
+	private String classMethodName;
+
+	public AnalyticsPredicateDescr() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.PREDICATE;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.PREDICATE;
+	}
+
+	public String getClassMethodName() {
+		return classMethodName;
+	}
+
+	public void setClassMethodName(String classMethodName) {
+		this.classMethodName = classMethodName;
+	}
+
+	public String getContent() {
+		return content;
+	}
+
+	public void setContent(String content) {
+		this.content = content;
+	}
+
+	@Override
+	public String toString() {
+		return "Predicate id: " + id + " content: " + content;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsRule.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsRule.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,79 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class AnalyticsRule extends AnalyticsComponent implements Cause {
-
-	private static int index = 0;
-
-	private String ruleSalience;
-	private String ruleAgendaGroup;
-	private Consequence consequence;
-	private int lineNumber;
-
-	private int packageId;
-
-	public AnalyticsRule() {
-		super(index++);
-		ruleId = index;
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.RULE;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.RULE;
-	}
-
-	public String getRuleAgendaGroup() {
-		return ruleAgendaGroup;
-	}
-
-	public void setRuleAgendaGroup(String agendaGroup) {
-		this.ruleAgendaGroup = agendaGroup;
-	}
-
-	public String getRuleSalience() {
-		return ruleSalience;
-	}
-
-	public void setRuleSalience(String salience) {
-		this.ruleSalience = salience;
-	}
-
-	public Consequence getConsequence() {
-		return consequence;
-	}
-
-	public void setConsequence(Consequence consequence) {
-		this.consequence = consequence;
-	}
-
-	public int getLineNumber() {
-		return lineNumber;
-	}
-
-	public void setLineNumber(int lineNumber) {
-		this.lineNumber = lineNumber;
-	}
-
-	@Override
-	public String toString() {
-		return "Rule '" + ruleName + "'";
-	}
-
-	public int getPackageId() {
-		return packageId;
-	}
-
-	public void setPackageId(int packageId) {
-		this.packageId = packageId;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsRule.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/AnalyticsRule.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsRule.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/AnalyticsRule.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,79 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class AnalyticsRule extends AnalyticsComponent implements Cause {
+
+	private static int index = 0;
+
+	private String ruleSalience;
+	private String ruleAgendaGroup;
+	private Consequence consequence;
+	private int lineNumber;
+
+	private int packageId;
+
+	public AnalyticsRule() {
+		super(index++);
+		ruleId = index;
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.RULE;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.RULE;
+	}
+
+	public String getRuleAgendaGroup() {
+		return ruleAgendaGroup;
+	}
+
+	public void setRuleAgendaGroup(String agendaGroup) {
+		this.ruleAgendaGroup = agendaGroup;
+	}
+
+	public String getRuleSalience() {
+		return ruleSalience;
+	}
+
+	public void setRuleSalience(String salience) {
+		this.ruleSalience = salience;
+	}
+
+	public Consequence getConsequence() {
+		return consequence;
+	}
+
+	public void setConsequence(Consequence consequence) {
+		this.consequence = consequence;
+	}
+
+	public int getLineNumber() {
+		return lineNumber;
+	}
+
+	public void setLineNumber(int lineNumber) {
+		this.lineNumber = lineNumber;
+	}
+
+	@Override
+	public String toString() {
+		return "Rule '" + ruleName + "'";
+	}
+
+	public int getPackageId() {
+		return packageId;
+	}
+
+	public void setPackageId(int packageId) {
+		this.packageId = packageId;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Consequence.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Consequence.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Consequence.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,26 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-
-public interface Consequence extends Cause {
-
-	public static class ConsequenceType {
-
-		public static final ConsequenceType TEXT = new ConsequenceType(0);
-
-		private final int index;
-
-		private ConsequenceType(int i) {
-			index = i;
-		}
-	}
-
-	public int getId();
-
-	public ConsequenceType getConsequenceType();
-
-	public int getRuleId();
-
-	public String getRuleName();
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Consequence.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Consequence.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Consequence.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Consequence.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,26 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+
+public interface Consequence extends Cause {
+
+	public static class ConsequenceType {
+
+		public static final ConsequenceType TEXT = new ConsequenceType(0);
+
+		private final int index;
+
+		private ConsequenceType(int i) {
+			index = i;
+		}
+	}
+
+	public int getId();
+
+	public ConsequenceType getConsequenceType();
+
+	public int getRuleId();
+
+	public String getRuleName();
+
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Constraint.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Constraint.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Constraint.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,86 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class Constraint extends AnalyticsComponent implements Cause {
-
-	private static int index = 0;
-
-	private int ruleId;
-	private int patternId;
-	private boolean patternIsNot;
-	private int fieldId;
-	private String fieldName;
-	private int lineNumber;
-
-	public Constraint() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.CONSTRAINT;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.CONSTRAINT;
-	}
-
-	public int getFieldId() {
-		return fieldId;
-	}
-
-	public void setFieldId(int fieldId) {
-		this.fieldId = fieldId;
-	}
-
-	public int getRuleId() {
-		return ruleId;
-	}
-
-	public void setRuleId(int ruleId) {
-		this.ruleId = ruleId;
-	}
-
-	public int getLineNumber() {
-		return lineNumber;
-	}
-
-	public void setLineNumber(int lineNumber) {
-		this.lineNumber = lineNumber;
-	}
-
-	public int getPatternId() {
-		return patternId;
-	}
-
-	public void setPatternId(int patternId) {
-		this.patternId = patternId;
-	}
-
-	public boolean isPatternIsNot() {
-		return patternIsNot;
-	}
-
-	public void setPatternIsNot(boolean patternIsNot) {
-		this.patternIsNot = patternIsNot;
-	}
-
-	public String getFieldName() {
-		return fieldName;
-	}
-
-	public void setFieldName(String fieldName) {
-		this.fieldName = fieldName;
-	}
-
-	@Override
-	public String toString() {
-		return "Constraint id: " + id + " field name: " + fieldName;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Constraint.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Constraint.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Constraint.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Constraint.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,86 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class Constraint extends AnalyticsComponent implements Cause {
+
+	private static int index = 0;
+
+	private int ruleId;
+	private int patternId;
+	private boolean patternIsNot;
+	private int fieldId;
+	private String fieldName;
+	private int lineNumber;
+
+	public Constraint() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.CONSTRAINT;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.CONSTRAINT;
+	}
+
+	public int getFieldId() {
+		return fieldId;
+	}
+
+	public void setFieldId(int fieldId) {
+		this.fieldId = fieldId;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+	public int getLineNumber() {
+		return lineNumber;
+	}
+
+	public void setLineNumber(int lineNumber) {
+		this.lineNumber = lineNumber;
+	}
+
+	public int getPatternId() {
+		return patternId;
+	}
+
+	public void setPatternId(int patternId) {
+		this.patternId = patternId;
+	}
+
+	public boolean isPatternIsNot() {
+		return patternIsNot;
+	}
+
+	public void setPatternIsNot(boolean patternIsNot) {
+		this.patternIsNot = patternIsNot;
+	}
+
+	public String getFieldName() {
+		return fieldName;
+	}
+
+	public void setFieldName(String fieldName) {
+		this.fieldName = fieldName;
+	}
+
+	@Override
+	public String toString() {
+		return "Constraint id: " + id + " field name: " + fieldName;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Field.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Field.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Field.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,104 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class Field extends AnalyticsComponent implements Cause {
-
-	public static class FieldType {
-		public static final FieldType BOOLEAN = new FieldType("boolean");
-		public static final FieldType STRING = new FieldType( "String");
-		public static final FieldType INT = new FieldType( "int");
-		public static final FieldType DOUBLE = new FieldType( "double");
-		public static final FieldType DATE = new FieldType( "Date");
-		public static final FieldType VARIABLE = new FieldType( "Variable");
-		public static final FieldType OBJECT = new FieldType( "Object");
-
-		private final String string;
-
-		private FieldType(String string) {
-			this.string = string;
-		}
-
-		@Override
-		public   String toString() {
-			return string;
-		}
-	}
-
-	private static int index = 0;
-
-	private int classId;
-	private String className;
-	private String name;
-	private FieldType fieldType;
-
-	private int lineNumber;
-
-	public Field() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.FIELD;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.FIELD;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public FieldType getFieldType() {
-		return fieldType;
-	}
-
-	public void setFieldType(FieldType fieldType) {
-		// Only set fieldType to variable if there is no other fieldType found.
-		if (fieldType == FieldType.VARIABLE && this.fieldType == null) {
-			this.fieldType = fieldType;
-		} else {
-			this.fieldType = fieldType;
-		}
-	}
-
-	public int getClassId() {
-		return classId;
-	}
-
-	public void setClassId(int classId) {
-		this.classId = classId;
-	}
-
-	public int getLineNumber() {
-		return lineNumber;
-	}
-
-	public void setLineNumber(int lineNumber) {
-		this.lineNumber = lineNumber;
-	}
-
-	public String getClassName() {
-		return className;
-	}
-
-	public void setClassName(String className) {
-		this.className = className;
-	}
-
-	@Override
-	public String toString() {
-		return "Field '" + name + "' from class '" + className + "'";
-	}
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Field.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Field.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Field.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Field.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,104 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class Field extends AnalyticsComponent implements Cause {
+
+	public static class FieldType {
+		public static final FieldType BOOLEAN = new FieldType("boolean");
+		public static final FieldType STRING = new FieldType( "String");
+		public static final FieldType INT = new FieldType( "int");
+		public static final FieldType DOUBLE = new FieldType( "double");
+		public static final FieldType DATE = new FieldType( "Date");
+		public static final FieldType VARIABLE = new FieldType( "Variable");
+		public static final FieldType OBJECT = new FieldType( "Object");
+
+		private final String string;
+
+		private FieldType(String string) {
+			this.string = string;
+		}
+
+		@Override
+		public   String toString() {
+			return string;
+		}
+	}
+
+	private static int index = 0;
+
+	private int classId;
+	private String className;
+	private String name;
+	private FieldType fieldType;
+
+	private int lineNumber;
+
+	public Field() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.FIELD;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.FIELD;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public FieldType getFieldType() {
+		return fieldType;
+	}
+
+	public void setFieldType(FieldType fieldType) {
+		// Only set fieldType to variable if there is no other fieldType found.
+		if (fieldType == FieldType.VARIABLE && this.fieldType == null) {
+			this.fieldType = fieldType;
+		} else {
+			this.fieldType = fieldType;
+		}
+	}
+
+	public int getClassId() {
+		return classId;
+	}
+
+	public void setClassId(int classId) {
+		this.classId = classId;
+	}
+
+	public int getLineNumber() {
+		return lineNumber;
+	}
+
+	public void setLineNumber(int lineNumber) {
+		this.lineNumber = lineNumber;
+	}
+
+	public String getClassName() {
+		return className;
+	}
+
+	public void setClassName(String className) {
+		this.className = className;
+	}
+
+	@Override
+	public String toString() {
+		return "Field '" + name + "' from class '" + className + "'";
+	}
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/FieldClassLink.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/FieldClassLink.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/FieldClassLink.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,38 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class FieldClassLink extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private int fieldId;
-	private int classId;
-
-	public FieldClassLink() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.FIELD_CLASS_LINK;
-	}
-
-	public int getClassId() {
-		return classId;
-	}
-
-	public void setClassId(int classId) {
-		this.classId = classId;
-	}
-
-	public int getFieldId() {
-		return fieldId;
-	}
-
-	public void setFieldId(int fieldId) {
-		this.fieldId = fieldId;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/FieldClassLink.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/FieldClassLink.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/FieldClassLink.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/FieldClassLink.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,38 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class FieldClassLink extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private int fieldId;
+	private int classId;
+
+	public FieldClassLink() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.FIELD_CLASS_LINK;
+	}
+
+	public int getClassId() {
+		return classId;
+	}
+
+	public void setClassId(int classId) {
+		this.classId = classId;
+	}
+
+	public int getFieldId() {
+		return fieldId;
+	}
+
+	public void setFieldId(int fieldId) {
+		this.fieldId = fieldId;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/InlineEvalDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/InlineEvalDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/InlineEvalDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class InlineEvalDescr {
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/InlineEvalDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/InlineEvalDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/InlineEvalDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/InlineEvalDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,9 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class InlineEvalDescr {
+
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/LiteralRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/LiteralRestriction.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/LiteralRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,167 +0,0 @@
-package org.drools.analytics.components;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-import java.util.zip.DataFormatException;
-
-import org.drools.analytics.report.components.Cause;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class LiteralRestriction extends Restriction implements Cause {
-
-	private Field.FieldType valueType;
-
-	private boolean booleanValue;
-
-	private int intValue;
-
-	private double doubleValue;
-
-	private String stringValue;
-
-	private Date dateValue;
-
-	public RestrictionType getRestrictionType() {
-		return Restriction.RestrictionType.LITERAL;
-	}
-
-	/**
-	 * Compares two LiteralRestrictions by value.
-	 *
-	 * @param restriction
-	 *            Restriction that this object is compared to.
-	 * @return a negative integer, zero, or a positive integer as this object is
-	 *         less than, equal to, or greater than the specified object.
-	 * @throws DataFormatException
-	 *             If data was not supported.
-	 */
-	public int compareValues(LiteralRestriction restriction)
-			throws DataFormatException {
-		if (restriction.getValueType() != valueType) {
-			throw new DataFormatException(
-					"Value types did not match. Value type "
-							+ restriction.getValueType() + " was compared to "
-							+ valueType);
-		}
-
-		if (valueType == Field.FieldType.DATE) {
-			return dateValue.compareTo(restriction.getDateValue());
-		} else if (valueType == Field.FieldType.DOUBLE) {
-			if (doubleValue > restriction.getDoubleValue()) {
-				return 1;
-			} else if (doubleValue < restriction.getDoubleValue()) {
-				return -1;
-			} else {
-				return 0;
-			}
-		} else if (valueType == Field.FieldType.INT) {
-			if (intValue > restriction.getIntValue()) {
-				return 1;
-			} else if (intValue < restriction.getIntValue()) {
-				return -1;
-			} else {
-				return 0;
-			}
-		} else if (valueType == Field.FieldType.STRING) {
-			return stringValue.compareTo(restriction.getValueAsString());
-		}
-
-		throw new DataFormatException("Value types did not match. Value type "
-				+ restriction.getValueType() + " was compared to " + valueType);
-	}
-
-	public Object getValueAsObject() {
-		if (valueType == Field.FieldType.BOOLEAN) {
-			return Boolean.valueOf(booleanValue);
-		} else if (valueType == Field.FieldType.DATE) {
-			return dateValue;
-		} else if (valueType == Field.FieldType.DOUBLE) {
-			return Double.valueOf(doubleValue);
-		} else if (valueType == Field.FieldType.INT) {
-			return Integer.valueOf(intValue);
-		}
-		return stringValue;
-	}
-
-	public String getValueAsString() {
-		return stringValue;
-	}
-
-	public double getDoubleValue() {
-		return doubleValue;
-	}
-
-	public int getIntValue() {
-		return intValue;
-	}
-
-	public Field.FieldType getValueType() {
-		return valueType;
-	}
-
-	public Date getDateValue() {
-		return dateValue;
-	}
-
-	public void setValue(String value) {
-
-		if ("true".equals(value) || "false".equals(value)) {
-			booleanValue = value.equals("true");
-			valueType = Field.FieldType.BOOLEAN;
-			stringValue = value;
-		}
-
-		try {
-			intValue = Integer.parseInt(value);
-			valueType = Field.FieldType.INT;
-			stringValue = value;
-			return;
-		} catch (NumberFormatException e) {
-			// Not int.
-		}
-
-		try {
-			doubleValue = Double.parseDouble(value);
-			valueType = Field.FieldType.DOUBLE;
-			stringValue = value;
-			return;
-		} catch (NumberFormatException e) {
-			// Not double.
-		}
-
-		try {
-			String fmt = System.getProperty("drools.dateformat");
-			if (fmt == null) {
-				fmt = "dd-MMM-yyyy";
-			}
-
-			dateValue = new SimpleDateFormat(fmt, Locale.ENGLISH).parse(value);
-			valueType = Field.FieldType.DATE;
-			stringValue = value;
-			return;
-		} catch (Exception e) {
-			// Not a date.
-		}
-
-		stringValue = value;
-		valueType = Field.FieldType.STRING;
-	}
-
-	public boolean isBooleanValue() {
-		return booleanValue;
-	}
-
-	public void setBooleanValue(boolean booleanValue) {
-		this.booleanValue = booleanValue;
-	}
-
-	@Override
-	public String toString() {
-		return "LiteralRestriction from rule [" + ruleName + "] value '"
-				+ operator.getOperatorString() + " " + stringValue + "'";
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/LiteralRestriction.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/LiteralRestriction.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/LiteralRestriction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/LiteralRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,167 @@
+package org.drools.verifier.components;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+import java.util.zip.DataFormatException;
+
+import org.drools.verifier.report.components.Cause;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class LiteralRestriction extends Restriction implements Cause {
+
+	private Field.FieldType valueType;
+
+	private boolean booleanValue;
+
+	private int intValue;
+
+	private double doubleValue;
+
+	private String stringValue;
+
+	private Date dateValue;
+
+	public RestrictionType getRestrictionType() {
+		return Restriction.RestrictionType.LITERAL;
+	}
+
+	/**
+	 * Compares two LiteralRestrictions by value.
+	 *
+	 * @param restriction
+	 *            Restriction that this object is compared to.
+	 * @return a negative integer, zero, or a positive integer as this object is
+	 *         less than, equal to, or greater than the specified object.
+	 * @throws DataFormatException
+	 *             If data was not supported.
+	 */
+	public int compareValues(LiteralRestriction restriction)
+			throws DataFormatException {
+		if (restriction.getValueType() != valueType) {
+			throw new DataFormatException(
+					"Value types did not match. Value type "
+							+ restriction.getValueType() + " was compared to "
+							+ valueType);
+		}
+
+		if (valueType == Field.FieldType.DATE) {
+			return dateValue.compareTo(restriction.getDateValue());
+		} else if (valueType == Field.FieldType.DOUBLE) {
+			if (doubleValue > restriction.getDoubleValue()) {
+				return 1;
+			} else if (doubleValue < restriction.getDoubleValue()) {
+				return -1;
+			} else {
+				return 0;
+			}
+		} else if (valueType == Field.FieldType.INT) {
+			if (intValue > restriction.getIntValue()) {
+				return 1;
+			} else if (intValue < restriction.getIntValue()) {
+				return -1;
+			} else {
+				return 0;
+			}
+		} else if (valueType == Field.FieldType.STRING) {
+			return stringValue.compareTo(restriction.getValueAsString());
+		}
+
+		throw new DataFormatException("Value types did not match. Value type "
+				+ restriction.getValueType() + " was compared to " + valueType);
+	}
+
+	public Object getValueAsObject() {
+		if (valueType == Field.FieldType.BOOLEAN) {
+			return Boolean.valueOf(booleanValue);
+		} else if (valueType == Field.FieldType.DATE) {
+			return dateValue;
+		} else if (valueType == Field.FieldType.DOUBLE) {
+			return Double.valueOf(doubleValue);
+		} else if (valueType == Field.FieldType.INT) {
+			return Integer.valueOf(intValue);
+		}
+		return stringValue;
+	}
+
+	public String getValueAsString() {
+		return stringValue;
+	}
+
+	public double getDoubleValue() {
+		return doubleValue;
+	}
+
+	public int getIntValue() {
+		return intValue;
+	}
+
+	public Field.FieldType getValueType() {
+		return valueType;
+	}
+
+	public Date getDateValue() {
+		return dateValue;
+	}
+
+	public void setValue(String value) {
+
+		if ("true".equals(value) || "false".equals(value)) {
+			booleanValue = value.equals("true");
+			valueType = Field.FieldType.BOOLEAN;
+			stringValue = value;
+		}
+
+		try {
+			intValue = Integer.parseInt(value);
+			valueType = Field.FieldType.INT;
+			stringValue = value;
+			return;
+		} catch (NumberFormatException e) {
+			// Not int.
+		}
+
+		try {
+			doubleValue = Double.parseDouble(value);
+			valueType = Field.FieldType.DOUBLE;
+			stringValue = value;
+			return;
+		} catch (NumberFormatException e) {
+			// Not double.
+		}
+
+		try {
+			String fmt = System.getProperty("drools.dateformat");
+			if (fmt == null) {
+				fmt = "dd-MMM-yyyy";
+			}
+
+			dateValue = new SimpleDateFormat(fmt, Locale.ENGLISH).parse(value);
+			valueType = Field.FieldType.DATE;
+			stringValue = value;
+			return;
+		} catch (Exception e) {
+			// Not a date.
+		}
+
+		stringValue = value;
+		valueType = Field.FieldType.STRING;
+	}
+
+	public boolean isBooleanValue() {
+		return booleanValue;
+	}
+
+	public void setBooleanValue(boolean booleanValue) {
+		this.booleanValue = booleanValue;
+	}
+
+	@Override
+	public String toString() {
+		return "LiteralRestriction from rule [" + ruleName + "] value '"
+				+ operator.getOperatorString() + " " + stringValue + "'";
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/OperatorDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/OperatorDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/OperatorDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,48 +0,0 @@
-package org.drools.analytics.components;
-
-import java.io.Serializable;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class OperatorDescr extends AnalyticsComponent implements Serializable {
-	private static final long serialVersionUID = 8393994152436331910L;
-
-	private static int index = 0;
-
-	public static class Type {
-		public static final Type AND = new Type(0);
-		public static final Type OR = new Type(1);
-
-		private final int index;
-
-		private Type(int i) {
-			index = i;
-		}
-	};
-
-	private Type type;
-
-	public OperatorDescr() {
-		super(index++);
-	}
-
-	public OperatorDescr(Type operatorType) {
-		super(index++);
-		this.type = operatorType;
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.OPERATOR;
-	}
-
-	public Type getType() {
-		return type;
-	}
-
-	public void setType(Type type) {
-		this.type = type;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/OperatorDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/OperatorDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/OperatorDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/OperatorDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,48 @@
+package org.drools.verifier.components;
+
+import java.io.Serializable;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class OperatorDescr extends AnalyticsComponent implements Serializable {
+	private static final long serialVersionUID = 8393994152436331910L;
+
+	private static int index = 0;
+
+	public static class Type {
+		public static final Type AND = new Type(0);
+		public static final Type OR = new Type(1);
+
+		private final int index;
+
+		private Type(int i) {
+			index = i;
+		}
+	};
+
+	private Type type;
+
+	public OperatorDescr() {
+		super(index++);
+	}
+
+	public OperatorDescr(Type operatorType) {
+		super(index++);
+		this.type = operatorType;
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.OPERATOR;
+	}
+
+	public Type getType() {
+		return type;
+	}
+
+	public void setType(Type type) {
+		this.type = type;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Pattern.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,107 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class Pattern extends AnalyticsComponent implements Cause {
-
-	private static final long serialVersionUID = 5852308145251025423L;
-
-	private static int index = 0;
-
-	private int ruleId;
-	private int classId;
-	private String name;
-	private AnalyticsComponentType sourceType = AnalyticsComponentType.NOTHING;
-	private int sourceId = -1;
-
-	private boolean isPatternNot = false;
-	private boolean isPatternExists = false;
-	private boolean isPatternForall = false;
-
-	public Pattern() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.PATTERN;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.PATTERN;
-	}
-
-	public boolean isPatternNot() {
-		return isPatternNot;
-	}
-
-	public void setPatternNot(boolean isNot) {
-		this.isPatternNot = isNot;
-	}
-
-	public int getRuleId() {
-		return ruleId;
-	}
-
-	public void setRuleId(int ruleId) {
-		this.ruleId = ruleId;
-	}
-
-	public boolean isPatternExists() {
-		return isPatternExists;
-	}
-
-	public void setPatternExists(boolean isExists) {
-		this.isPatternExists = isExists;
-	}
-
-	public int getClassId() {
-		return classId;
-	}
-
-	public void setClassId(int classId) {
-		this.classId = classId;
-	}
-
-	public boolean isPatternForall() {
-		return isPatternForall;
-	}
-
-	public void setPatternForall(boolean isForall) {
-		this.isPatternForall = isForall;
-	}
-
-	public int getSourceId() {
-		return sourceId;
-	}
-
-	public void setSourceId(int sourceId) {
-		this.sourceId = sourceId;
-	}
-
-	public AnalyticsComponentType getSourceType() {
-		return sourceType;
-	}
-
-	public void setSourceType(AnalyticsComponentType sourceType) {
-		this.sourceType = sourceType;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	@Override
-	public String toString() {
-		return "Pattern, name: " + name;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Pattern.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Pattern.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Pattern.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Pattern.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,107 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class Pattern extends AnalyticsComponent implements Cause {
+
+	private static final long serialVersionUID = 5852308145251025423L;
+
+	private static int index = 0;
+
+	private int ruleId;
+	private int classId;
+	private String name;
+	private AnalyticsComponentType sourceType = AnalyticsComponentType.NOTHING;
+	private int sourceId = -1;
+
+	private boolean isPatternNot = false;
+	private boolean isPatternExists = false;
+	private boolean isPatternForall = false;
+
+	public Pattern() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.PATTERN;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.PATTERN;
+	}
+
+	public boolean isPatternNot() {
+		return isPatternNot;
+	}
+
+	public void setPatternNot(boolean isNot) {
+		this.isPatternNot = isNot;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+	public boolean isPatternExists() {
+		return isPatternExists;
+	}
+
+	public void setPatternExists(boolean isExists) {
+		this.isPatternExists = isExists;
+	}
+
+	public int getClassId() {
+		return classId;
+	}
+
+	public void setClassId(int classId) {
+		this.classId = classId;
+	}
+
+	public boolean isPatternForall() {
+		return isPatternForall;
+	}
+
+	public void setPatternForall(boolean isForall) {
+		this.isPatternForall = isForall;
+	}
+
+	public int getSourceId() {
+		return sourceId;
+	}
+
+	public void setSourceId(int sourceId) {
+		this.sourceId = sourceId;
+	}
+
+	public AnalyticsComponentType getSourceType() {
+		return sourceType;
+	}
+
+	public void setSourceType(AnalyticsComponentType sourceType) {
+		this.sourceType = sourceType;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	@Override
+	public String toString() {
+		return "Pattern, name: " + name;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/PatternPossibility.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/PatternPossibility.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,72 +0,0 @@
-package org.drools.analytics.components;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- * Instance of this class represents a possible combination of Constraints under
- * one Pattern. Each possibility returns true if all the Constraints in the
- * combination are true.
- *
- * @author Toni Rikkola
- */
-public class PatternPossibility extends AnalyticsComponent implements
-		Possibility {
-	private static final long serialVersionUID = 8871361928380977116L;
-
-	private static int index = 0;
-
-	private int patternId;
-	private int ruleId;
-	private Set<Cause> items = new HashSet<Cause>();
-
-	public PatternPossibility() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.PATTERN_POSSIBILITY;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.PATTERN_POSSIBILITY;
-	}
-
-	public Set<Cause> getItems() {
-		return items;
-	}
-
-	public int getAmountOfItems() {
-		return items.size();
-	}
-
-	public int getPatternId() {
-		return patternId;
-	}
-
-	public int getRuleId() {
-		return ruleId;
-	}
-
-	public void setRuleId(int ruleId) {
-		this.ruleId = ruleId;
-	}
-
-	public void setPatternId(int patternId) {
-		this.patternId = patternId;
-	}
-
-	public void add(Restriction restriction) {
-		items.add(restriction);
-	}
-
-	@Override
-	public String toString() {
-		return "PatternPossibility from rule: " + ruleName
-				+ ", amount of items:" + items.size();
-	}
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/PatternPossibility.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/PatternPossibility.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/PatternPossibility.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/PatternPossibility.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,72 @@
+package org.drools.verifier.components;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ * Instance of this class represents a possible combination of Constraints under
+ * one Pattern. Each possibility returns true if all the Constraints in the
+ * combination are true.
+ *
+ * @author Toni Rikkola
+ */
+public class PatternPossibility extends AnalyticsComponent implements
+		Possibility {
+	private static final long serialVersionUID = 8871361928380977116L;
+
+	private static int index = 0;
+
+	private int patternId;
+	private int ruleId;
+	private Set<Cause> items = new HashSet<Cause>();
+
+	public PatternPossibility() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.PATTERN_POSSIBILITY;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.PATTERN_POSSIBILITY;
+	}
+
+	public Set<Cause> getItems() {
+		return items;
+	}
+
+	public int getAmountOfItems() {
+		return items.size();
+	}
+
+	public int getPatternId() {
+		return patternId;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+	public void setPatternId(int patternId) {
+		this.patternId = patternId;
+	}
+
+	public void add(Restriction restriction) {
+		items.add(restriction);
+	}
+
+	@Override
+	public String toString() {
+		return "PatternPossibility from rule: " + ruleName
+				+ ", amount of items:" + items.size();
+	}
+}
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Possibility.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Possibility.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Possibility.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,16 +0,0 @@
-package org.drools.analytics.components;
-
-import java.util.Set;
-
-import org.drools.analytics.report.components.Cause;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public interface Possibility extends Cause {
-
-	public Set<Cause> getItems();
-	
-	public int getAmountOfItems();
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Possibility.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Possibility.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Possibility.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Possibility.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,16 @@
+package org.drools.verifier.components;
+
+import java.util.Set;
+
+import org.drools.verifier.report.components.Cause;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public interface Possibility extends Cause {
+
+	public Set<Cause> getItems();
+	
+	public int getAmountOfItems();
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/QualifiedIdentifierRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/QualifiedIdentifierRestriction.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/QualifiedIdentifierRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,52 +0,0 @@
-package org.drools.analytics.components;
-
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class QualifiedIdentifierRestriction extends Restriction  {
-
-	private int variableId;
-	private String variableName;
-	private String variablePath;
-
-	@Override
-	public RestrictionType getRestrictionType() {
-		return RestrictionType.QUALIFIED_IDENTIFIER;
-	}
-
-	public String getValueAsString() {
-		return variablePath + "." + variableName;
-	}
-
-	public int getVariableId() {
-		return variableId;
-	}
-
-	public void setVariableId(int variableId) {
-		this.variableId = variableId;
-	}
-
-	public String getVariableName() {
-		return variableName;
-	}
-
-	public void setVariableName(String variableName) {
-		this.variableName = variableName;
-	}
-
-	public String getVariablePath() {
-		return variablePath;
-	}
-
-	public void setVariablePath(String variablePath) {
-		this.variablePath = variablePath;
-	}
-
-	@Override
-	public String toString() {
-		return "QualifiedIdentifierRestriction name: " + variableName
-				+ variablePath;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/QualifiedIdentifierRestriction.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/QualifiedIdentifierRestriction.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/QualifiedIdentifierRestriction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/QualifiedIdentifierRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,52 @@
+package org.drools.verifier.components;
+
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class QualifiedIdentifierRestriction extends Restriction  {
+
+	private int variableId;
+	private String variableName;
+	private String variablePath;
+
+	@Override
+	public RestrictionType getRestrictionType() {
+		return RestrictionType.QUALIFIED_IDENTIFIER;
+	}
+
+	public String getValueAsString() {
+		return variablePath + "." + variableName;
+	}
+
+	public int getVariableId() {
+		return variableId;
+	}
+
+	public void setVariableId(int variableId) {
+		this.variableId = variableId;
+	}
+
+	public String getVariableName() {
+		return variableName;
+	}
+
+	public void setVariableName(String variableName) {
+		this.variableName = variableName;
+	}
+
+	public String getVariablePath() {
+		return variablePath;
+	}
+
+	public void setVariablePath(String variablePath) {
+		this.variablePath = variablePath;
+	}
+
+	@Override
+	public String toString() {
+		return "QualifiedIdentifierRestriction name: " + variableName
+				+ variablePath;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Restriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Restriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,101 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.base.evaluators.Operator;
-
-/**
- *
- * @author Toni Rikkola
- */
-public abstract class Restriction extends AnalyticsComponent implements Cause {
-
-	public static class RestrictionType {
-		public static final RestrictionType LITERAL = new RestrictionType(0);
-		public static final RestrictionType VARIABLE = new RestrictionType(1);
-		public static final RestrictionType QUALIFIED_IDENTIFIER = new RestrictionType(
-				2);
-		public static final RestrictionType RETURN_VALUE_RESTRICTION = new RestrictionType(
-				3);
-
-		private final int index;
-
-		private RestrictionType(int i) {
-			index = i;
-		}
-	}
-
-	private static int index = 0;
-
-	private int patternId;
-	private boolean patternIsNot;
-	private int constraintId;
-
-	// Id of the field that this restriction is related to.
-	private int fieldId;
-
-	protected Operator operator;
-
-	public Restriction() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.RESTRICTION;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.RESTRICTION;
-	}
-
-	public abstract RestrictionType getRestrictionType();
-
-	public Operator getOperator() {
-		return operator;
-	}
-
-	public void setOperator(Operator operator) {
-		this.operator = operator;
-	}
-
-	public int getConstraintId() {
-		return constraintId;
-	}
-
-	public void setConstraintId(int constraintId) {
-		this.constraintId = constraintId;
-	}
-
-	public int getRuleId() {
-		return ruleId;
-	}
-
-	public void setRuleId(int ruleId) {
-		this.ruleId = ruleId;
-	}
-
-	public int getPatternId() {
-		return patternId;
-	}
-
-	public void setPatternId(int patternId) {
-		this.patternId = patternId;
-	}
-
-	public int getFieldId() {
-		return fieldId;
-	}
-
-	public void setFieldId(int fieldId) {
-		this.fieldId = fieldId;
-	}
-
-	public boolean isPatternIsNot() {
-		return patternIsNot;
-	}
-
-	public void setPatternIsNot(boolean patternIsNot) {
-		this.patternIsNot = patternIsNot;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Restriction.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Restriction.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Restriction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Restriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,101 @@
+package org.drools.verifier.components;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public abstract class Restriction extends AnalyticsComponent implements Cause {
+
+	public static class RestrictionType {
+		public static final RestrictionType LITERAL = new RestrictionType(0);
+		public static final RestrictionType VARIABLE = new RestrictionType(1);
+		public static final RestrictionType QUALIFIED_IDENTIFIER = new RestrictionType(
+				2);
+		public static final RestrictionType RETURN_VALUE_RESTRICTION = new RestrictionType(
+				3);
+
+		private final int index;
+
+		private RestrictionType(int i) {
+			index = i;
+		}
+	}
+
+	private static int index = 0;
+
+	private int patternId;
+	private boolean patternIsNot;
+	private int constraintId;
+
+	// Id of the field that this restriction is related to.
+	private int fieldId;
+
+	protected Operator operator;
+
+	public Restriction() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.RESTRICTION;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.RESTRICTION;
+	}
+
+	public abstract RestrictionType getRestrictionType();
+
+	public Operator getOperator() {
+		return operator;
+	}
+
+	public void setOperator(Operator operator) {
+		this.operator = operator;
+	}
+
+	public int getConstraintId() {
+		return constraintId;
+	}
+
+	public void setConstraintId(int constraintId) {
+		this.constraintId = constraintId;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+	public int getPatternId() {
+		return patternId;
+	}
+
+	public void setPatternId(int patternId) {
+		this.patternId = patternId;
+	}
+
+	public int getFieldId() {
+		return fieldId;
+	}
+
+	public void setFieldId(int fieldId) {
+		this.fieldId = fieldId;
+	}
+
+	public boolean isPatternIsNot() {
+		return patternIsNot;
+	}
+
+	public void setPatternIsNot(boolean patternIsNot) {
+		this.patternIsNot = patternIsNot;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturValueFieldDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/ReturValueFieldDescr.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturValueFieldDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class ReturValueFieldDescr {
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturValueFieldDescr.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/ReturValueFieldDescr.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturValueFieldDescr.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturValueFieldDescr.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,9 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class ReturValueFieldDescr {
+
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturnValueRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/ReturnValueRestriction.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturnValueRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,43 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class ReturnValueRestriction extends Restriction implements Cause {
-
-	private Object content;
-	private String[] declarations;
-	private String classMethodName;
-
-	@Override
-	public RestrictionType getRestrictionType() {
-		return RestrictionType.RETURN_VALUE_RESTRICTION;
-	}
-
-	public String getClassMethodName() {
-		return classMethodName;
-	}
-
-	public void setClassMethodName(String classMethodName) {
-		this.classMethodName = classMethodName;
-	}
-
-	public Object getContent() {
-		return content;
-	}
-
-	public void setContent(Object content) {
-		this.content = content;
-	}
-
-	public String[] getDeclarations() {
-		return declarations;
-	}
-
-	public void setDeclarations(String[] declarations) {
-		this.declarations = declarations;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturnValueRestriction.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/ReturnValueRestriction.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturnValueRestriction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/ReturnValueRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,43 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class ReturnValueRestriction extends Restriction implements Cause {
+
+	private Object content;
+	private String[] declarations;
+	private String classMethodName;
+
+	@Override
+	public RestrictionType getRestrictionType() {
+		return RestrictionType.RETURN_VALUE_RESTRICTION;
+	}
+
+	public String getClassMethodName() {
+		return classMethodName;
+	}
+
+	public void setClassMethodName(String classMethodName) {
+		this.classMethodName = classMethodName;
+	}
+
+	public Object getContent() {
+		return content;
+	}
+
+	public void setContent(Object content) {
+		this.content = content;
+	}
+
+	public String[] getDeclarations() {
+		return declarations;
+	}
+
+	public void setDeclarations(String[] declarations) {
+		this.declarations = declarations;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePackage.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePackage.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePackage.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,47 +0,0 @@
-package org.drools.analytics.components;
-
-import java.util.HashSet;
-import java.util.Set;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class RulePackage extends AnalyticsComponent {
-
-	private static int index = 0;
-
-	private int offset = 0;
-	private String name;
-	private Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
-
-	public RulePackage() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.RULE_PACKAGE;
-	}
-	
-	public int getOffset(){ 
-	    offset++;
-        return offset % 2;
-	}	
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public Set<AnalyticsRule> getRules() {
-		return rules;
-	}
-
-	public void setRules(Set<AnalyticsRule> rules) {
-		this.rules = rules;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePackage.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePackage.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePackage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePackage.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,47 @@
+package org.drools.verifier.components;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class RulePackage extends AnalyticsComponent {
+
+	private static int index = 0;
+
+	private int offset = 0;
+	private String name;
+	private Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
+
+	public RulePackage() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.RULE_PACKAGE;
+	}
+	
+	public int getOffset(){ 
+	    offset++;
+        return offset % 2;
+	}	
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public Set<AnalyticsRule> getRules() {
+		return rules;
+	}
+
+	public void setRules(Set<AnalyticsRule> rules) {
+		this.rules = rules;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePossibility.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePossibility.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,64 +0,0 @@
-package org.drools.analytics.components;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-
-/**
- * Instance of this class represents a possible combination of
- * PatternPosibilities under one Rule. Each possibility returns true if all the
- * PatternPosibilities in the combination are true.
- *
- * @author Toni Rikkola
- */
-public class RulePossibility extends AnalyticsComponent implements
-		Serializable, Possibility {
-	private static final long serialVersionUID = 8871361928380977116L;
-
-	private static int index = 0;
-
-	private int ruleId;
-	private Set<Cause> items = new HashSet<Cause>();
-
-	public RulePossibility() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.RULE_POSSIBILITY;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.RULE_POSSIBILITY;
-	}
-
-	public Set<Cause> getItems() {
-		return items;
-	}
-
-	public int getAmountOfItems() {
-		return items.size();
-	}
-
-	public int getRuleId() {
-		return ruleId;
-	}
-
-	public void setRuleId(int ruleId) {
-		this.ruleId = ruleId;
-	}
-
-	public void add(PatternPossibility patternPossibility) {
-		items.add(patternPossibility);
-	}
-
-	@Override
-	public String toString() {
-		return "RulePossibility from rule: " + ruleName + ", amount of items:"
-				+ items.size();
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePossibility.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/RulePossibility.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePossibility.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/RulePossibility.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,64 @@
+package org.drools.verifier.components;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+
+/**
+ * Instance of this class represents a possible combination of
+ * PatternPosibilities under one Rule. Each possibility returns true if all the
+ * PatternPosibilities in the combination are true.
+ *
+ * @author Toni Rikkola
+ */
+public class RulePossibility extends AnalyticsComponent implements
+		Serializable, Possibility {
+	private static final long serialVersionUID = 8871361928380977116L;
+
+	private static int index = 0;
+
+	private int ruleId;
+	private Set<Cause> items = new HashSet<Cause>();
+
+	public RulePossibility() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.RULE_POSSIBILITY;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.RULE_POSSIBILITY;
+	}
+
+	public Set<Cause> getItems() {
+		return items;
+	}
+
+	public int getAmountOfItems() {
+		return items.size();
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+	public void add(PatternPossibility patternPossibility) {
+		items.add(patternPossibility);
+	}
+
+	@Override
+	public String toString() {
+		return "RulePossibility from rule: " + ruleName + ", amount of items:"
+				+ items.size();
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/TextConsequence.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/TextConsequence.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/TextConsequence.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,34 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.CauseType;
-
-public class TextConsequence extends AnalyticsComponent implements Consequence {
-
-	private static int index = 0;
-	private String text;
-
-	public TextConsequence() {
-		super(index++);
-	}
-
-	public ConsequenceType getConsequenceType() {
-		return ConsequenceType.TEXT;
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.CONSEQUENCE;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.CONSEQUENCE;
-	}
-
-	public void setText(String text) {
-		this.text = text;
-	}
-
-	public String getText() {
-		return text;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/TextConsequence.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/TextConsequence.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/TextConsequence.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/TextConsequence.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,34 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.CauseType;
+
+public class TextConsequence extends AnalyticsComponent implements Consequence {
+
+	private static int index = 0;
+	private String text;
+
+	public TextConsequence() {
+		super(index++);
+	}
+
+	public ConsequenceType getConsequenceType() {
+		return ConsequenceType.TEXT;
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.CONSEQUENCE;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.CONSEQUENCE;
+	}
+
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	public String getText() {
+		return text;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Variable.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Variable.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Variable.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,73 +0,0 @@
-package org.drools.analytics.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class Variable extends AnalyticsComponent {
-
-	private static int index;
-
-	private int ruleId;
-	private AnalyticsComponentType objectType;
-	private int objectId;
-	private String objectName;
-	private String name;
-
-	public Variable() {
-		super(index++);
-	}
-
-	@Override
-	public AnalyticsComponentType getComponentType() {
-		return AnalyticsComponentType.VARIABLE;
-	}
-
-	public int getRuleId() {
-		return ruleId;
-	}
-
-	public void setRuleId(int ruleId) {
-		this.ruleId = ruleId;
-	}
-
-	public int getObjectId() {
-		return objectId;
-	}
-
-	public void setObjectId(int variableId) {
-		this.objectId = variableId;
-	}
-
-	public AnalyticsComponentType getObjectType() {
-		return objectType;
-	}
-
-	public void setObjectType(AnalyticsComponentType type) {
-		// AnalyticsComponentType.CLASS dominates AnalyticsComponentType.FIELD.
-		if (objectType == null || objectType != AnalyticsComponentType.CLASS) {
-			this.objectType = type;
-		}
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getObjectName() {
-		return objectName;
-	}
-
-	public void setObjectName(String objectName) {
-		this.objectName = objectName;
-	}
-
-	@Override
-	public String toString() {
-		return "Variable name: " + name;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Variable.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/Variable.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Variable.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/Variable.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,73 @@
+package org.drools.verifier.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class Variable extends AnalyticsComponent {
+
+	private static int index;
+
+	private int ruleId;
+	private AnalyticsComponentType objectType;
+	private int objectId;
+	private String objectName;
+	private String name;
+
+	public Variable() {
+		super(index++);
+	}
+
+	@Override
+	public AnalyticsComponentType getComponentType() {
+		return AnalyticsComponentType.VARIABLE;
+	}
+
+	public int getRuleId() {
+		return ruleId;
+	}
+
+	public void setRuleId(int ruleId) {
+		this.ruleId = ruleId;
+	}
+
+	public int getObjectId() {
+		return objectId;
+	}
+
+	public void setObjectId(int variableId) {
+		this.objectId = variableId;
+	}
+
+	public AnalyticsComponentType getObjectType() {
+		return objectType;
+	}
+
+	public void setObjectType(AnalyticsComponentType type) {
+		// AnalyticsComponentType.CLASS dominates AnalyticsComponentType.FIELD.
+		if (objectType == null || objectType != AnalyticsComponentType.CLASS) {
+			this.objectType = type;
+		}
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getObjectName() {
+		return objectName;
+	}
+
+	public void setObjectName(String objectName) {
+		this.objectName = objectName;
+	}
+
+	@Override
+	public String toString() {
+		return "Variable name: " + name;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/VariableRestriction.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/VariableRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,30 +0,0 @@
-package org.drools.analytics.components;
-
-import org.drools.analytics.report.components.Cause;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class VariableRestriction extends Restriction implements Cause {
-
-	protected Variable variable;
-
-	public Variable getVariable() {
-		return variable;
-	}
-
-	public void setVariable(Variable variable) {
-		this.variable = variable;
-	}
-
-	public RestrictionType getRestrictionType() {
-		return Restriction.RestrictionType.VARIABLE;
-	}
-
-	@Override
-	public String toString() {
-		return "VariableRestriction from rule '" + ruleName + "' variable '"
-				+ variable + "'";
-	}
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/VariableRestriction.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/components/VariableRestriction.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/VariableRestriction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/components/VariableRestriction.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,30 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.report.components.Cause;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class VariableRestriction extends Restriction implements Cause {
+
+	protected Variable variable;
+
+	public Variable getVariable() {
+		return variable;
+	}
+
+	public void setVariable(Variable variable) {
+		this.variable = variable;
+	}
+
+	public RestrictionType getRestrictionType() {
+		return Restriction.RestrictionType.VARIABLE;
+	}
+
+	@Override
+	public String toString() {
+		return "VariableRestriction from rule '" + ruleName + "' variable '"
+				+ variable + "'";
+	}
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao)

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsData.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsData.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,89 +0,0 @@
-package org.drools.analytics.dao;
-
-import java.util.Collection;
-
-import org.drools.analytics.components.AnalyticsClass;
-import org.drools.analytics.components.AnalyticsEvalDescr;
-import org.drools.analytics.components.AnalyticsPredicateDescr;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.Consequence;
-import org.drools.analytics.components.Constraint;
-import org.drools.analytics.components.Field;
-import org.drools.analytics.components.FieldClassLink;
-import org.drools.analytics.components.OperatorDescr;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.Restriction;
-import org.drools.analytics.components.RulePackage;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.components.Variable;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public interface AnalyticsData {
-
-	public void add(Consequence consequence);
-
-	public void add(AnalyticsClass clazz);
-
-	public void add(Field field);
-
-	public void add(Variable variable);
-
-	public void add(AnalyticsRule rule);
-
-	public void add(Pattern pattern);
-
-	public void add(Constraint constraint);
-
-	public void add(Restriction restriction);
-
-	public void add(FieldClassLink link);
-
-	public void add(PatternPossibility possibility);
-
-	public void add(RulePossibility possibility);
-
-	public void add(RulePackage rulePackage);
-
-	public AnalyticsClass getClassByPackageAndName(String name);
-
-	public AnalyticsClass getClassById(int id);
-
-	public Field getFieldByClassAndFieldName(String className, String fieldName);
-
-	public Variable getVariableByRuleAndVariableName(String ruleName,
-			String variableName);
-
-	public Collection<? extends Object> getAll();
-
-	public FieldClassLink getFieldClassLink(int id, int id2);
-
-	public Collection<AnalyticsRule> getAllRules();
-
-	public Collection<AnalyticsClass> getClassesByRuleName(String ruleName);
-
-	public Collection<AnalyticsClass> getAllClasses();
-
-	public Collection<RulePackage> getAllRulePackages();
-
-	public Collection<Field> getFieldsByClassId(int id);
-
-	public Collection<AnalyticsRule> getRulesByClassId(int id);
-
-	public Collection<Field> getAllFields();
-
-	public Collection<AnalyticsRule> getRulesByFieldId(int id);
-
-	public RulePackage getRulePackageByName(String name);
-
-	public Collection<Restriction> getRestrictionsByFieldId(int id);
-
-	public void add(OperatorDescr operatorDescr);
-
-	public void add(AnalyticsEvalDescr eval);
-
-	public void add(AnalyticsPredicateDescr predicate);
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsData.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsData.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,89 @@
+package org.drools.verifier.dao;
+
+import java.util.Collection;
+
+import org.drools.verifier.components.AnalyticsClass;
+import org.drools.verifier.components.AnalyticsEvalDescr;
+import org.drools.verifier.components.AnalyticsPredicateDescr;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.Consequence;
+import org.drools.verifier.components.Constraint;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.FieldClassLink;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.components.Variable;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public interface AnalyticsData {
+
+	public void add(Consequence consequence);
+
+	public void add(AnalyticsClass clazz);
+
+	public void add(Field field);
+
+	public void add(Variable variable);
+
+	public void add(AnalyticsRule rule);
+
+	public void add(Pattern pattern);
+
+	public void add(Constraint constraint);
+
+	public void add(Restriction restriction);
+
+	public void add(FieldClassLink link);
+
+	public void add(PatternPossibility possibility);
+
+	public void add(RulePossibility possibility);
+
+	public void add(RulePackage rulePackage);
+
+	public AnalyticsClass getClassByPackageAndName(String name);
+
+	public AnalyticsClass getClassById(int id);
+
+	public Field getFieldByClassAndFieldName(String className, String fieldName);
+
+	public Variable getVariableByRuleAndVariableName(String ruleName,
+			String variableName);
+
+	public Collection<? extends Object> getAll();
+
+	public FieldClassLink getFieldClassLink(int id, int id2);
+
+	public Collection<AnalyticsRule> getAllRules();
+
+	public Collection<AnalyticsClass> getClassesByRuleName(String ruleName);
+
+	public Collection<AnalyticsClass> getAllClasses();
+
+	public Collection<RulePackage> getAllRulePackages();
+
+	public Collection<Field> getFieldsByClassId(int id);
+
+	public Collection<AnalyticsRule> getRulesByClassId(int id);
+
+	public Collection<Field> getAllFields();
+
+	public Collection<AnalyticsRule> getRulesByFieldId(int id);
+
+	public RulePackage getRulePackageByName(String name);
+
+	public Collection<Restriction> getRestrictionsByFieldId(int id);
+
+	public void add(OperatorDescr operatorDescr);
+
+	public void add(AnalyticsEvalDescr eval);
+
+	public void add(AnalyticsPredicateDescr predicate);
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsDataMaps.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsDataMaps.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,241 +0,0 @@
-package org.drools.analytics.dao;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import org.drools.analytics.components.AnalyticsClass;
-import org.drools.analytics.components.AnalyticsEvalDescr;
-import org.drools.analytics.components.AnalyticsPredicateDescr;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.Consequence;
-import org.drools.analytics.components.Constraint;
-import org.drools.analytics.components.Field;
-import org.drools.analytics.components.FieldClassLink;
-import org.drools.analytics.components.OperatorDescr;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.Restriction;
-import org.drools.analytics.components.RulePackage;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.components.Variable;
-
-/**
- * 
- * @author Toni Rikkola
- */
-class AnalyticsDataMaps implements AnalyticsData {
-
-	private Map<Integer, RulePackage> packagesById = new TreeMap<Integer, RulePackage>();
-	private Map<String, RulePackage> packagesByName = new TreeMap<String, RulePackage>();
-
-	private Map<Integer, AnalyticsClass> classesById = new TreeMap<Integer, AnalyticsClass>();
-	private Map<String, AnalyticsClass> classesByName = new TreeMap<String, AnalyticsClass>();
-	private Map<String, Field> fieldsByClassAndFieldName = new TreeMap<String, Field>();
-	private Map<Integer, Field> fieldsById = new TreeMap<Integer, Field>();
-	private DataTree<Integer, Field> fieldsByClassId = new DataTree<Integer, Field>();
-	private Map<String, FieldClassLink> fieldClassLinkByIds = new TreeMap<String, FieldClassLink>();
-
-	private Map<Integer, AnalyticsRule> rulesById = new TreeMap<Integer, AnalyticsRule>();
-	private Map<Integer, Pattern> patternsById = new TreeMap<Integer, Pattern>();
-	private DataTree<Integer, Pattern> patternsByClassId = new DataTree<Integer, Pattern>();
-	private DataTree<String, Pattern> patternsByRuleName = new DataTree<String, Pattern>();
-	private Map<Integer, Constraint> constraintsById = new TreeMap<Integer, Constraint>();
-	private Map<Integer, Restriction> restrictionsById = new TreeMap<Integer, Restriction>();
-	private DataTree<Integer, Restriction> restrictionsByFieldId = new DataTree<Integer, Restriction>();
-	private Map<Integer, OperatorDescr> operatorsById = new TreeMap<Integer, OperatorDescr>();
-	private Map<Integer, AnalyticsEvalDescr> evalsById = new TreeMap<Integer, AnalyticsEvalDescr>();
-	private Map<Integer, AnalyticsPredicateDescr> predicatesById = new TreeMap<Integer, AnalyticsPredicateDescr>();
-	private Map<Integer, Consequence> consiquencesById = new TreeMap<Integer, Consequence>();
-
-	private Map<String, Variable> variablesByRuleAndVariableName = new TreeMap<String, Variable>();
-
-	private Map<Integer, PatternPossibility> patternPossibilitiesById = new TreeMap<Integer, PatternPossibility>();
-	private Map<Integer, RulePossibility> rulePossibilitiesById = new TreeMap<Integer, RulePossibility>();
-
-	public void add(AnalyticsClass clazz) {
-		classesById.put(Integer.valueOf(clazz.getId()), clazz);
-		classesByName.put(clazz.getName(), clazz);
-	}
-
-	public void add(Field field) {
-		AnalyticsClass clazz = classesById.get(Integer.valueOf(field
-				.getClassId()));
-		fieldsByClassAndFieldName.put(clazz.getName() + "." + field.getName(),
-				field);
-
-		fieldsById.put(field.getId(), field);
-
-		fieldsByClassId.put(field.getClassId(), field);
-	}
-
-	public void add(Variable variable) {
-		variablesByRuleAndVariableName.put(variable.getRuleName() + "."
-				+ variable.getName(), variable);
-	}
-
-	public void add(AnalyticsRule rule) {
-		rulesById.put(Integer.valueOf(rule.getId()), rule);
-	}
-
-	public void add(Pattern pattern) {
-		patternsById.put(Integer.valueOf(pattern.getId()), pattern);
-
-		patternsByClassId.put(pattern.getClassId(), pattern);
-		patternsByRuleName.put(pattern.getRuleName(), pattern);
-	}
-
-	public void add(Constraint constraint) {
-		constraintsById.put(Integer.valueOf(constraint.getId()), constraint);
-	}
-
-	public void add(Restriction restriction) {
-		restrictionsById.put(restriction.getId(), restriction);
-
-		restrictionsByFieldId.put(restriction.getFieldId(), restriction);
-	}
-
-	public void add(FieldClassLink link) {
-		fieldClassLinkByIds.put(link.getFieldId() + "." + link.getClassId(),
-				link);
-	}
-
-	public AnalyticsClass getClassByPackageAndName(String name) {
-		return classesByName.get(name);
-	}
-
-	public Field getFieldByClassAndFieldName(String className, String fieldName) {
-		return fieldsByClassAndFieldName.get(className + "." + fieldName);
-	}
-
-	public Variable getVariableByRuleAndVariableName(String ruleName,
-			String variableName) {
-		return variablesByRuleAndVariableName
-				.get(ruleName + "." + variableName);
-	}
-
-	public FieldClassLink getFieldClassLink(int id, int id2) {
-		return fieldClassLinkByIds.get(id + "." + id2);
-	}
-
-	public Collection<AnalyticsRule> getAllRules() {
-		return rulesById.values();
-	}
-
-	public void add(PatternPossibility possibility) {
-		patternPossibilitiesById.put(possibility.getId(), possibility);
-	}
-
-	public void add(RulePossibility possibility) {
-		rulePossibilitiesById.put(possibility.getId(), possibility);
-	}
-
-	public Collection<AnalyticsClass> getClassesByRuleName(String ruleName) {
-		Set<AnalyticsClass> set = new HashSet<AnalyticsClass>();
-
-		for (Pattern pattern : patternsByRuleName.getBranch(ruleName)) {
-			AnalyticsClass clazz = getClassById(pattern.getClassId());
-			set.add(clazz);
-		}
-
-		return set;
-	}
-
-	public AnalyticsClass getClassById(int id) {
-		return classesById.get(id);
-	}
-
-	public Collection<? extends Object> getAll() {
-		List<Object> objects = new ArrayList<Object>();
-
-		objects.addAll(packagesById.values());
-
-		objects.addAll(rulesById.values());
-		objects.addAll(patternsById.values());
-		objects.addAll(constraintsById.values());
-		objects.addAll(restrictionsById.values());
-		objects.addAll(operatorsById.values());
-		objects.addAll(evalsById.values());
-		objects.addAll(predicatesById.values());
-		objects.addAll(consiquencesById.values());
-
-		objects.addAll(patternPossibilitiesById.values());
-		objects.addAll(rulePossibilitiesById.values());
-
-		objects.addAll(classesByName.values());
-		objects.addAll(fieldsByClassAndFieldName.values());
-		objects.addAll(variablesByRuleAndVariableName.values());
-
-		return objects;
-	}
-
-	public Collection<AnalyticsClass> getAllClasses() {
-		return classesById.values();
-	}
-
-	public Collection<Field> getFieldsByClassId(int id) {
-		return fieldsByClassId.getBranch(id);
-	}
-
-	public Collection<AnalyticsRule> getRulesByClassId(int id) {
-		Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
-
-		for (Pattern pattern : patternsByClassId.getBranch(id)) {
-			rules.add(rulesById.get(pattern.getRuleId()));
-		}
-
-		return rules;
-	}
-
-	public Collection<Field> getAllFields() {
-		return fieldsById.values();
-	}
-
-	public Collection<AnalyticsRule> getRulesByFieldId(int id) {
-
-		Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
-
-		for (Restriction restriction : restrictionsByFieldId.getBranch(id)) {
-			rules.add(rulesById.get(restriction.getRuleId()));
-		}
-
-		return rules;
-	}
-
-	public Collection<RulePackage> getAllRulePackages() {
-		return packagesById.values();
-	}
-
-	public void add(RulePackage rulePackage) {
-		packagesById.put(rulePackage.getId(), rulePackage);
-		packagesByName.put(rulePackage.getName(), rulePackage);
-	}
-
-	public RulePackage getRulePackageByName(String name) {
-		return packagesByName.get(name);
-	}
-
-	public Collection<Restriction> getRestrictionsByFieldId(int id) {
-		return restrictionsByFieldId.getBranch(id);
-	}
-
-	public void add(OperatorDescr operatorDescr) {
-		operatorsById.put(operatorDescr.getId(), operatorDescr);
-	}
-
-	public void add(AnalyticsEvalDescr eval) {
-		evalsById.put(eval.getId(), eval);
-	}
-
-	public void add(AnalyticsPredicateDescr predicate) {
-		predicatesById.put(predicate.getId(), predicate);
-	}
-
-	public void add(Consequence consequence) {
-		consiquencesById.put(consequence.getId(), consequence);
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsDataMaps.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsDataMaps.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsDataMaps.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,241 @@
+package org.drools.verifier.dao;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.drools.verifier.components.AnalyticsClass;
+import org.drools.verifier.components.AnalyticsEvalDescr;
+import org.drools.verifier.components.AnalyticsPredicateDescr;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.Consequence;
+import org.drools.verifier.components.Constraint;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.FieldClassLink;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.components.Variable;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+class AnalyticsDataMaps implements AnalyticsData {
+
+	private Map<Integer, RulePackage> packagesById = new TreeMap<Integer, RulePackage>();
+	private Map<String, RulePackage> packagesByName = new TreeMap<String, RulePackage>();
+
+	private Map<Integer, AnalyticsClass> classesById = new TreeMap<Integer, AnalyticsClass>();
+	private Map<String, AnalyticsClass> classesByName = new TreeMap<String, AnalyticsClass>();
+	private Map<String, Field> fieldsByClassAndFieldName = new TreeMap<String, Field>();
+	private Map<Integer, Field> fieldsById = new TreeMap<Integer, Field>();
+	private DataTree<Integer, Field> fieldsByClassId = new DataTree<Integer, Field>();
+	private Map<String, FieldClassLink> fieldClassLinkByIds = new TreeMap<String, FieldClassLink>();
+
+	private Map<Integer, AnalyticsRule> rulesById = new TreeMap<Integer, AnalyticsRule>();
+	private Map<Integer, Pattern> patternsById = new TreeMap<Integer, Pattern>();
+	private DataTree<Integer, Pattern> patternsByClassId = new DataTree<Integer, Pattern>();
+	private DataTree<String, Pattern> patternsByRuleName = new DataTree<String, Pattern>();
+	private Map<Integer, Constraint> constraintsById = new TreeMap<Integer, Constraint>();
+	private Map<Integer, Restriction> restrictionsById = new TreeMap<Integer, Restriction>();
+	private DataTree<Integer, Restriction> restrictionsByFieldId = new DataTree<Integer, Restriction>();
+	private Map<Integer, OperatorDescr> operatorsById = new TreeMap<Integer, OperatorDescr>();
+	private Map<Integer, AnalyticsEvalDescr> evalsById = new TreeMap<Integer, AnalyticsEvalDescr>();
+	private Map<Integer, AnalyticsPredicateDescr> predicatesById = new TreeMap<Integer, AnalyticsPredicateDescr>();
+	private Map<Integer, Consequence> consiquencesById = new TreeMap<Integer, Consequence>();
+
+	private Map<String, Variable> variablesByRuleAndVariableName = new TreeMap<String, Variable>();
+
+	private Map<Integer, PatternPossibility> patternPossibilitiesById = new TreeMap<Integer, PatternPossibility>();
+	private Map<Integer, RulePossibility> rulePossibilitiesById = new TreeMap<Integer, RulePossibility>();
+
+	public void add(AnalyticsClass clazz) {
+		classesById.put(Integer.valueOf(clazz.getId()), clazz);
+		classesByName.put(clazz.getName(), clazz);
+	}
+
+	public void add(Field field) {
+		AnalyticsClass clazz = classesById.get(Integer.valueOf(field
+				.getClassId()));
+		fieldsByClassAndFieldName.put(clazz.getName() + "." + field.getName(),
+				field);
+
+		fieldsById.put(field.getId(), field);
+
+		fieldsByClassId.put(field.getClassId(), field);
+	}
+
+	public void add(Variable variable) {
+		variablesByRuleAndVariableName.put(variable.getRuleName() + "."
+				+ variable.getName(), variable);
+	}
+
+	public void add(AnalyticsRule rule) {
+		rulesById.put(Integer.valueOf(rule.getId()), rule);
+	}
+
+	public void add(Pattern pattern) {
+		patternsById.put(Integer.valueOf(pattern.getId()), pattern);
+
+		patternsByClassId.put(pattern.getClassId(), pattern);
+		patternsByRuleName.put(pattern.getRuleName(), pattern);
+	}
+
+	public void add(Constraint constraint) {
+		constraintsById.put(Integer.valueOf(constraint.getId()), constraint);
+	}
+
+	public void add(Restriction restriction) {
+		restrictionsById.put(restriction.getId(), restriction);
+
+		restrictionsByFieldId.put(restriction.getFieldId(), restriction);
+	}
+
+	public void add(FieldClassLink link) {
+		fieldClassLinkByIds.put(link.getFieldId() + "." + link.getClassId(),
+				link);
+	}
+
+	public AnalyticsClass getClassByPackageAndName(String name) {
+		return classesByName.get(name);
+	}
+
+	public Field getFieldByClassAndFieldName(String className, String fieldName) {
+		return fieldsByClassAndFieldName.get(className + "." + fieldName);
+	}
+
+	public Variable getVariableByRuleAndVariableName(String ruleName,
+			String variableName) {
+		return variablesByRuleAndVariableName
+				.get(ruleName + "." + variableName);
+	}
+
+	public FieldClassLink getFieldClassLink(int id, int id2) {
+		return fieldClassLinkByIds.get(id + "." + id2);
+	}
+
+	public Collection<AnalyticsRule> getAllRules() {
+		return rulesById.values();
+	}
+
+	public void add(PatternPossibility possibility) {
+		patternPossibilitiesById.put(possibility.getId(), possibility);
+	}
+
+	public void add(RulePossibility possibility) {
+		rulePossibilitiesById.put(possibility.getId(), possibility);
+	}
+
+	public Collection<AnalyticsClass> getClassesByRuleName(String ruleName) {
+		Set<AnalyticsClass> set = new HashSet<AnalyticsClass>();
+
+		for (Pattern pattern : patternsByRuleName.getBranch(ruleName)) {
+			AnalyticsClass clazz = getClassById(pattern.getClassId());
+			set.add(clazz);
+		}
+
+		return set;
+	}
+
+	public AnalyticsClass getClassById(int id) {
+		return classesById.get(id);
+	}
+
+	public Collection<? extends Object> getAll() {
+		List<Object> objects = new ArrayList<Object>();
+
+		objects.addAll(packagesById.values());
+
+		objects.addAll(rulesById.values());
+		objects.addAll(patternsById.values());
+		objects.addAll(constraintsById.values());
+		objects.addAll(restrictionsById.values());
+		objects.addAll(operatorsById.values());
+		objects.addAll(evalsById.values());
+		objects.addAll(predicatesById.values());
+		objects.addAll(consiquencesById.values());
+
+		objects.addAll(patternPossibilitiesById.values());
+		objects.addAll(rulePossibilitiesById.values());
+
+		objects.addAll(classesByName.values());
+		objects.addAll(fieldsByClassAndFieldName.values());
+		objects.addAll(variablesByRuleAndVariableName.values());
+
+		return objects;
+	}
+
+	public Collection<AnalyticsClass> getAllClasses() {
+		return classesById.values();
+	}
+
+	public Collection<Field> getFieldsByClassId(int id) {
+		return fieldsByClassId.getBranch(id);
+	}
+
+	public Collection<AnalyticsRule> getRulesByClassId(int id) {
+		Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
+
+		for (Pattern pattern : patternsByClassId.getBranch(id)) {
+			rules.add(rulesById.get(pattern.getRuleId()));
+		}
+
+		return rules;
+	}
+
+	public Collection<Field> getAllFields() {
+		return fieldsById.values();
+	}
+
+	public Collection<AnalyticsRule> getRulesByFieldId(int id) {
+
+		Set<AnalyticsRule> rules = new HashSet<AnalyticsRule>();
+
+		for (Restriction restriction : restrictionsByFieldId.getBranch(id)) {
+			rules.add(rulesById.get(restriction.getRuleId()));
+		}
+
+		return rules;
+	}
+
+	public Collection<RulePackage> getAllRulePackages() {
+		return packagesById.values();
+	}
+
+	public void add(RulePackage rulePackage) {
+		packagesById.put(rulePackage.getId(), rulePackage);
+		packagesByName.put(rulePackage.getName(), rulePackage);
+	}
+
+	public RulePackage getRulePackageByName(String name) {
+		return packagesByName.get(name);
+	}
+
+	public Collection<Restriction> getRestrictionsByFieldId(int id) {
+		return restrictionsByFieldId.getBranch(id);
+	}
+
+	public void add(OperatorDescr operatorDescr) {
+		operatorsById.put(operatorDescr.getId(), operatorDescr);
+	}
+
+	public void add(AnalyticsEvalDescr eval) {
+		evalsById.put(eval.getId(), eval);
+	}
+
+	public void add(AnalyticsPredicateDescr predicate) {
+		predicatesById.put(predicate.getId(), predicate);
+	}
+
+	public void add(Consequence consequence) {
+		consiquencesById.put(consequence.getId(), consequence);
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResult.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResult.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResult.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,42 +0,0 @@
-package org.drools.analytics.dao;
-
-import java.util.Collection;
-
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Gap;
-import org.drools.analytics.report.components.MissingNumberPattern;
-import org.drools.analytics.report.components.RangeCheckCause;
-import org.drools.analytics.report.components.Severity;
-
-/**
- *
- * @author Toni Rikkola
- */
-public interface AnalyticsResult {
-
-	public void add(Gap gap);
-
-	public void remove(Gap gap);
-
-	public void add(MissingNumberPattern missingNumberPattern);
-
-	public AnalyticsData getAnalyticsData();
-
-	public Collection<RangeCheckCause> getRangeCheckCauses();
-
-	public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id);
-
-	public Collection<Gap> getGapsByFieldId(int fieldId);
-
-	public void add(AnalyticsMessageBase note);
-
-	/**
-	 * Return all the items that have given severity value.
-	 *
-	 * @param severity
-	 *            Severity level of item.
-	 * @return Collection of items or an empty list if none was found.
-	 */
-	public Collection<AnalyticsMessageBase> getBySeverity(Severity severity);
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResult.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResult.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResult.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResult.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,42 @@
+package org.drools.verifier.dao;
+
+import java.util.Collection;
+
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Gap;
+import org.drools.verifier.report.components.MissingNumberPattern;
+import org.drools.verifier.report.components.RangeCheckCause;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public interface AnalyticsResult {
+
+	public void add(Gap gap);
+
+	public void remove(Gap gap);
+
+	public void add(MissingNumberPattern missingNumberPattern);
+
+	public AnalyticsData getAnalyticsData();
+
+	public Collection<RangeCheckCause> getRangeCheckCauses();
+
+	public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id);
+
+	public Collection<Gap> getGapsByFieldId(int fieldId);
+
+	public void add(AnalyticsMessageBase note);
+
+	/**
+	 * Return all the items that have given severity value.
+	 *
+	 * @param severity
+	 *            Severity level of item.
+	 * @return Collection of items or an empty list if none was found.
+	 */
+	public Collection<AnalyticsMessageBase> getBySeverity(Severity severity);
+
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultFactory.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultFactory.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +0,0 @@
-package org.drools.analytics.dao;
-
-public class AnalyticsResultFactory {
-
-	public static AnalyticsResult createAnalyticsResult() {
-
-		return new AnalyticsResultNormal();
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultFactory.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultFactory.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,9 @@
+package org.drools.verifier.dao;
+
+public class AnalyticsResultFactory {
+
+	public static AnalyticsResult createAnalyticsResult() {
+
+		return new AnalyticsResultNormal();
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultNormal.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultNormal.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultNormal.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,98 +0,0 @@
-package org.drools.analytics.dao;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Gap;
-import org.drools.analytics.report.components.MissingNumberPattern;
-import org.drools.analytics.report.components.RangeCheckCause;
-import org.drools.analytics.report.components.Severity;
-
-/**
- *
- * @author Toni Rikkola
- */
-class AnalyticsResultNormal implements AnalyticsResult {
-	private static final long serialVersionUID = -6207688526236713721L;
-
-	private Map<Integer, Gap> gapsById = new TreeMap<Integer, Gap>();
-	private DataTree<Integer, Gap> gapsByFieldId = new DataTree<Integer, Gap>();
-	private Map<Integer, MissingNumberPattern> missingNumberPatternsById = new TreeMap<Integer, MissingNumberPattern>();
-	private DataTree<Integer, MissingNumberPattern> missingNumberPatternsByFieldId = new DataTree<Integer, MissingNumberPattern>();
-
-	private List<AnalyticsMessageBase> messages = new ArrayList<AnalyticsMessageBase>();
-	private DataTree<Severity, AnalyticsMessageBase> messagesBySeverity = new DataTree<Severity, AnalyticsMessageBase>();
-
-	private AnalyticsData data = new AnalyticsDataMaps();
-
-	public void add(AnalyticsMessageBase message) {
-		messages.add(message);
-		messagesBySeverity.put(message.getSeverity(), message);
-	}
-
-	public Collection<AnalyticsMessageBase> getBySeverity(
-			Severity severity) {
-		Collection<AnalyticsMessageBase> result = messagesBySeverity
-				.getBranch(severity);
-
-		if (result == null) {
-			return Collections.emptyList();
-		} else {
-			return result;
-		}
-	}
-
-	public void add(Gap gap) {
-		gapsById.put(gap.getId(), gap);
-
-		// Put by field id.
-		gapsByFieldId.put(gap.getField().getId(), gap);
-	}
-
-	public void remove(Gap gap) {
-		gapsById.remove(gap.getId());
-
-		gapsByFieldId.remove(gap.getField().getId(), gap);
-	}
-
-	public Collection<Gap> getGapsByFieldId(int fieldId) {
-		return gapsByFieldId.getBranch(fieldId);
-	}
-
-	public Collection<RangeCheckCause> getRangeCheckCauses() {
-		Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
-
-		result.addAll(gapsById.values());
-		result.addAll(missingNumberPatternsById.values());
-
-		return result;
-	}
-
-	public void add(MissingNumberPattern missingNumberPattern) {
-		missingNumberPatternsById.put(missingNumberPattern.getId(),
-				missingNumberPattern);
-
-		// Put by field id.
-		missingNumberPatternsByFieldId.put(missingNumberPattern.getField()
-				.getId(), missingNumberPattern);
-	}
-
-	public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id) {
-		Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
-
-		result.addAll(gapsByFieldId.getBranch(id));
-
-		result.addAll(missingNumberPatternsByFieldId.getBranch(id));
-
-		return result;
-	}
-
-	public AnalyticsData getAnalyticsData() {
-		return data;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultNormal.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsResultNormal.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultNormal.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/AnalyticsResultNormal.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,98 @@
+package org.drools.verifier.dao;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Gap;
+import org.drools.verifier.report.components.MissingNumberPattern;
+import org.drools.verifier.report.components.RangeCheckCause;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+class AnalyticsResultNormal implements AnalyticsResult {
+	private static final long serialVersionUID = -6207688526236713721L;
+
+	private Map<Integer, Gap> gapsById = new TreeMap<Integer, Gap>();
+	private DataTree<Integer, Gap> gapsByFieldId = new DataTree<Integer, Gap>();
+	private Map<Integer, MissingNumberPattern> missingNumberPatternsById = new TreeMap<Integer, MissingNumberPattern>();
+	private DataTree<Integer, MissingNumberPattern> missingNumberPatternsByFieldId = new DataTree<Integer, MissingNumberPattern>();
+
+	private List<AnalyticsMessageBase> messages = new ArrayList<AnalyticsMessageBase>();
+	private DataTree<Severity, AnalyticsMessageBase> messagesBySeverity = new DataTree<Severity, AnalyticsMessageBase>();
+
+	private AnalyticsData data = new AnalyticsDataMaps();
+
+	public void add(AnalyticsMessageBase message) {
+		messages.add(message);
+		messagesBySeverity.put(message.getSeverity(), message);
+	}
+
+	public Collection<AnalyticsMessageBase> getBySeverity(
+			Severity severity) {
+		Collection<AnalyticsMessageBase> result = messagesBySeverity
+				.getBranch(severity);
+
+		if (result == null) {
+			return Collections.emptyList();
+		} else {
+			return result;
+		}
+	}
+
+	public void add(Gap gap) {
+		gapsById.put(gap.getId(), gap);
+
+		// Put by field id.
+		gapsByFieldId.put(gap.getField().getId(), gap);
+	}
+
+	public void remove(Gap gap) {
+		gapsById.remove(gap.getId());
+
+		gapsByFieldId.remove(gap.getField().getId(), gap);
+	}
+
+	public Collection<Gap> getGapsByFieldId(int fieldId) {
+		return gapsByFieldId.getBranch(fieldId);
+	}
+
+	public Collection<RangeCheckCause> getRangeCheckCauses() {
+		Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
+
+		result.addAll(gapsById.values());
+		result.addAll(missingNumberPatternsById.values());
+
+		return result;
+	}
+
+	public void add(MissingNumberPattern missingNumberPattern) {
+		missingNumberPatternsById.put(missingNumberPattern.getId(),
+				missingNumberPattern);
+
+		// Put by field id.
+		missingNumberPatternsByFieldId.put(missingNumberPattern.getField()
+				.getId(), missingNumberPattern);
+	}
+
+	public Collection<RangeCheckCause> getRangeCheckCausesByFieldId(int id) {
+		Collection<RangeCheckCause> result = new ArrayList<RangeCheckCause>();
+
+		result.addAll(gapsByFieldId.getBranch(id));
+
+		result.addAll(missingNumberPatternsByFieldId.getBranch(id));
+
+		return result;
+	}
+
+	public AnalyticsData getAnalyticsData() {
+		return data;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/DataTree.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/DataTree.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/DataTree.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,64 +0,0 @@
-package org.drools.analytics.dao;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-public class DataTree<K, V> {
-	private Map<K, Set<V>> map = new TreeMap<K, Set<V>>();
-
-	public void put(K key, V value) {
-		if (map.containsKey(key)) {
-			Set<V> set = map.get(key);
-			set.add(value);
-		} else {
-			Set<V> set = new TreeSet<V>();
-			set.add(value);
-			map.put(key, set);
-		}
-	}
-
-	public Set<K> keySet() {
-		return map.keySet();
-	}
-
-	public Set<V> getBranch(K key) {
-		Set<V> set = map.get(key);
-		if (set != null) {
-			return set;
-		} else {
-			return Collections.emptySet();
-		}
-	}
-
-	public Collection<V> values() {
-		Collection<V> values = new ArrayList<V>();
-
-		for (Set<V> set : map.values()) {
-			for (V value : set) {
-				values.add(value);
-			}
-		}
-
-		return values;
-	}
-
-	public boolean remove(K key, V value) {
-		Set<V> set = map.get(key);
-
-		if (set != null) {
-			return set.remove(value);
-		} else {
-			return false;
-		}
-	}
-
-	@Override
-	public String toString() {
-		return values().toString();
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/DataTree.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/dao/DataTree.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/DataTree.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/dao/DataTree.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,64 @@
+package org.drools.verifier.dao;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import java.util.TreeSet;
+
+public class DataTree<K, V> {
+	private Map<K, Set<V>> map = new TreeMap<K, Set<V>>();
+
+	public void put(K key, V value) {
+		if (map.containsKey(key)) {
+			Set<V> set = map.get(key);
+			set.add(value);
+		} else {
+			Set<V> set = new TreeSet<V>();
+			set.add(value);
+			map.put(key, set);
+		}
+	}
+
+	public Set<K> keySet() {
+		return map.keySet();
+	}
+
+	public Set<V> getBranch(K key) {
+		Set<V> set = map.get(key);
+		if (set != null) {
+			return set;
+		} else {
+			return Collections.emptySet();
+		}
+	}
+
+	public Collection<V> values() {
+		Collection<V> values = new ArrayList<V>();
+
+		for (Set<V> set : map.values()) {
+			for (V value : set) {
+				values.add(value);
+			}
+		}
+
+		return values;
+	}
+
+	public boolean remove(K key, V value) {
+		Set<V> set = map.get(key);
+
+		if (set != null) {
+			return set.remove(value);
+		} else {
+			return false;
+		}
+	}
+
+	@Override
+	public String toString() {
+		return values().toString();
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/ReportModeller.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/ReportModeller.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/ReportModeller.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/ReportModeller.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,61 @@
+package org.drools.verifier.report;
+
+import java.util.Collection;
+
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Gap;
+import org.drools.verifier.report.components.MissingNumberPattern;
+import org.drools.verifier.report.components.Severity;
+
+import com.thoughtworks.xstream.XStream;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class ReportModeller {
+
+	public static String writeXML(AnalyticsResult result) {
+		XStream xstream = new XStream();
+
+		xstream.alias("result", AnalyticsResult.class);
+		xstream.alias("message", AnalyticsMessage.class);
+
+		xstream.alias("Gap", Gap.class);
+		xstream.alias("MissingNumber", MissingNumberPattern.class);
+
+		xstream.alias("Field", org.drools.verifier.components.Field.class);
+
+		xstream.alias("LiteralRestriction", LiteralRestriction.class);
+
+		return "<?xml version=\"1.0\"?>\n" + xstream.toXML(result);
+	}
+
+	public static String writePlainText(AnalyticsResult result) {
+
+		StringBuffer str = new StringBuffer();
+
+		for (Severity severity : Severity
+				.values()) {
+			Collection<AnalyticsMessageBase> messages = result
+					.getBySeverity(severity);
+
+			str.append("************* ");
+			str.append(severity.getTuple());
+			str.append(" ");
+
+			str.append(messages.size());
+			str.append(" ******************\n");
+			for (AnalyticsMessageBase message : messages) {
+				str.append(message);
+				str.append("\n");
+			}
+			str.append("\n");
+		}
+
+		return str.toString();
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components)

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessage.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessage.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessage.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,63 +0,0 @@
-package org.drools.analytics.report.components;
-
-import java.util.Collection;
-import java.util.Collections;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class AnalyticsMessage extends AnalyticsMessageBase {
-	private static final long serialVersionUID = 9190003495068712452L;
-
-	protected Collection<Cause> causes;
-
-	public AnalyticsMessage(Severity severity, MessageType messageType,
-			Cause faulty, String message, Collection<Cause> causes) {
-		super(severity, messageType, faulty, message);
-
-		this.causes = causes;
-	}
-
-	public AnalyticsMessage(Severity severity, MessageType messageType,
-			Cause faulty, String message) {
-		super(severity, messageType, faulty, message);
-
-		this.causes = Collections.emptyList();
-	}
-
-	public Collection<Cause> getCauses() {
-		return causes;
-	}
-
-	public void setCauses(Collection<Cause> reasons) {
-		this.causes = reasons;
-	}
-
-	@Override
-	public String toString() {
-		StringBuffer str = new StringBuffer(severity.getSingular());
-
-		str.append(" id = ");
-		str.append(id);
-		str.append(":\n");
-
-		if (faulty != null) {
-			str.append("faulty : ");
-			str.append(faulty);
-			str.append(", ");
-		}
-
-		str.append(message);
-		str.append(" \n\tCauses are [ \n");
-
-		for (Cause cause : causes) {
-			str.append("\t\t");
-			str.append(cause);
-			str.append("\n");
-		}
-		str.append("\t]");
-
-		return str.toString();
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessage.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessage.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessage.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,63 @@
+package org.drools.verifier.report.components;
+
+import java.util.Collection;
+import java.util.Collections;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class AnalyticsMessage extends AnalyticsMessageBase {
+	private static final long serialVersionUID = 9190003495068712452L;
+
+	protected Collection<Cause> causes;
+
+	public AnalyticsMessage(Severity severity, MessageType messageType,
+			Cause faulty, String message, Collection<Cause> causes) {
+		super(severity, messageType, faulty, message);
+
+		this.causes = causes;
+	}
+
+	public AnalyticsMessage(Severity severity, MessageType messageType,
+			Cause faulty, String message) {
+		super(severity, messageType, faulty, message);
+
+		this.causes = Collections.emptyList();
+	}
+
+	public Collection<Cause> getCauses() {
+		return causes;
+	}
+
+	public void setCauses(Collection<Cause> reasons) {
+		this.causes = reasons;
+	}
+
+	@Override
+	public String toString() {
+		StringBuffer str = new StringBuffer(severity.getSingular());
+
+		str.append(" id = ");
+		str.append(id);
+		str.append(":\n");
+
+		if (faulty != null) {
+			str.append("faulty : ");
+			str.append(faulty);
+			str.append(", ");
+		}
+
+		str.append(message);
+		str.append(" \n\tCauses are [ \n");
+
+		for (Cause cause : causes) {
+			str.append("\t\t");
+			str.append(cause);
+			str.append("\n");
+		}
+		str.append("\t]");
+
+		return str.toString();
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessageBase.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessageBase.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessageBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,102 +0,0 @@
-package org.drools.analytics.report.components;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- *
- * @author Toni Rikkola
- */
-abstract public class AnalyticsMessageBase implements Serializable,
-		Comparable<AnalyticsMessageBase> {
-	private static final long serialVersionUID = 9190003495068712452L;
-
-	private static int index = 0;
-
-	protected Severity severity;
-	protected MessageType messageType;
-
-	protected int id = index++;
-	protected Cause faulty;
-	protected String message;
-
-	public int compareTo(AnalyticsMessageBase o) {
-		if (id == o.getId()) {
-			return 0;
-		}
-
-		return (id > o.getId() ? 1 : -1);
-	}
-
-	protected AnalyticsMessageBase(Severity severity, MessageType messageType,
-			Cause faulty, String message) {
-		this.severity = severity;
-		this.messageType = messageType;
-		this.faulty = faulty;
-		this.message = message;
-	}
-
-	public int getId() {
-		return id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getMessage() {
-		return message;
-	}
-
-	public void setMessage(String message) {
-		this.message = message;
-	}
-
-	public Cause getFaulty() {
-		return faulty;
-	}
-
-	public void setFaulty(Cause faulty) {
-		this.faulty = faulty;
-	}
-
-	public MessageType getMessageType() {
-		return messageType;
-	}
-
-	public void setMessageType(MessageType messageType) {
-		this.messageType = messageType;
-	}
-
-	public Severity getSeverity() {
-		return severity;
-	}
-
-	public void setSeverity(Severity severity) {
-		this.severity = severity;
-	}
-
-	@Override
-	public String toString() {
-		StringBuffer str = new StringBuffer(severity.singular);
-
-		str.append(" id = ");
-		str.append(id);
-		str.append(":\n");
-
-		if (faulty != null) {
-			str.append("faulty : ");
-			str.append(faulty);
-			str.append(", ");
-		}
-
-		str.append(message);
-
-		str.append("\t]");
-
-		return str.toString();
-	}
-
-	public abstract Collection<? extends Cause> getCauses();
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessageBase.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsMessageBase.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessageBase.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsMessageBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,102 @@
+package org.drools.verifier.report.components;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+abstract public class AnalyticsMessageBase implements Serializable,
+		Comparable<AnalyticsMessageBase> {
+	private static final long serialVersionUID = 9190003495068712452L;
+
+	private static int index = 0;
+
+	protected Severity severity;
+	protected MessageType messageType;
+
+	protected int id = index++;
+	protected Cause faulty;
+	protected String message;
+
+	public int compareTo(AnalyticsMessageBase o) {
+		if (id == o.getId()) {
+			return 0;
+		}
+
+		return (id > o.getId() ? 1 : -1);
+	}
+
+	protected AnalyticsMessageBase(Severity severity, MessageType messageType,
+			Cause faulty, String message) {
+		this.severity = severity;
+		this.messageType = messageType;
+		this.faulty = faulty;
+		this.message = message;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public Cause getFaulty() {
+		return faulty;
+	}
+
+	public void setFaulty(Cause faulty) {
+		this.faulty = faulty;
+	}
+
+	public MessageType getMessageType() {
+		return messageType;
+	}
+
+	public void setMessageType(MessageType messageType) {
+		this.messageType = messageType;
+	}
+
+	public Severity getSeverity() {
+		return severity;
+	}
+
+	public void setSeverity(Severity severity) {
+		this.severity = severity;
+	}
+
+	@Override
+	public String toString() {
+		StringBuffer str = new StringBuffer(severity.singular);
+
+		str.append(" id = ");
+		str.append(id);
+		str.append(":\n");
+
+		if (faulty != null) {
+			str.append("faulty : ");
+			str.append(faulty);
+			str.append(", ");
+		}
+
+		str.append(message);
+
+		str.append("\t]");
+
+		return str.toString();
+	}
+
+	public abstract Collection<? extends Cause> getCauses();
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsRangeCheckMessage.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsRangeCheckMessage.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsRangeCheckMessage.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,24 +0,0 @@
-package org.drools.analytics.report.components;
-
-import java.util.Collection;
-
-public class AnalyticsRangeCheckMessage extends AnalyticsMessageBase {
-	private static final long serialVersionUID = -2403507929285633672L;
-
-	private Collection<RangeCheckCause> causes;
-
-	public AnalyticsRangeCheckMessage(Severity severity, Cause faulty,
-			String message, Collection<RangeCheckCause> causes) {
-		super(severity, MessageType.RANGE_CHECK, faulty, message);
-
-		this.causes = causes;
-	}
-
-	public Collection<RangeCheckCause> getCauses() {
-		return causes;
-	}
-
-	public void setCauses(Collection<RangeCheckCause> reasons) {
-		this.causes = reasons;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsRangeCheckMessage.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/AnalyticsRangeCheckMessage.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsRangeCheckMessage.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/AnalyticsRangeCheckMessage.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,24 @@
+package org.drools.verifier.report.components;
+
+import java.util.Collection;
+
+public class AnalyticsRangeCheckMessage extends AnalyticsMessageBase {
+	private static final long serialVersionUID = -2403507929285633672L;
+
+	private Collection<RangeCheckCause> causes;
+
+	public AnalyticsRangeCheckMessage(Severity severity, Cause faulty,
+			String message, Collection<RangeCheckCause> causes) {
+		super(severity, MessageType.RANGE_CHECK, faulty, message);
+
+		this.causes = causes;
+	}
+
+	public Collection<RangeCheckCause> getCauses() {
+		return causes;
+	}
+
+	public void setCauses(Collection<RangeCheckCause> reasons) {
+		this.causes = reasons;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Cause.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Cause.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Cause.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,13 +0,0 @@
-package org.drools.analytics.report.components;
-
-/**
- *
- * @author Toni Rikkola
- */
-public interface Cause {
-
-
-	public int getId();
-
-	public CauseType getCauseType();
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Cause.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Cause.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Cause.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Cause.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,13 @@
+package org.drools.verifier.report.components;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public interface Cause {
+
+
+	public int getId();
+
+	public CauseType getCauseType();
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/CauseType.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/CauseType.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/CauseType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,25 +0,0 @@
-package org.drools.analytics.report.components;
-
-public class CauseType {
-
-	public static final CauseType RULE = new CauseType(0);
-	public static final CauseType FIELD = new CauseType(1);
-	public static final CauseType GAP = new CauseType(2);
-	public static final CauseType PATTERN = new CauseType(3);
-	public static final CauseType RESTRICTION = new CauseType(4);
-	public static final CauseType PATTERN_POSSIBILITY = new CauseType(5);
-	public static final CauseType RULE_POSSIBILITY = new CauseType(6);
-	public static final CauseType RANGE_CHECK_CAUSE = new CauseType(7);
-	public static final CauseType REDUNDANCY = new CauseType(8);
-	public static final CauseType EVAL = new CauseType(9);
-	public static final CauseType PREDICATE = new CauseType(10);
-	public static final CauseType CONSTRAINT = new CauseType(11);
-	public static final CauseType CONSEQUENCE = new CauseType(12);
-	public static final CauseType SUBSUMPTION = new CauseType(13);
-
-	public final int index;
-
-	public CauseType(int i) {
-		index = i;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/CauseType.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/CauseType.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/CauseType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/CauseType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,27 @@
+package org.drools.verifier.report.components;
+
+public class CauseType {
+
+	public static final CauseType RULE = new CauseType(0);
+	public static final CauseType FIELD = new CauseType(1);
+	public static final CauseType GAP = new CauseType(2);
+	public static final CauseType PATTERN = new CauseType(3);
+	public static final CauseType RESTRICTION = new CauseType(4);
+	public static final CauseType PATTERN_POSSIBILITY = new CauseType(5);
+	public static final CauseType RULE_POSSIBILITY = new CauseType(6);
+	public static final CauseType RANGE_CHECK_CAUSE = new CauseType(7);
+	public static final CauseType REDUNDANCY = new CauseType(8);
+	public static final CauseType EVAL = new CauseType(9);
+	public static final CauseType PREDICATE = new CauseType(10);
+	public static final CauseType CONSTRAINT = new CauseType(11);
+	public static final CauseType CONSEQUENCE = new CauseType(12);
+	public static final CauseType SUBSUMPTION = new CauseType(13);
+	public static final CauseType OPPOSITES = new CauseType(14);
+	public static final CauseType OPPOSITE = new CauseType(15);
+
+	public final int index;
+
+	public CauseType(int i) {
+		index = i;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Gap.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Gap.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Gap.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,64 +0,0 @@
-package org.drools.analytics.report.components;
-
-import org.drools.analytics.components.Field;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.base.evaluators.Operator;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class Gap extends MissingRange implements RangeCheckCause,
-		Comparable<MissingRange> {
-
-	private LiteralRestriction restriction;
-
-	public int compareTo(MissingRange another) {
-		return super.compareTo(another);
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.GAP;
-	}
-
-	/**
-	 *
-	 * @param field
-	 *            Field from where the value is missing.
-	 * @param evaluator
-	 *            Evaluator for the missing value.
-	 * @param cause
-	 *            The restriction that the gap begins from.
-	 */
-	public Gap(Field field, Operator operator, LiteralRestriction restriction) {
-		this.field = field;
-		this.operator = operator;
-		this.restriction = restriction;
-	}
-
-	public String getRuleName() {
-		return restriction.getRuleName();
-	}
-
-	public LiteralRestriction getRestriction() {
-		return restriction;
-	}
-
-	public void setRestriction(LiteralRestriction restriction) {
-		this.restriction = restriction;
-	}
-
-	public String getValueAsString() {
-		return restriction.getValueAsString();
-	}
-
-	public Object getValueAsObject() {
-		return restriction.getValueAsObject();
-	}
-
-	@Override
-	public String toString() {
-		return "Gap: (" + field + ") " + getOperator() + " "
-				+ getValueAsString() + " from rule: [" + getRuleName() + "]";
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Gap.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Gap.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Gap.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Gap.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,64 @@
+package org.drools.verifier.report.components;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.LiteralRestriction;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class Gap extends MissingRange implements RangeCheckCause,
+		Comparable<MissingRange> {
+
+	private LiteralRestriction restriction;
+
+	public int compareTo(MissingRange another) {
+		return super.compareTo(another);
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.GAP;
+	}
+
+	/**
+	 *
+	 * @param field
+	 *            Field from where the value is missing.
+	 * @param evaluator
+	 *            Evaluator for the missing value.
+	 * @param cause
+	 *            The restriction that the gap begins from.
+	 */
+	public Gap(Field field, Operator operator, LiteralRestriction restriction) {
+		this.field = field;
+		this.operator = operator;
+		this.restriction = restriction;
+	}
+
+	public String getRuleName() {
+		return restriction.getRuleName();
+	}
+
+	public LiteralRestriction getRestriction() {
+		return restriction;
+	}
+
+	public void setRestriction(LiteralRestriction restriction) {
+		this.restriction = restriction;
+	}
+
+	public String getValueAsString() {
+		return restriction.getValueAsString();
+	}
+
+	public Object getValueAsObject() {
+		return restriction.getValueAsObject();
+	}
+
+	@Override
+	public String toString() {
+		return "Gap: (" + field + ") " + getOperator() + " "
+				+ getValueAsString() + " from rule: [" + getRuleName() + "]";
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Incompatibility.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Incompatibility.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Incompatibility.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Incompatibility.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,52 @@
+package org.drools.verifier.report.components;
+
+/**
+ * 
+ * Two causes are opposites.
+ * 
+ * @author Toni Rikkola
+ */
+public class Incompatibility implements Cause {
+
+	private static int index = 0;
+
+	private int id = index++;
+
+	private Cause left;
+	private Cause right;
+
+	public Incompatibility(Cause left, Cause right) {
+		this.left = left;
+		this.right = right;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.OPPOSITES;
+	}
+
+	public Cause getLeft() {
+		return left;
+	}
+
+	public void setLeft(Cause left) {
+		this.left = left;
+	}
+
+	public Cause getRight() {
+		return right;
+	}
+
+	public void setRight(Cause right) {
+		this.right = right;
+	}
+
+	@Override
+	public String toString() {
+		return "(" + getLeft() + ") and (" + getRight()
+				+ ") are opposites.";
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MessageType.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MessageType.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MessageType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,21 +0,0 @@
-package org.drools.analytics.report.components;
-
-
-public class MessageType {
-	public static final MessageType NOT_SPECIFIED = new MessageType(0);
-	public static final MessageType RANGE_CHECK = new MessageType(1);
-	public static final MessageType MISSING_EQUALITY = new MessageType(2);
-	public static final MessageType REDUNDANCY = new MessageType(3);
-	public static final MessageType SUBSUMPTION = new MessageType(4);
-	public static final MessageType MISSING_COMPONENT = new MessageType(5);
-	public static final MessageType OPTIMISATION = new MessageType(6);
-	public static final MessageType INCOHERENCE = new MessageType(7);
-	public static final MessageType OVERLAP = new MessageType(8);
-
-	public final int index;
-
-	public MessageType(int i) {
-		index = i;
-	}
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MessageType.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MessageType.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MessageType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MessageType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,21 @@
+package org.drools.verifier.report.components;
+
+
+public class MessageType {
+	public static final MessageType NOT_SPECIFIED = new MessageType(0);
+	public static final MessageType RANGE_CHECK = new MessageType(1);
+	public static final MessageType MISSING_EQUALITY = new MessageType(2);
+	public static final MessageType REDUNDANCY = new MessageType(3);
+	public static final MessageType SUBSUMPTION = new MessageType(4);
+	public static final MessageType MISSING_COMPONENT = new MessageType(5);
+	public static final MessageType OPTIMISATION = new MessageType(6);
+	public static final MessageType INCOHERENCE = new MessageType(7);
+	public static final MessageType OVERLAP = new MessageType(8);
+
+	public final int index;
+
+	public MessageType(int i) {
+		index = i;
+	}
+
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingNumberPattern.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,83 +0,0 @@
-package org.drools.analytics.report.components;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
-
-import org.drools.analytics.components.Field;
-import org.drools.base.evaluators.Operator;
-
-/**
- *
- * @author Toni Rikkola
- */
-public class MissingNumberPattern extends MissingRange implements
-		RangeCheckCause, Comparable<MissingRange> {
-
-	private Field.FieldType valueType;
-
-	private String value;
-
-	public int compareTo(MissingRange another) {
-		return super.compareTo(another);
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.RANGE_CHECK_CAUSE;
-	}
-
-	public MissingNumberPattern(Field field, Operator operator,
-			Field.FieldType valueType, String value) {
-		this.field = field;
-		this.operator = operator;
-		this.valueType = valueType;
-		this.value = value;
-	}
-
-	/**
-	 * Returns alway null, because there is no rule that this is related to.
-	 */
-	public String getRuleName() {
-		return null;
-	}
-
-	public String getValueAsString() {
-		return value;
-	}
-
-	public Object getValueAsObject() {
-		if (valueType == Field.FieldType.BOOLEAN) {
-			return Boolean.valueOf(value);
-		} else if (valueType == Field.FieldType.DATE) {
-			try {
-				String fmt = System.getProperty("drools.dateformat");
-				if (fmt == null) {
-					fmt = "dd-MMM-yyyy";
-				}
-
-				return new SimpleDateFormat(fmt, Locale.ENGLISH).parse(value);
-			} catch (ParseException e) {
-				e.printStackTrace();
-			}
-		} else if (valueType == Field.FieldType.DOUBLE) {
-			return Double.valueOf(value);
-		} else if (valueType == Field.FieldType.INT) {
-			return Integer.valueOf(value);
-		}
-
-		return value;
-	}
-
-	public Field.FieldType getValueType() {
-		return valueType;
-	}
-
-	public void setValueType(Field.FieldType valueType) {
-		this.valueType = valueType;
-	}
-
-	@Override
-	public String toString() {
-		return "Missing restriction " + operator + " " + value;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingNumberPattern.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingNumberPattern.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,83 @@
+package org.drools.verifier.report.components;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.components.Field;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+public class MissingNumberPattern extends MissingRange implements
+		RangeCheckCause, Comparable<MissingRange> {
+
+	private Field.FieldType valueType;
+
+	private String value;
+
+	public int compareTo(MissingRange another) {
+		return super.compareTo(another);
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.RANGE_CHECK_CAUSE;
+	}
+
+	public MissingNumberPattern(Field field, Operator operator,
+			Field.FieldType valueType, String value) {
+		this.field = field;
+		this.operator = operator;
+		this.valueType = valueType;
+		this.value = value;
+	}
+
+	/**
+	 * Returns alway null, because there is no rule that this is related to.
+	 */
+	public String getRuleName() {
+		return null;
+	}
+
+	public String getValueAsString() {
+		return value;
+	}
+
+	public Object getValueAsObject() {
+		if (valueType == Field.FieldType.BOOLEAN) {
+			return Boolean.valueOf(value);
+		} else if (valueType == Field.FieldType.DATE) {
+			try {
+				String fmt = System.getProperty("drools.dateformat");
+				if (fmt == null) {
+					fmt = "dd-MMM-yyyy";
+				}
+
+				return new SimpleDateFormat(fmt, Locale.ENGLISH).parse(value);
+			} catch (ParseException e) {
+				e.printStackTrace();
+			}
+		} else if (valueType == Field.FieldType.DOUBLE) {
+			return Double.valueOf(value);
+		} else if (valueType == Field.FieldType.INT) {
+			return Integer.valueOf(value);
+		}
+
+		return value;
+	}
+
+	public Field.FieldType getValueType() {
+		return valueType;
+	}
+
+	public void setValueType(Field.FieldType valueType) {
+		this.valueType = valueType;
+	}
+
+	@Override
+	public String toString() {
+		return "Missing restriction " + operator + " " + value;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingRange.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingRange.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingRange.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,75 +0,0 @@
-package org.drools.analytics.report.components;
-
-import org.drools.analytics.components.Field;
-import org.drools.base.evaluators.Operator;
-
-public abstract class MissingRange implements Comparable<MissingRange> {
-
-	private static int index = 0;
-	protected int id = index++;
-
-	protected Field field;
-	protected Operator operator;
-
-	private String firedRuleName;
-
-	/**
-	 * Takes the given operator e, and returns a reversed version of it.
-	 * 
-	 * @return operator
-	 */
-	public static Operator getReversedOperator(Operator e) {
-		if (e.equals(Operator.NOT_EQUAL)) {
-			return Operator.EQUAL;
-		} else if (e.equals(Operator.EQUAL)) {
-			return Operator.NOT_EQUAL;
-		} else if (e.equals(Operator.GREATER)) {
-			return Operator.LESS_OR_EQUAL;
-		} else if (e.equals(Operator.LESS)) {
-			return Operator.GREATER_OR_EQUAL;
-		} else if (e.equals(Operator.GREATER_OR_EQUAL)) {
-			return Operator.LESS;
-		} else if (e.equals(Operator.LESS_OR_EQUAL)) {
-			return Operator.GREATER;
-		} else {
-			return Operator.determineOperator(e.getOperatorString(), !e
-					.isNegated());
-		}
-	}
-
-	public int compareTo(MissingRange another) {
-		int value = this.id - another.getId();
-
-		if (value > 0) {
-			return 1;
-		} else if (value < 0) {
-			return -1;
-		} else {
-			return 0;
-		}
-	}
-
-	public int getId() {
-		return id;
-	}
-
-	public Field getField() {
-		return field;
-	}
-
-	public void setField(Field field) {
-		this.field = field;
-	}
-
-	public Operator getOperator() {
-		return operator;
-	}
-
-	public String getFiredRuleName() {
-		return firedRuleName;
-	}
-
-	public void setFiredRuleName(String firedRuleName) {
-		this.firedRuleName = firedRuleName;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingRange.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/MissingRange.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingRange.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/MissingRange.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,75 @@
+package org.drools.verifier.report.components;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.components.Field;
+
+public abstract class MissingRange implements Comparable<MissingRange> {
+
+	private static int index = 0;
+	protected int id = index++;
+
+	protected Field field;
+	protected Operator operator;
+
+	private String firedRuleName;
+
+	/**
+	 * Takes the given operator e, and returns a reversed version of it.
+	 * 
+	 * @return operator
+	 */
+	public static Operator getReversedOperator(Operator e) {
+		if (e.equals(Operator.NOT_EQUAL)) {
+			return Operator.EQUAL;
+		} else if (e.equals(Operator.EQUAL)) {
+			return Operator.NOT_EQUAL;
+		} else if (e.equals(Operator.GREATER)) {
+			return Operator.LESS_OR_EQUAL;
+		} else if (e.equals(Operator.LESS)) {
+			return Operator.GREATER_OR_EQUAL;
+		} else if (e.equals(Operator.GREATER_OR_EQUAL)) {
+			return Operator.LESS;
+		} else if (e.equals(Operator.LESS_OR_EQUAL)) {
+			return Operator.GREATER;
+		} else {
+			return Operator.determineOperator(e.getOperatorString(), !e
+					.isNegated());
+		}
+	}
+
+	public int compareTo(MissingRange another) {
+		int value = this.id - another.getId();
+
+		if (value > 0) {
+			return 1;
+		} else if (value < 0) {
+			return -1;
+		} else {
+			return 0;
+		}
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public Field getField() {
+		return field;
+	}
+
+	public void setField(Field field) {
+		this.field = field;
+	}
+
+	public Operator getOperator() {
+		return operator;
+	}
+
+	public String getFiredRuleName() {
+		return firedRuleName;
+	}
+
+	public void setFiredRuleName(String firedRuleName) {
+		this.firedRuleName = firedRuleName;
+	}
+}

Added: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Opposites.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Opposites.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Opposites.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,17 @@
+package org.drools.verifier.report.components;
+
+public class Opposites extends Incompatibility implements Cause {
+
+	public Opposites(Cause left, Cause right) {
+		super(left, right);
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.OPPOSITE;
+	}
+
+	@Override
+	public String toString() {
+		return "Opposites: (" + getLeft() + ") and (" + getRight() + ").";
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/PartialRedundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/PartialRedundancy.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/PartialRedundancy.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,53 +0,0 @@
-package org.drools.analytics.report.components;
-
-/**
- * Partial redundancy between left and right. Redundancy stores the connection
- * between left and right.
- * 
- * @author Toni Rikkola
- */
-public class PartialRedundancy {
-
-	private Cause left;
-	private Cause right;
-	private Redundancy redundancy;
-
-	/**
-	 * 
-	 * @param left
-	 *            Left side parent.
-	 * @param right
-	 *            Right side parent.
-	 * @param redundancy
-	 *            Connection between left and right.
-	 */
-	public PartialRedundancy(Cause left, Cause right, Redundancy redundancy) {
-		this.left = left;
-		this.right = right;
-		this.redundancy = redundancy;
-	}
-
-	public Cause getLeft() {
-		return left;
-	}
-
-	public void setLeft(Cause left) {
-		this.left = left;
-	}
-
-	public Redundancy getRedundancy() {
-		return redundancy;
-	}
-
-	public void setRedundancy(Redundancy redundancy) {
-		this.redundancy = redundancy;
-	}
-
-	public Cause getRight() {
-		return right;
-	}
-
-	public void setRight(Cause right) {
-		this.right = right;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/PartialRedundancy.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/PartialRedundancy.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/PartialRedundancy.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/PartialRedundancy.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,53 @@
+package org.drools.verifier.report.components;
+
+/**
+ * Partial redundancy between left and right. Redundancy stores the connection
+ * between left and right.
+ * 
+ * @author Toni Rikkola
+ */
+public class PartialRedundancy {
+
+	private Cause left;
+	private Cause right;
+	private Redundancy redundancy;
+
+	/**
+	 * 
+	 * @param left
+	 *            Left side parent.
+	 * @param right
+	 *            Right side parent.
+	 * @param redundancy
+	 *            Connection between left and right.
+	 */
+	public PartialRedundancy(Cause left, Cause right, Redundancy redundancy) {
+		this.left = left;
+		this.right = right;
+		this.redundancy = redundancy;
+	}
+
+	public Cause getLeft() {
+		return left;
+	}
+
+	public void setLeft(Cause left) {
+		this.left = left;
+	}
+
+	public Redundancy getRedundancy() {
+		return redundancy;
+	}
+
+	public void setRedundancy(Redundancy redundancy) {
+		this.redundancy = redundancy;
+	}
+
+	public Cause getRight() {
+		return right;
+	}
+
+	public void setRight(Cause right) {
+		this.right = right;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RangeCheckCause.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,19 +0,0 @@
-package org.drools.analytics.report.components;
-
-import org.drools.analytics.components.Field;
-import org.drools.base.evaluators.Operator;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public interface RangeCheckCause extends Cause {
-
-	public Field getField();
-
-	public Object getValueAsObject();
-
-	public String getValueAsString();
-
-	public Operator getOperator();
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RangeCheckCause.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RangeCheckCause.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,19 @@
+package org.drools.verifier.report.components;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.components.Field;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public interface RangeCheckCause extends Cause {
+
+	public Field getField();
+
+	public Object getValueAsObject();
+
+	public String getValueAsString();
+
+	public Operator getOperator();
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Redundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Redundancy.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Redundancy.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,42 +0,0 @@
-package org.drools.analytics.report.components;
-
-/**
- * Presents a redundancy between two Causes. The link between them can be WEAK
- * or STRONG.
- * 
- * WEAK redundancy is for example two AnalyticsRules, but not theyr's rule
- * possibilities. STRONG redundancy includes possibilities.
- * 
- * @author Toni Rikkola
- */
-public class Redundancy extends Subsumption implements Cause {
-	// By default the redundancy is weak.
-	private RedundancyType type = RedundancyType.WEAK;
-
-	public Redundancy(Cause left, Cause right) {
-		super(left, right);
-	}
-
-	public Redundancy(RedundancyType type, Cause left, Cause right) {
-		super(left, right);
-		this.type = type;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.REDUNDANCY;
-	}
-
-	public RedundancyType getType() {
-		return type;
-	}
-
-	public void setType(RedundancyType type) {
-		this.type = type;
-	}
-
-	@Override
-	public String toString() {
-		return "Redundancy between: (" + getLeft() + ") and (" + getRight()
-				+ ").";
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Redundancy.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Redundancy.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Redundancy.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Redundancy.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,42 @@
+package org.drools.verifier.report.components;
+
+/**
+ * Presents a redundancy between two Causes. The link between them can be WEAK
+ * or STRONG.
+ * 
+ * WEAK redundancy is for example two AnalyticsRules, but not theyr's rule
+ * possibilities. STRONG redundancy includes possibilities.
+ * 
+ * @author Toni Rikkola
+ */
+public class Redundancy extends Subsumption implements Cause {
+	// By default the redundancy is weak.
+	private RedundancyType type = RedundancyType.WEAK;
+
+	public Redundancy(Cause left, Cause right) {
+		super(left, right);
+	}
+
+	public Redundancy(RedundancyType type, Cause left, Cause right) {
+		super(left, right);
+		this.type = type;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.REDUNDANCY;
+	}
+
+	public RedundancyType getType() {
+		return type;
+	}
+
+	public void setType(RedundancyType type) {
+		this.type = type;
+	}
+
+	@Override
+	public String toString() {
+		return "Redundancy between: (" + getLeft() + ") and (" + getRight()
+				+ ").";
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RedundancyType.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RedundancyType.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RedundancyType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,13 +0,0 @@
-package org.drools.analytics.report.components;
-
-
-public class RedundancyType {
-	public static final RedundancyType WEAK = new RedundancyType(0);
-	public static final RedundancyType STRONG = new RedundancyType(0);
-
-	public final int index;
-
-	public RedundancyType(int i) {
-		index = i;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RedundancyType.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/RedundancyType.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RedundancyType.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/RedundancyType.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,13 @@
+package org.drools.verifier.report.components;
+
+
+public class RedundancyType {
+	public static final RedundancyType WEAK = new RedundancyType(0);
+	public static final RedundancyType STRONG = new RedundancyType(0);
+
+	public final int index;
+
+	public RedundancyType(int i) {
+		index = i;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Severity.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Severity.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Severity.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,59 +0,0 @@
-package org.drools.analytics.report.components;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-
-
-public class Severity implements Comparable<Severity> {
-	public static final Severity NOTE = new Severity(0, "Note", "Notes");
-	public static final Severity WARNING = new Severity(1, "Warning",
-			"Warnings");
-	public static final Severity ERROR = new Severity(2, "Error", "Errors");
-
-	private final int index;
-	public final String singular;
-	private final String tuple;
-
-	private Severity(int i, String singular, String tuple) {
-		this.index = i;
-		this.singular = singular;
-		this.tuple = tuple;
-	}
-
-	private int getIndex() {
-		return index;
-	}
-
-	public String getSingular() {
-		return singular;
-	}
-
-	public String getTuple() {
-		return tuple;
-	}
-
-	public static Collection<Severity> values() {
-		Collection<Severity> all = new ArrayList<Severity>();
-
-		all.add(NOTE);
-		all.add(WARNING);
-		all.add(ERROR);
-
-		return all;
-	}
-
-	@Override
-	public String toString() {
-		return singular;
-	}
-
-	public int compareTo(Severity s) {
-
-		if (s.getIndex() == this.index) {
-			return 0;
-		}
-
-		return (s.getIndex() < this.index ? -1 : 1);
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Severity.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Severity.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Severity.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Severity.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,59 @@
+package org.drools.verifier.report.components;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+
+
+public class Severity implements Comparable<Severity> {
+	public static final Severity NOTE = new Severity(0, "Note", "Notes");
+	public static final Severity WARNING = new Severity(1, "Warning",
+			"Warnings");
+	public static final Severity ERROR = new Severity(2, "Error", "Errors");
+
+	private final int index;
+	public final String singular;
+	private final String tuple;
+
+	private Severity(int i, String singular, String tuple) {
+		this.index = i;
+		this.singular = singular;
+		this.tuple = tuple;
+	}
+
+	private int getIndex() {
+		return index;
+	}
+
+	public String getSingular() {
+		return singular;
+	}
+
+	public String getTuple() {
+		return tuple;
+	}
+
+	public static Collection<Severity> values() {
+		Collection<Severity> all = new ArrayList<Severity>();
+
+		all.add(NOTE);
+		all.add(WARNING);
+		all.add(ERROR);
+
+		return all;
+	}
+
+	@Override
+	public String toString() {
+		return singular;
+	}
+
+	public int compareTo(Severity s) {
+
+		if (s.getIndex() == this.index) {
+			return 0;
+		}
+
+		return (s.getIndex() < this.index ? -1 : 1);
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Subsumption.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Subsumption.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Subsumption.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,50 +0,0 @@
-package org.drools.analytics.report.components;
-
-/**
- * 
- * @author Toni Rikkola
- */
-public class Subsumption implements Cause {
-
-	private static int index = 0;
-
-	private int id = index++;
-
-	private Cause left;
-	private Cause right;
-
-	public Subsumption(Cause left, Cause right) {
-		this.left = left;
-		this.right = right;
-	}
-
-	public int getId() {
-		return id;
-	}
-
-	public CauseType getCauseType() {
-		return CauseType.SUBSUMPTION;
-	}
-
-	public Cause getLeft() {
-		return left;
-	}
-
-	public void setLeft(Cause left) {
-		this.left = left;
-	}
-
-	public Cause getRight() {
-		return right;
-	}
-
-	public void setRight(Cause right) {
-		this.right = right;
-	}
-
-	@Override
-	public String toString() {
-		return "Subsumption between: (" + getLeft() + ") and (" + getRight()
-				+ ").";
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Subsumption.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/components/Subsumption.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Subsumption.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/components/Subsumption.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,50 @@
+package org.drools.verifier.report.components;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+public class Subsumption implements Cause {
+
+	private static int index = 0;
+
+	private int id = index++;
+
+	private Cause left;
+	private Cause right;
+
+	public Subsumption(Cause left, Cause right) {
+		this.left = left;
+		this.right = right;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public CauseType getCauseType() {
+		return CauseType.SUBSUMPTION;
+	}
+
+	public Cause getLeft() {
+		return left;
+	}
+
+	public void setLeft(Cause left) {
+		this.left = left;
+	}
+
+	public Cause getRight() {
+		return right;
+	}
+
+	public void setRight(Cause right) {
+		this.right = right;
+	}
+
+	@Override
+	public String toString() {
+		return "Subsumption between: (" + getLeft() + ") and (" + getRight()
+				+ ").";
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html)

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/AnalyticsMessagesVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/AnalyticsMessagesVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,81 +0,0 @@
-package org.drools.analytics.report.html;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.analytics.dao.AnalyticsData;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
-import org.drools.analytics.report.components.Cause;
-import org.mvel.TemplateInterpreter;
-
-/**
- * 
- * @author Toni Rikkola
- */
-class AnalyticsMessagesVisitor extends ReportVisitor {
-
-	private static String ANALYSIS_MESSAGES_TEMPLATE = "analyticsMessages.htm";
-	private static String ANALYSIS_MESSAGE_TEMPLATE = "analyticsMessage.htm";
-
-	public static String NOTES = "Notes";
-	public static String WARNINGS = "Warnings";
-	public static String ERRORS = "Errors";
-
-	public static String visitAnalyticsMessagesCollection(String title,
-			Collection<AnalyticsMessageBase> messages, AnalyticsData data) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		Collection<String> messageTemplates = new ArrayList<String>();
-		String myTemplate = readFile(ANALYSIS_MESSAGES_TEMPLATE);
-
-		for (AnalyticsMessageBase message : messages) {
-			messageTemplates.add(visitAnalyticsMessage(message, data));
-		}
-
-		map.put("title", title);
-		map.put("messages", messageTemplates);
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-
-	public static String visitAnalyticsMessage(AnalyticsMessageBase message,
-			AnalyticsData data) {
-		if (message instanceof AnalyticsRangeCheckMessage) {
-			return visitAnalyticsMessage((AnalyticsRangeCheckMessage) message,
-					data);
-		} else if (message instanceof AnalyticsMessage) {
-			return visitAnalyticsMessage((AnalyticsMessage) message);
-		}
-
-		return null;
-	}
-
-	public static String visitAnalyticsMessage(
-			AnalyticsRangeCheckMessage message, AnalyticsData data) {
-
-		return MissingRangesReportVisitor.visitRangeCheckMessage(
-				UrlFactory.THIS_FOLDER, message, data);
-	}
-
-	public static String visitAnalyticsMessage(AnalyticsMessage message) {
-
-		Map<String, Object> map = new HashMap<String, Object>();
-		Collection<String> causeUrls = new ArrayList<String>();
-		String myTemplate = readFile(ANALYSIS_MESSAGE_TEMPLATE);
-
-		// Solve the url's to causes if there is any.
-		for (Cause cause : message.getCauses()) {
-			causeUrls.add(UrlFactory.getUrl(cause));
-		}
-
-		map.put("title", message.getSeverity());
-		map.put("reason", message.getFaulty());
-		map.put("message", message.getMessage());
-		map.put("causes", causeUrls);
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/AnalyticsMessagesVisitor.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/AnalyticsMessagesVisitor.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/AnalyticsMessagesVisitor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/AnalyticsMessagesVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,81 @@
+package org.drools.verifier.report.html;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.verifier.dao.AnalyticsData;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.AnalyticsRangeCheckMessage;
+import org.drools.verifier.report.components.Cause;
+import org.mvel.templates.TemplateRuntime;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+class AnalyticsMessagesVisitor extends ReportVisitor {
+
+	private static String VERIFIER_MESSAGES_TEMPLATE = "verifierMessages.htm";
+	private static String VERIFIER_MESSAGE_TEMPLATE = "verifierMessage.htm";
+
+	public static String NOTES = "Notes";
+	public static String WARNINGS = "Warnings";
+	public static String ERRORS = "Errors";
+
+	public static String visitAnalyticsMessagesCollection(String title,
+			Collection<AnalyticsMessageBase> messages, AnalyticsData data) {
+		Map<String, Object> map = new HashMap<String, Object>();
+		Collection<String> messageTemplates = new ArrayList<String>();
+		String myTemplate = readFile(VERIFIER_MESSAGES_TEMPLATE);
+
+		for (AnalyticsMessageBase message : messages) {
+			messageTemplates.add(visitAnalyticsMessage(message, data));
+		}
+
+		map.put("title", title);
+		map.put("messages", messageTemplates);
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+
+	public static String visitAnalyticsMessage(AnalyticsMessageBase message,
+			AnalyticsData data) {
+		if (message instanceof AnalyticsRangeCheckMessage) {
+			return visitAnalyticsMessage((AnalyticsRangeCheckMessage) message,
+					data);
+		} else if (message instanceof AnalyticsMessage) {
+			return visitAnalyticsMessage((AnalyticsMessage) message);
+		}
+
+		return null;
+	}
+
+	public static String visitAnalyticsMessage(
+			AnalyticsRangeCheckMessage message, AnalyticsData data) {
+
+		return MissingRangesReportVisitor.visitRangeCheckMessage(
+				UrlFactory.THIS_FOLDER, message, data);
+	}
+
+	public static String visitAnalyticsMessage(AnalyticsMessage message) {
+
+		Map<String, Object> map = new HashMap<String, Object>();
+		Collection<String> causeUrls = new ArrayList<String>();
+		String myTemplate = readFile(VERIFIER_MESSAGE_TEMPLATE);
+
+		// Solve the url's to causes if there is any.
+		for (Cause cause : message.getCauses()) {
+			causeUrls.add(UrlFactory.getUrl(cause));
+		}
+
+		map.put("title", message.getSeverity());
+		map.put("reason", message.getFaulty());
+		map.put("message", message.getMessage());
+		map.put("causes", causeUrls);
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportModeller.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportModeller.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,122 +0,0 @@
-package org.drools.analytics.report.html;
-
-import java.io.File;
-import java.io.IOException;
-
-import org.drools.analytics.components.AnalyticsClass;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.Field;
-import org.drools.analytics.dao.AnalyticsData;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Severity;
-
-public class ComponentsReportModeller extends ReportModeller {
-
-	public static void writeHTML(String path, AnalyticsResult result) {
-		AnalyticsData data = result.getAnalyticsData();
-
-		// Source folder
-		File sourceFolder = new File(path + UrlFactory.SOURCE_FOLDER);
-		sourceFolder.mkdir();
-
-		// Base files
-		// index.htm
-		writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
-				+ UrlFactory.HTML_FILE_INDEX, formPage(UrlFactory.THIS_FOLDER,
-				ComponentsReportVisitor.visitObjectTypeCollection(
-						UrlFactory.THIS_FOLDER, data.getAllClasses())));
-
-		// packages.htm
-		writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
-				+ UrlFactory.HTML_FILE_PACKAGES, formPage(
-				UrlFactory.THIS_FOLDER, ComponentsReportVisitor
-						.visitRulePackageCollection(UrlFactory.THIS_FOLDER,
-								data.getAllRulePackages())));
-
-		// Rules
-		String ruleFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
-				+ UrlFactory.RULE_FOLDER;
-		File rulesFolder = new File(ruleFolder);
-		rulesFolder.mkdir();
-		for (AnalyticsRule rule : data.getAllRules()) {
-			writeToFile(ruleFolder + File.separator + rule.getId() + ".htm",
-					formPage(UrlFactory.PREVIOUS_FOLDER,
-							ComponentsReportVisitor.visitRule(
-									UrlFactory.PREVIOUS_FOLDER, rule, data)));
-		}
-
-		// ObjectTypes
-		String objectTypeFolder = path + UrlFactory.SOURCE_FOLDER
-				+ File.separator + UrlFactory.OBJECT_TYPE_FOLDER;
-		File objectTypesFolder = new File(objectTypeFolder);
-		objectTypesFolder.mkdir();
-		for (AnalyticsClass objectType : data.getAllClasses()) {
-			writeToFile(objectTypeFolder + File.separator + objectType.getId()
-					+ ".htm", formPage(UrlFactory.PREVIOUS_FOLDER,
-					ComponentsReportVisitor.visitObjectType(
-							UrlFactory.PREVIOUS_FOLDER, objectType, data)));
-		}
-
-		// Fields
-		String fieldFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
-				+ UrlFactory.FIELD_FOLDER;
-		File fieldsFolder = new File(fieldFolder);
-		fieldsFolder.mkdir();
-		for (Field field : data.getAllFields()) {
-			writeToFile(fieldFolder + File.separator + field.getId() + ".htm",
-					formPage(UrlFactory.PREVIOUS_FOLDER,
-							ComponentsReportVisitor.visitField(
-									UrlFactory.PREVIOUS_FOLDER, field, result)));
-		}
-
-		// Analytics messages
-		writeMessages(path, result);
-
-		// css files
-		String cssFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
-				+ UrlFactory.CSS_FOLDER;
-		File cssesFolder = new File(cssFolder);
-		cssesFolder.mkdir();
-		writeToFile(cssFolder + File.separator + UrlFactory.CSS_BASIC,
-				ComponentsReportVisitor.getCss(UrlFactory.CSS_BASIC));
-
-		// Image files
-		String imagesFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
-				+ UrlFactory.IMAGES_FOLDER;
-
-		File imgsFolder = new File(imagesFolder);
-		imgsFolder.mkdir();
-
-		try {
-			copyFile(imagesFolder, "hdrlogo_drools50px.gif");
-			copyFile(imagesFolder, "jbossrules_hdrbkg_blue.gif");
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	private static void writeMessages(String path, AnalyticsResult result) {
-		AnalyticsData data = result.getAnalyticsData();
-
-		String errors = AnalyticsMessagesVisitor
-				.visitAnalyticsMessagesCollection(
-						Severity.ERROR.getTuple(),
-						result.getBySeverity(Severity.ERROR),
-						data);
-		String warnings = AnalyticsMessagesVisitor
-				.visitAnalyticsMessagesCollection(
-						Severity.WARNING.getTuple(),
-						result.getBySeverity(Severity.WARNING),
-						data);
-		String notes = AnalyticsMessagesVisitor
-				.visitAnalyticsMessagesCollection(
-						Severity.NOTE.getTuple(), result
-								.getBySeverity(Severity.NOTE),
-						data);
-
-		writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
-				+ UrlFactory.HTML_FILE_ANALYTICS_MESSAGES, formPage(
-				UrlFactory.THIS_FOLDER, errors + warnings + notes));
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportModeller.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportModeller.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportModeller.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportModeller.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,122 @@
+package org.drools.verifier.report.html;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.drools.verifier.components.AnalyticsClass;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.dao.AnalyticsData;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+
+public class ComponentsReportModeller extends ReportModeller {
+
+	public static void writeHTML(String path, AnalyticsResult result) {
+		AnalyticsData data = result.getAnalyticsData();
+
+		// Source folder
+		File sourceFolder = new File(path + UrlFactory.SOURCE_FOLDER);
+		sourceFolder.mkdir();
+
+		// Base files
+		// index.htm
+		writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
+				+ UrlFactory.HTML_FILE_INDEX, formPage(UrlFactory.THIS_FOLDER,
+				ComponentsReportVisitor.visitObjectTypeCollection(
+						UrlFactory.THIS_FOLDER, data.getAllClasses())));
+
+		// packages.htm
+		writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
+				+ UrlFactory.HTML_FILE_PACKAGES, formPage(
+				UrlFactory.THIS_FOLDER, ComponentsReportVisitor
+						.visitRulePackageCollection(UrlFactory.THIS_FOLDER,
+								data.getAllRulePackages())));
+
+		// Rules
+		String ruleFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+				+ UrlFactory.RULE_FOLDER;
+		File rulesFolder = new File(ruleFolder);
+		rulesFolder.mkdir();
+		for (AnalyticsRule rule : data.getAllRules()) {
+			writeToFile(ruleFolder + File.separator + rule.getId() + ".htm",
+					formPage(UrlFactory.PREVIOUS_FOLDER,
+							ComponentsReportVisitor.visitRule(
+									UrlFactory.PREVIOUS_FOLDER, rule, data)));
+		}
+
+		// ObjectTypes
+		String objectTypeFolder = path + UrlFactory.SOURCE_FOLDER
+				+ File.separator + UrlFactory.OBJECT_TYPE_FOLDER;
+		File objectTypesFolder = new File(objectTypeFolder);
+		objectTypesFolder.mkdir();
+		for (AnalyticsClass objectType : data.getAllClasses()) {
+			writeToFile(objectTypeFolder + File.separator + objectType.getId()
+					+ ".htm", formPage(UrlFactory.PREVIOUS_FOLDER,
+					ComponentsReportVisitor.visitObjectType(
+							UrlFactory.PREVIOUS_FOLDER, objectType, data)));
+		}
+
+		// Fields
+		String fieldFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+				+ UrlFactory.FIELD_FOLDER;
+		File fieldsFolder = new File(fieldFolder);
+		fieldsFolder.mkdir();
+		for (Field field : data.getAllFields()) {
+			writeToFile(fieldFolder + File.separator + field.getId() + ".htm",
+					formPage(UrlFactory.PREVIOUS_FOLDER,
+							ComponentsReportVisitor.visitField(
+									UrlFactory.PREVIOUS_FOLDER, field, result)));
+		}
+
+		// Analytics messages
+		writeMessages(path, result);
+
+		// css files
+		String cssFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+				+ UrlFactory.CSS_FOLDER;
+		File cssesFolder = new File(cssFolder);
+		cssesFolder.mkdir();
+		writeToFile(cssFolder + File.separator + UrlFactory.CSS_BASIC,
+				ComponentsReportVisitor.getCss(UrlFactory.CSS_BASIC));
+
+		// Image files
+		String imagesFolder = path + UrlFactory.SOURCE_FOLDER + File.separator
+				+ UrlFactory.IMAGES_FOLDER;
+
+		File imgsFolder = new File(imagesFolder);
+		imgsFolder.mkdir();
+
+		try {
+			copyFile(imagesFolder, "hdrlogo_drools50px.gif");
+			copyFile(imagesFolder, "jbossrules_hdrbkg_blue.gif");
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+	}
+
+	private static void writeMessages(String path, AnalyticsResult result) {
+		AnalyticsData data = result.getAnalyticsData();
+
+		String errors = AnalyticsMessagesVisitor
+				.visitAnalyticsMessagesCollection(
+						Severity.ERROR.getTuple(),
+						result.getBySeverity(Severity.ERROR),
+						data);
+		String warnings = AnalyticsMessagesVisitor
+				.visitAnalyticsMessagesCollection(
+						Severity.WARNING.getTuple(),
+						result.getBySeverity(Severity.WARNING),
+						data);
+		String notes = AnalyticsMessagesVisitor
+				.visitAnalyticsMessagesCollection(
+						Severity.NOTE.getTuple(), result
+								.getBySeverity(Severity.NOTE),
+						data);
+
+		writeToFile(path + UrlFactory.SOURCE_FOLDER + File.separator
+				+ UrlFactory.HTML_FILE_VERIFIER_MESSAGES, formPage(
+				UrlFactory.THIS_FOLDER, errors + warnings + notes));
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,121 +0,0 @@
-package org.drools.analytics.report.html;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.drools.analytics.components.AnalyticsClass;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.Field;
-import org.drools.analytics.components.Restriction;
-import org.drools.analytics.components.RulePackage;
-import org.drools.analytics.dao.AnalyticsData;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.RangeCheckCause;
-import org.mvel.TemplateInterpreter;
-
-class ComponentsReportVisitor extends ReportVisitor {
-
-	public static String getCss(String fileName) {
-		return readFile(fileName);
-	}
-
-	public static String visitRulePackageCollection(String sourceFolder,
-			Collection<RulePackage> packages) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("sourceFolder", sourceFolder);
-		map.put("ruleFolder", UrlFactory.RULE_FOLDER);
-
-		map.put("rulePackages", packages);
-
-		String myTemplate = readFile("packages.htm");
-
-		String result = TemplateInterpreter.evalToString(myTemplate, map);
-
-		return result;
-	}
-
-	public static String visitObjectTypeCollection(String sourceFolder,
-			Collection<AnalyticsClass> objectTypes) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("sourceFolder", sourceFolder);
-		map.put("objectTypeFolder", sourceFolder + "/"
-				+ UrlFactory.OBJECT_TYPE_FOLDER);
-		map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
-		map.put("objectTypes", objectTypes);
-
-		String myTemplate = readFile("objectTypes.htm");
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-
-	public static String visitRule(String sourceFolder, AnalyticsRule rule,
-			AnalyticsData data) {
-		Collection<AnalyticsClass> objectTypes = data.getClassesByRuleName(rule
-				.getRuleName());
-
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("sourceFolder", sourceFolder);
-		map.put("objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER);
-
-		map.put("rule", rule);
-		map.put("objectTypes", objectTypes);
-
-		String myTemplate = readFile("rule.htm");
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-
-	public static String visitObjectType(String sourceFolder,
-			AnalyticsClass objectType, AnalyticsData data) {
-		Collection<AnalyticsRule> rules = data.getRulesByClassId(objectType
-				.getId());
-
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("sourceFolder", sourceFolder);
-		map.put("ruleFolder", UrlFactory.RULE_FOLDER);
-		map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
-
-		map.put("objectType", objectType);
-		map.put("rules", rules);
-
-		String myTemplate = readFile("objectType.htm");
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-
-	public static String visitField(String sourceFolder, Field field,
-			AnalyticsResult result) {
-		AnalyticsData data = result.getAnalyticsData();
-		AnalyticsClass objectType = data.getClassById(field.getClassId());
-		Collection<AnalyticsRule> rules = data.getRulesByFieldId(field.getId());
-
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("sourceFolder", sourceFolder);
-		map.put("ruleFolder", UrlFactory.RULE_FOLDER);
-		map.put("objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER);
-		map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
-
-		map.put("field", field);
-		map.put("objectType", objectType);
-		map.put("rules", rules);
-
-		if (field.getFieldType() == Field.FieldType.DOUBLE
-				|| field.getFieldType() == Field.FieldType.DATE
-				|| field.getFieldType() == Field.FieldType.INT) {
-			Collection<RangeCheckCause> causes = result
-					.getRangeCheckCausesByFieldId(field.getId());
-			Collection<Restriction> restrictions = data
-					.getRestrictionsByFieldId(field.getId());
-			map.put("ranges", "Ranges:"
-					+ MissingRangesReportVisitor.visitRanges(
-							UrlFactory.PREVIOUS_FOLDER, restrictions, causes));
-		} else {
-			map.put("ranges", "");
-		}
-
-		String myTemplate = readFile("field.htm");
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ComponentsReportVisitor.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ComponentsReportVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,121 @@
+package org.drools.verifier.report.html;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.verifier.components.AnalyticsClass;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.dao.AnalyticsData;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.RangeCheckCause;
+import org.mvel.templates.TemplateRuntime;
+
+class ComponentsReportVisitor extends ReportVisitor {
+
+	public static String getCss(String fileName) {
+		return readFile(fileName);
+	}
+
+	public static String visitRulePackageCollection(String sourceFolder,
+			Collection<RulePackage> packages) {
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("sourceFolder", sourceFolder);
+		map.put("ruleFolder", UrlFactory.RULE_FOLDER);
+
+		map.put("rulePackages", packages);
+
+		String myTemplate = readFile("packages.htm");
+
+		String result = String.valueOf(TemplateRuntime.eval(myTemplate, map));
+
+		return result;
+	}
+
+	public static String visitObjectTypeCollection(String sourceFolder,
+			Collection<AnalyticsClass> objectTypes) {
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("sourceFolder", sourceFolder);
+		map.put("objectTypeFolder", sourceFolder + "/"
+				+ UrlFactory.OBJECT_TYPE_FOLDER);
+		map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
+		map.put("objectTypes", objectTypes);
+
+		String myTemplate = readFile("objectTypes.htm");
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+
+	public static String visitRule(String sourceFolder, AnalyticsRule rule,
+			AnalyticsData data) {
+		Collection<AnalyticsClass> objectTypes = data.getClassesByRuleName(rule
+				.getRuleName());
+
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("sourceFolder", sourceFolder);
+		map.put("objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER);
+
+		map.put("rule", rule);
+		map.put("objectTypes", objectTypes);
+
+		String myTemplate = readFile("rule.htm");
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+
+	public static String visitObjectType(String sourceFolder,
+			AnalyticsClass objectType, AnalyticsData data) {
+		Collection<AnalyticsRule> rules = data.getRulesByClassId(objectType
+				.getId());
+
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("sourceFolder", sourceFolder);
+		map.put("ruleFolder", UrlFactory.RULE_FOLDER);
+		map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
+
+		map.put("objectType", objectType);
+		map.put("rules", rules);
+
+		String myTemplate = readFile("objectType.htm");
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+
+	public static String visitField(String sourceFolder, Field field,
+			AnalyticsResult result) {
+		AnalyticsData data = result.getAnalyticsData();
+		AnalyticsClass objectType = data.getClassById(field.getClassId());
+		Collection<AnalyticsRule> rules = data.getRulesByFieldId(field.getId());
+
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("sourceFolder", sourceFolder);
+		map.put("ruleFolder", UrlFactory.RULE_FOLDER);
+		map.put("objectTypeFolder", UrlFactory.OBJECT_TYPE_FOLDER);
+		map.put("fieldFolder", UrlFactory.FIELD_FOLDER);
+
+		map.put("field", field);
+		map.put("objectType", objectType);
+		map.put("rules", rules);
+
+		if (field.getFieldType() == Field.FieldType.DOUBLE
+				|| field.getFieldType() == Field.FieldType.DATE
+				|| field.getFieldType() == Field.FieldType.INT) {
+			Collection<RangeCheckCause> causes = result
+					.getRangeCheckCausesByFieldId(field.getId());
+			Collection<Restriction> restrictions = data
+					.getRestrictionsByFieldId(field.getId());
+			map.put("ranges", "Ranges:"
+					+ MissingRangesReportVisitor.visitRanges(
+							UrlFactory.PREVIOUS_FOLDER, restrictions, causes));
+		} else {
+			map.put("ranges", "");
+		}
+
+		String myTemplate = readFile("field.htm");
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,176 +0,0 @@
-package org.drools.analytics.report.html;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.drools.analytics.components.Field;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.Restriction;
-import org.drools.analytics.dao.AnalyticsData;
-import org.drools.analytics.dao.DataTree;
-import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
-import org.drools.analytics.report.components.RangeCheckCause;
-import org.drools.base.evaluators.Operator;
-import org.mvel.TemplateInterpreter;
-
-class MissingRangesReportVisitor extends ReportVisitor {
-
-	public static Collection<String> visitRestrictionsCollection(
-			String sourceFolder, Collection<Restriction> restrictions,
-			Collection<RangeCheckCause> causes) {
-		DataTree<Object, DataRow> dt = new DataTree<Object, DataRow>();
-		Collection<String> stringRows = new ArrayList<String>();
-
-		for (RangeCheckCause cause : causes) {
-			dt.put(cause.getValueAsObject(), new DataRow(null, null, cause
-					.getOperator(), cause.getValueAsString()));
-		}
-
-		for (Restriction r : restrictions) {
-			if (r instanceof LiteralRestriction) {
-				try {
-					LiteralRestriction restriction = (LiteralRestriction) r;
-
-					dt.put(restriction.getValueAsObject(), new DataRow(
-							restriction.getRuleId(), restriction.getRuleName(),
-							restriction.getOperator(), restriction
-									.getValueAsString()));
-				} catch (Exception e) {
-					e.printStackTrace();
-				}
-			}
-		}
-
-		DataRow previous = null;
-		for (Iterator<DataRow> iterator = dt.values().iterator(); iterator
-				.hasNext();) {
-			DataRow current = iterator.next();
-
-			if (previous != null) {
-				// Check if previous and current are from the same rule.
-				if (previous.ruleId == null && current.ruleId == null
-						&& !previous.operator.equals(Operator.EQUAL)
-						&& !previous.operator.equals(Operator.NOT_EQUAL)
-						&& !current.operator.equals(Operator.EQUAL)
-						&& !current.operator.equals(Operator.NOT_EQUAL)) {
-					// Combine these two.
-					stringRows.add("Missing : " + previous + " .. " + current);
-
-					current = iterator.next();
-
-				} else if (previous.ruleId != null
-						&& previous.ruleId.equals(current.ruleId)) {
-					// Combine these two.
-					stringRows.add(UrlFactory.getRuleUrl(sourceFolder,
-							current.ruleId, current.ruleName)
-							+ " : "
-							+ previous.toString()
-							+ " "
-							+ current.toString());
-
-					current = iterator.next();
-
-				} else if (!iterator.hasNext()) { // If this is last row
-					// Print previous and current if they were not merged.
-					processRangeOutput(previous, stringRows, sourceFolder);
-					processRangeOutput(current, stringRows, sourceFolder);
-
-				} else { // If they are not from the same rule
-					// Print previous.
-					processRangeOutput(previous, stringRows, sourceFolder);
-				}
-			} else if (!iterator.hasNext()) {
-				processRangeOutput(current, stringRows, sourceFolder);
-			}
-
-			// Set current as previous.
-			previous = current;
-		}
-
-		return stringRows;
-	}
-
-	public static String visitRanges(String sourceFolder,
-			Collection<Restriction> restrictions,
-			Collection<RangeCheckCause> causes) {
-		Map<String, Object> map = new HashMap<String, Object>();
-
-		map.put("lines", visitRestrictionsCollection(sourceFolder,
-				restrictions, causes));
-
-		String myTemplate = readFile("ranges.htm");
-
-		String result = TemplateInterpreter.evalToString(myTemplate, map);
-
-		return result;
-	}
-
-	private static void processRangeOutput(DataRow dataRow,
-			Collection<String> stringRows, String sourceFolder) {
-
-		if (dataRow.ruleId == null) {
-			stringRows.add("Missing : " + dataRow.toString());
-		} else {
-			stringRows.add(UrlFactory.getRuleUrl(sourceFolder, dataRow.ruleId,
-					dataRow.ruleName)
-					+ " : " + dataRow.toString());
-		}
-	}
-
-	public static String visitRangeCheckMessage(String sourceFolder,
-			AnalyticsRangeCheckMessage message, AnalyticsData data) {
-		Collection<Restriction> restrictions = data
-				.getRestrictionsByFieldId(message.getFaulty().getId());
-		Field field = (Field) message.getFaulty();
-
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("header", processHeader(sourceFolder));
-		map.put("sourceFolder", sourceFolder);
-		map.put("fieldFolder", sourceFolder + "/" + UrlFactory.FIELD_FOLDER);
-		map.put("objectTypeFolder", sourceFolder + "/"
-				+ UrlFactory.OBJECT_TYPE_FOLDER);
-		map
-				.put("packageFolder", sourceFolder + "/"
-						+ UrlFactory.PACKAGE_FOLDER);
-		map.put("cssStyle", createStyleTag(sourceFolder + "/"
-				+ UrlFactory.CSS_FOLDER + "/" + UrlFactory.CSS_BASIC));
-
-		map.put("field", field);
-		map.put("objectType", data.getClassById(field.getClassId()));
-		map.put("ranges", visitRanges(UrlFactory.THIS_FOLDER, restrictions,
-				message.getCauses()));
-
-		String myTemplate = readFile("missingRange.htm");
-
-		String result = TemplateInterpreter.evalToString(myTemplate, map);
-
-		return result;
-	}
-}
-
-class DataRow implements Comparable<DataRow> {
-	public String ruleName;
-	protected Integer ruleId;
-	protected Operator operator;
-	protected String value;
-
-	public int compareTo(DataRow o) {
-		return operator.getOperatorString().compareTo(
-				o.operator.getOperatorString());
-	}
-
-	public DataRow(Integer ruleId, String ruleName, Operator operator,
-			String valueAsString) {
-		this.ruleId = ruleId;
-		this.ruleName = ruleName;
-		this.operator = operator;
-		this.value = valueAsString;
-	}
-
-	public String toString() {
-		return operator.getOperatorString() + " " + value;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/MissingRangesReportVisitor.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/MissingRangesReportVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,176 @@
+package org.drools.verifier.report.html;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.dao.AnalyticsData;
+import org.drools.verifier.dao.DataTree;
+import org.drools.verifier.report.components.AnalyticsRangeCheckMessage;
+import org.drools.verifier.report.components.RangeCheckCause;
+import org.mvel.templates.TemplateRuntime;
+
+class MissingRangesReportVisitor extends ReportVisitor {
+
+	public static Collection<String> visitRestrictionsCollection(
+			String sourceFolder, Collection<Restriction> restrictions,
+			Collection<RangeCheckCause> causes) {
+		DataTree<Object, DataRow> dt = new DataTree<Object, DataRow>();
+		Collection<String> stringRows = new ArrayList<String>();
+
+		for (RangeCheckCause cause : causes) {
+			dt.put(cause.getValueAsObject(), new DataRow(null, null, cause
+					.getOperator(), cause.getValueAsString()));
+		}
+
+		for (Restriction r : restrictions) {
+			if (r instanceof LiteralRestriction) {
+				try {
+					LiteralRestriction restriction = (LiteralRestriction) r;
+
+					dt.put(restriction.getValueAsObject(), new DataRow(
+							restriction.getRuleId(), restriction.getRuleName(),
+							restriction.getOperator(), restriction
+									.getValueAsString()));
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+
+		DataRow previous = null;
+		for (Iterator<DataRow> iterator = dt.values().iterator(); iterator
+				.hasNext();) {
+			DataRow current = iterator.next();
+
+			if (previous != null) {
+				// Check if previous and current are from the same rule.
+				if (previous.ruleId == null && current.ruleId == null
+						&& !previous.operator.equals(Operator.EQUAL)
+						&& !previous.operator.equals(Operator.NOT_EQUAL)
+						&& !current.operator.equals(Operator.EQUAL)
+						&& !current.operator.equals(Operator.NOT_EQUAL)) {
+					// Combine these two.
+					stringRows.add("Missing : " + previous + " .. " + current);
+
+					current = iterator.next();
+
+				} else if (previous.ruleId != null
+						&& previous.ruleId.equals(current.ruleId)) {
+					// Combine these two.
+					stringRows.add(UrlFactory.getRuleUrl(sourceFolder,
+							current.ruleId, current.ruleName)
+							+ " : "
+							+ previous.toString()
+							+ " "
+							+ current.toString());
+
+					current = iterator.next();
+
+				} else if (!iterator.hasNext()) { // If this is last row
+					// Print previous and current if they were not merged.
+					processRangeOutput(previous, stringRows, sourceFolder);
+					processRangeOutput(current, stringRows, sourceFolder);
+
+				} else { // If they are not from the same rule
+					// Print previous.
+					processRangeOutput(previous, stringRows, sourceFolder);
+				}
+			} else if (!iterator.hasNext()) {
+				processRangeOutput(current, stringRows, sourceFolder);
+			}
+
+			// Set current as previous.
+			previous = current;
+		}
+
+		return stringRows;
+	}
+
+	public static String visitRanges(String sourceFolder,
+			Collection<Restriction> restrictions,
+			Collection<RangeCheckCause> causes) {
+		Map<String, Object> map = new HashMap<String, Object>();
+
+		map.put("lines", visitRestrictionsCollection(sourceFolder,
+				restrictions, causes));
+
+		String myTemplate = readFile("ranges.htm");
+
+		String result = String.valueOf(TemplateRuntime.eval(myTemplate, map));
+
+		return result;
+	}
+
+	private static void processRangeOutput(DataRow dataRow,
+			Collection<String> stringRows, String sourceFolder) {
+
+		if (dataRow.ruleId == null) {
+			stringRows.add("Missing : " + dataRow.toString());
+		} else {
+			stringRows.add(UrlFactory.getRuleUrl(sourceFolder, dataRow.ruleId,
+					dataRow.ruleName)
+					+ " : " + dataRow.toString());
+		}
+	}
+
+	public static String visitRangeCheckMessage(String sourceFolder,
+			AnalyticsRangeCheckMessage message, AnalyticsData data) {
+		Collection<Restriction> restrictions = data
+				.getRestrictionsByFieldId(message.getFaulty().getId());
+		Field field = (Field) message.getFaulty();
+
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("header", processHeader(sourceFolder));
+		map.put("sourceFolder", sourceFolder);
+		map.put("fieldFolder", sourceFolder + "/" + UrlFactory.FIELD_FOLDER);
+		map.put("objectTypeFolder", sourceFolder + "/"
+				+ UrlFactory.OBJECT_TYPE_FOLDER);
+		map
+				.put("packageFolder", sourceFolder + "/"
+						+ UrlFactory.PACKAGE_FOLDER);
+		map.put("cssStyle", createStyleTag(sourceFolder + "/"
+				+ UrlFactory.CSS_FOLDER + "/" + UrlFactory.CSS_BASIC));
+
+		map.put("field", field);
+		map.put("objectType", data.getClassById(field.getClassId()));
+		map.put("ranges", visitRanges(UrlFactory.THIS_FOLDER, restrictions,
+				message.getCauses()));
+
+		String myTemplate = readFile("missingRange.htm");
+
+		String result = String.valueOf(TemplateRuntime.eval(myTemplate, map));
+
+		return result;
+	}
+}
+
+class DataRow implements Comparable<DataRow> {
+	public String ruleName;
+	protected Integer ruleId;
+	protected Operator operator;
+	protected String value;
+
+	public int compareTo(DataRow o) {
+		return operator.getOperatorString().compareTo(
+				o.operator.getOperatorString());
+	}
+
+	public DataRow(Integer ruleId, String ruleName, Operator operator,
+			String valueAsString) {
+		this.ruleId = ruleId;
+		this.ruleName = ruleName;
+		this.operator = operator;
+		this.value = valueAsString;
+	}
+
+	public String toString() {
+		return operator.getOperatorString() + " " + value;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportModeller.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportModeller.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,70 +0,0 @@
-package org.drools.analytics.report.html;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.mvel.TemplateInterpreter;
-
-abstract class ReportModeller {
-
-	protected static String formPage(String sourceFolder, String content) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		String myTemplate = AnalyticsMessagesVisitor.readFile("frame.htm");
-
-		map.put("cssStyle", ReportVisitor.createStyleTag(sourceFolder + "/"
-				+ UrlFactory.CSS_FOLDER + "/" + UrlFactory.CSS_BASIC));
-		map.put("sourceFolder", sourceFolder);
-		map.put("header", ReportVisitor.processHeader(sourceFolder));
-		map.put("content", content);
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-
-	public static void copyFile(String destination, String filename)
-			throws IOException {
-
-		File source = new File(ComponentsReportModeller.class.getResource(
-				filename).getFile());
-		File dest = new File(destination + File.separator + filename);
-
-		if (!dest.exists()) {
-			dest.createNewFile();
-		}
-		InputStream in = null;
-		OutputStream out = null;
-		try {
-			in = new FileInputStream(source);
-			out = new FileOutputStream(dest);
-
-			// Transfer bytes from in to out
-			byte[] buf = new byte[1024];
-			int len;
-			while ((len = in.read(buf)) > 0) {
-				out.write(buf, 0, len);
-			}
-		} finally {
-			in.close();
-			out.close();
-		}
-
-	}
-
-	protected static void writeToFile(String fileName, String text) {
-		try {
-			FileWriter fstream = new FileWriter(fileName);
-			BufferedWriter out = new BufferedWriter(fstream);
-			out.write(text);
-			out.close();
-		} catch (Exception e) {
-			System.err.println(e.getMessage());
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportModeller.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportModeller.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportModeller.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportModeller.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,71 @@
+package org.drools.verifier.report.html;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.mvel.templates.TemplateRuntime;
+
+
+abstract class ReportModeller {
+
+	protected static String formPage(String sourceFolder, String content) {
+		Map<String, Object> map = new HashMap<String, Object>();
+		String myTemplate = AnalyticsMessagesVisitor.readFile("frame.htm");
+
+		map.put("cssStyle", ReportVisitor.createStyleTag(sourceFolder + "/"
+				+ UrlFactory.CSS_FOLDER + "/" + UrlFactory.CSS_BASIC));
+		map.put("sourceFolder", sourceFolder);
+		map.put("header", ReportVisitor.processHeader(sourceFolder));
+		map.put("content", content);
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+
+	public static void copyFile(String destination, String filename)
+			throws IOException {
+
+		File source = new File(ComponentsReportModeller.class.getResource(
+				filename).getFile());
+		File dest = new File(destination + File.separator + filename);
+
+		if (!dest.exists()) {
+			dest.createNewFile();
+		}
+		InputStream in = null;
+		OutputStream out = null;
+		try {
+			in = new FileInputStream(source);
+			out = new FileOutputStream(dest);
+
+			// Transfer bytes from in to out
+			byte[] buf = new byte[1024];
+			int len;
+			while ((len = in.read(buf)) > 0) {
+				out.write(buf, 0, len);
+			}
+		} finally {
+			in.close();
+			out.close();
+		}
+
+	}
+
+	protected static void writeToFile(String fileName, String text) {
+		try {
+			FileWriter fstream = new FileWriter(fileName);
+			BufferedWriter out = new BufferedWriter(fstream);
+			out.write(text);
+			out.close();
+		} catch (Exception e) {
+			System.err.println(e.getMessage());
+		}
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,54 +0,0 @@
-package org.drools.analytics.report.html;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.mvel.TemplateInterpreter;
-
-abstract class ReportVisitor {
-
-	protected static String processHeader(String folder) {
-		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("sourceFolder", folder);
-
-		map.put("objectTypesFile", UrlFactory.HTML_FILE_INDEX);
-		map.put("packagesFile", UrlFactory.HTML_FILE_PACKAGES);
-		map.put("messagesFile", UrlFactory.HTML_FILE_ANALYTICS_MESSAGES);
-
-		String myTemplate = readFile("header.htm");
-
-		return TemplateInterpreter.evalToString(myTemplate, map);
-	}
-
-	protected static String readFile(String fileName) {
-		StringBuffer str = new StringBuffer("");
-		try {
-			BufferedReader reader = new BufferedReader(new InputStreamReader(
-					ReportVisitor.class.getResourceAsStream(fileName)));
-			String line = null;
-			while ((line = reader.readLine()) != null) {
-				str.append(line);
-				str.append("\n");
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		} catch (NullPointerException e) {
-			System.err.println("File " + fileName + " was not found.");
-			e.printStackTrace();
-		}
-		return str.toString();
-	}
-
-	protected static String createStyleTag(String path) {
-		StringBuffer str = new StringBuffer("");
-
-		str.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"");
-		str.append(path);
-		str.append("\" />");
-
-		return str.toString();
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportVisitor.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/ReportVisitor.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportVisitor.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/ReportVisitor.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,55 @@
+package org.drools.verifier.report.html;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.mvel.templates.TemplateRuntime;
+
+
+abstract class ReportVisitor {
+
+	protected static String processHeader(String folder) {
+		Map<String, Object> map = new HashMap<String, Object>();
+		map.put("sourceFolder", folder);
+
+		map.put("objectTypesFile", UrlFactory.HTML_FILE_INDEX);
+		map.put("packagesFile", UrlFactory.HTML_FILE_PACKAGES);
+		map.put("messagesFile", UrlFactory.HTML_FILE_VERIFIER_MESSAGES);
+
+		String myTemplate = readFile("header.htm");
+
+		return String.valueOf(TemplateRuntime.eval(myTemplate, map));
+	}
+
+	protected static String readFile(String fileName) {
+		StringBuffer str = new StringBuffer("");
+		try {
+			BufferedReader reader = new BufferedReader(new InputStreamReader(
+					ReportVisitor.class.getResourceAsStream(fileName)));
+			String line = null;
+			while ((line = reader.readLine()) != null) {
+				str.append(line);
+				str.append("\n");
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		} catch (NullPointerException e) {
+			System.err.println("File " + fileName + " was not found.");
+			e.printStackTrace();
+		}
+		return str.toString();
+	}
+
+	protected static String createStyleTag(String path) {
+		StringBuffer str = new StringBuffer("");
+
+		str.append("<link rel=\"stylesheet\" type=\"text/css\" href=\"");
+		str.append(path);
+		str.append("\" />");
+
+		return str.toString();
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/UrlFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/UrlFactory.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/UrlFactory.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,52 +0,0 @@
-package org.drools.analytics.report.html;
-
-import org.drools.analytics.components.AnalyticsRule;
-
-/**
- * 
- * @author Toni Rikkola
- */
-class UrlFactory {
-
-	public static final String THIS_FOLDER = ".";
-	public static final String PREVIOUS_FOLDER = "..";
-
-	public static final String SOURCE_FOLDER = "report";
-	public static final String OBJECT_TYPE_FOLDER = "objectTypes";
-	public static final String FIELD_FOLDER = "fields";
-	public static final String RULE_FOLDER = "rules";
-	public static final String PACKAGE_FOLDER = "packages";
-	public static final String CSS_FOLDER = "css";
-
-	public static final String CSS_BASIC = "basic.css";
-
-	public static final String IMAGES_FOLDER = "images";
-
-	public static final String HTML_FILE_INDEX = "index.htm";
-	public static final String HTML_FILE_PACKAGES = "packages.htm";
-	public static final String HTML_FILE_ANALYTICS_MESSAGES = "analyticsMessages.htm";
-
-	/**
-	 * Finds a link to object if one exists.
-	 * 
-	 * @param o
-	 *            Object that might have a page that can be linked.
-	 * @return Link to objects page or the toString() text if no link could not
-	 *         be created.
-	 */
-	public static String getUrl(Object o) {
-		if (o instanceof AnalyticsRule) {
-			AnalyticsRule rule = (AnalyticsRule) o;
-			return getRuleUrl(UrlFactory.RULE_FOLDER, rule.getId(), rule
-					.getRuleName());
-		}
-
-		return o.toString();
-	}
-
-	static String getRuleUrl(String sourceFolder, int ruleId, String ruleName) {
-		return "<a href=\"" + sourceFolder + "/" + RULE_FOLDER + "/" + ruleId
-				+ ".htm\">" + ruleName + "</a>";
-	}
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/UrlFactory.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/report/html/UrlFactory.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/UrlFactory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/verifier/report/html/UrlFactory.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,52 @@
+package org.drools.verifier.report.html;
+
+import org.drools.verifier.components.AnalyticsRule;
+
+/**
+ * 
+ * @author Toni Rikkola
+ */
+class UrlFactory {
+
+	public static final String THIS_FOLDER = ".";
+	public static final String PREVIOUS_FOLDER = "..";
+
+	public static final String SOURCE_FOLDER = "report";
+	public static final String OBJECT_TYPE_FOLDER = "objectTypes";
+	public static final String FIELD_FOLDER = "fields";
+	public static final String RULE_FOLDER = "rules";
+	public static final String PACKAGE_FOLDER = "packages";
+	public static final String CSS_FOLDER = "css";
+
+	public static final String CSS_BASIC = "basic.css";
+
+	public static final String IMAGES_FOLDER = "images";
+
+	public static final String HTML_FILE_INDEX = "index.htm";
+	public static final String HTML_FILE_PACKAGES = "packages.htm";
+	public static final String HTML_FILE_VERIFIER_MESSAGES = "verifierMessages.htm";
+
+	/**
+	 * Finds a link to object if one exists.
+	 * 
+	 * @param o
+	 *            Object that might have a page that can be linked.
+	 * @return Link to objects page or the toString() text if no link could not
+	 *         be created.
+	 */
+	public static String getUrl(Object o) {
+		if (o instanceof AnalyticsRule) {
+			AnalyticsRule rule = (AnalyticsRule) o;
+			return getRuleUrl(UrlFactory.RULE_FOLDER, rule.getId(), rule
+					.getRuleName());
+		}
+
+		return o.toString();
+	}
+
+	static String getRuleUrl(String sourceFolder, int ruleId, String ruleName) {
+		return "<a href=\"" + sourceFolder + "/" + RULE_FOLDER + "/" + ruleId
+				+ ".htm\">" + ruleName + "</a>";
+	}
+
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics)

Deleted: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/Consequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/Consequence.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/Consequence.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,31 +0,0 @@
-#created on: 18.10.2007
-package org.drools.analytics.consequence
-
-#list any import classes here.
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.TextConsequence;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
-
-#declare any global variables here
-global AnalyticsResult result;
-
-
-rule "No action - possibly commented out"
-	when
-		$c :TextConsequence(
-			( text == null || text matches "" )
-		)
-
-		$r :AnalyticsRule(
-			id == $c.ruleId
-		)
-	then
-		result.add( new AnalyticsMessage(
-								Severity.WARNING,
-								MessageType.MISSING_COMPONENT,
-								$r,
-								$r + " has no RHS." ) );
-end

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/Consequence.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/Consequence.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/Consequence.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/Consequence.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,31 @@
+#created on: 18.10.2007
+package org.drools.verifier.consequence
+
+#list any import classes here.
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.TextConsequence;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
+
+#declare any global variables here
+global AnalyticsResult result;
+
+
+rule "No action - possibly commented out"
+	when
+		$c :TextConsequence(
+			( text == null || text matches "" )
+		)
+
+		$r :AnalyticsRule(
+			id == $c.ruleId
+		)
+	then
+		result.add( new AnalyticsMessage(
+								Severity.WARNING,
+								MessageType.MISSING_COMPONENT,
+								$r,
+								$r + " has no RHS." ) );
+end

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/equivalence (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/equivalence)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/equivalence/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/equivalence/Rules.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/equivalence/Rules.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +1,9 @@
 #created on: 7.9.2007
-package org.drools.analytics.equivalency.rules
+package org.drools.verifier.equivalency.rules
 
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
 
 #
 # Only checks for redundant rule specifications where consequences are not redundant, 

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/incoherence)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/incoherence/Patterns.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/Patterns.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,20 +1,20 @@
 #created on: 14.11.2007
-package org.drools.analytics.incoherence
+package org.drools.verifier.incoherence
 
 #list any import classes here.
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.VariableRestriction;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.MissingRange;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.VariableRestriction;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.MissingRange;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
 
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResult;
 
 import java.util.Collection;
 import java.util.ArrayList;

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/incoherence/Restrictions.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incoherence/Restrictions.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,17 +1,17 @@
 #created on: 13.11.2007
-package org.drools.analytics.incoherence
+package org.drools.verifier.incoherence
 
 #list any import classes here.
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.VariableRestriction;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.MissingRange;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.VariableRestriction;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.MissingRange;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.dao.AnalyticsResult;
 
 import java.util.Collection;
 import java.util.ArrayList;

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incompatibility (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/incompatibility)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incompatibility/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/incompatibility/Restrictions.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/incompatibility/Restrictions.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,16 +1,16 @@
 #created on: 23.02.2008
-package org.drools.analytics.incompatibility
+package org.drools.verifier.incompatibility
 
 #list any import classes here.
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.Field.FieldType;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.MissingRange;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
-import org.drools.analytics.report.components.Incompatibility;
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Field.FieldType;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.MissingRange;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.report.components.Incompatibility;
+import org.drools.verifier.dao.AnalyticsResult;
 
 import org.drools.base.evaluators.Operator;
 
@@ -20,187 +20,6 @@
 #
 # If two LiteralRestrictions are in conflict.
 #
-# Depandencies: None
-# Example: Pattern1( a == "b", a != "b" )
-#
-rule "Incompatibility LiteralRestrictions"
-	when
-		$left :LiteralRestriction(
-			# Not >= and <=, because ( a <=, a >= ) works.
-			# And not < or > because they are handled in a separate rule.
-			( operator != Operator.GREATER_OR_EQUAL || != Operator.LESS_OR_EQUAL || != Operator.LESS || != Operator.GREATER )
-		)
-
-		$right :LiteralRestriction(
-			fieldId == $left.fieldId,
-			valueType == $left.valueType,
-			id != $left.id,
-			# Operator needs to be reversed to what the other one has.
-			eval( operator == MissingRange.getReversedOperator( $left.getOperator() ))
-		)
-
-		eval( $left.compareValues( $right ) == 0 )
-
-		# Check that there is not already a pair with these values.
-		not Incompatibility( 
-			left == $left, 
-			right == $right 
-		)
-		not Incompatibility( 
-			right == $left, 
-			left == $right 
-		)
-	then
-		insert( new Incompatibility( $left, $right ));
-end
-
-#
-# If two LiteralRestrictions are in conflict.
-#
-# Depandencies: None
-# Example: Pattern( a >= 10 && a < 10 )
-#
-rule "Incompatibility LiteralRestrictions with ranges, greater or equal - less"
-	when
-		$left :LiteralRestriction(
-			operator == Operator.GREATER_OR_EQUAL 
-		)
-
-		$right :LiteralRestriction(
-			restrictionType == $left.restrictionType,
-			fieldId == $left.fieldId,
-			valueType == $left.valueType,
-			operator == Operator.LESS,
-			id != $left.id
-		)
-		
-		eval( $left.compareValues( $right ) == 0 )
-
-		# Check that there is not already a pair with these values.
-		not Incompatibility( 
-			left == $left, 
-			right == $right 
-		)
-		not Incompatibility( 
-			right == $left, 
-			left == $right 
-		)
-	then
-		insert( new Incompatibility( $left, $right ));
-end
-
-#
-# If two LiteralRestrictions are in conflict.
-#
-# Depandencies: None
-# Example: Pattern( a > 10 && a <= 10 )
-#
-rule "Incompatibility LiteralRestrictions with ranges, greater - less or equal"
-	when
-		$left :LiteralRestriction(
-			operator == Operator.GREATER
-		)
-
-		$right :LiteralRestriction(
-			restrictionType == $left.restrictionType,
-			fieldId == $left.fieldId,
-			valueType == $left.valueType,
-			operator == Operator.LESS_OR_EQUAL,
-			id != $left.id
-		)
-		
-		eval( $left.compareValues( $right ) == 0 )
-
-		# Check that there is not already a pair with these values.
-		not Incompatibility( 
-			left == $left, 
-			right == $right 
-		)
-		not Incompatibility( 
-			right == $left, 
-			left == $right 
-		)
-	then
-		insert( new Incompatibility( $left, $right ));
-end
-
-
-#
-# If two LiteralRestrictions are in conflict.
-#
-# Depandencies: None
-# Example: Pattern( a < 10 && a > 9 )
-#
-rule "Incompatibility LiteralRestrictions with ranges, less - greater for ints and dates"
-	when
-		$left :LiteralRestriction(
-			operator == Operator.LESS,
-			( valueType == Field.FieldType.INT || == Field.FieldType.DATE )
-		)
-
-		$right :LiteralRestriction(
-			restrictionType == $left.restrictionType,
-			fieldId == $left.fieldId,
-			valueType == $left.valueType,
-			operator == Operator.GREATER,
-			id != $left.id
-		)
-		
-		eval( $left.compareValues( $right ) == 1 )
-		
-		# Check that there is not already a pair with these values.
-		not Incompatibility( 
-			left == $left, 
-			right == $right 
-		)
-		not Incompatibility( 
-			right == $left, 
-			left == $right 
-		)
-	then
-		insert( new Incompatibility( $left, $right ));
-end
-
-#
-# If two LiteralRestrictions are in conflict.
-#
-# Depandencies: None
-# Example: Pattern( a >= 10 && a <= 9 )
-#
-rule "Incompatibility LiteralRestrictions with ranges, less or equal - greater or equal for ints and dates"
-	when
-		$left :LiteralRestriction(
-			operator == Operator.GREATER_OR_EQUAL,
-			( valueType == Field.FieldType.INT || == Field.FieldType.DATE )
-		)
-
-		$right :LiteralRestriction(
-			restrictionType == $left.restrictionType,
-			fieldId == $left.fieldId,
-			valueType == $left.valueType,
-			operator == Operator.LESS_OR_EQUAL,
-			id != $left.id
-		)
-		
-		eval( $left.compareValues( $right ) == 1 )
-		
-		# Check that there is not already a pair with these values.
-		not Incompatibility( 
-			left == $left, 
-			right == $right 
-		)
-		not Incompatibility( 
-			right == $left, 
-			left == $right 
-		)
-	then
-		insert( new Incompatibility( $left, $right ));
-end
-
-/*
-#
-# If two LiteralRestrictions are in conflict.
-#
 # Type: Error
 # Depandencies: None
 # Example: IncorencePattern( a < 1 && a == 10 )
@@ -244,6 +63,7 @@
 								) );
 end
 
+/*
 #
 # If two LiteralRestrictions are in conflict.
 #

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/missingEquality (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/missingEquality)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/missingEquality/MissingEquality.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/missingEquality/MissingEquality.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,18 +1,18 @@
 #created on: 31.10.2007
-package org.drools.analytics.missingEquality
+package org.drools.verifier.missingEquality
 
 #list any import classes here.
 import org.drools.base.evaluators.Operator;
 import org.drools.base.evaluators.MatchesEvaluatorsDefinition;
 import org.drools.base.evaluators.SetEvaluatorsDefinition;
 
-import org.drools.analytics.components.VariableRestriction;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.report.components.MissingRange;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.components.VariableRestriction;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.report.components.MissingRange;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.dao.AnalyticsResult;
 
 
 

Added: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/opposites/Restrictions.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/opposites/Restrictions.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,199 @@
+#created on: 23.02.2008
+package org.drools.verifier.opposites
+
+#list any import classes here.
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Field.FieldType;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.MissingRange;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.report.components.Opposites;
+import org.drools.verifier.dao.AnalyticsResult;
+
+import org.drools.base.evaluators.Operator;
+
+#declare any global variables here
+global AnalyticsResult result;
+
+#
+# If two LiteralRestrictions are in conflict.
+#
+# Depandencies: None
+# Example: Pattern1( a == "b", a != "b" )
+#
+rule "Opposite LiteralRestrictions"
+	when
+		$left :LiteralRestriction(
+			# Not >= and <=, because ( a <=, a >= ) works.
+			# And not < or > because they are handled in a separate rule.
+			( operator != Operator.GREATER_OR_EQUAL || != Operator.LESS_OR_EQUAL || != Operator.LESS || != Operator.GREATER )
+		)
+
+		$right :LiteralRestriction(
+			fieldId == $left.fieldId,
+			valueType == $left.valueType,
+			id != $left.id,
+			# Operator needs to be reversed to what the other one has.
+			eval( operator == MissingRange.getReversedOperator( $left.getOperator() ))
+		)
+
+		eval( $left.compareValues( $right ) == 0 )
+
+		# Check that there is not already a pair with these values.
+		not Opposites( 
+			left == $left, 
+			right == $right 
+		)
+		not Opposites( 
+			right == $left, 
+			left == $right 
+		)
+	then
+		insert( new Opposites( $left, $right ));
+end
+
+#
+# If two LiteralRestrictions are in conflict.
+#
+# Depandencies: None
+# Example: Pattern( a >= 10 && a < 10 )
+#
+rule "Opposite LiteralRestrictions with ranges, greater or equal - less"
+	when
+		$left :LiteralRestriction(
+			operator == Operator.GREATER_OR_EQUAL 
+		)
+
+		$right :LiteralRestriction(
+			restrictionType == $left.restrictionType,
+			fieldId == $left.fieldId,
+			valueType == $left.valueType,
+			operator == Operator.LESS,
+			id != $left.id
+		)
+		
+		eval( $left.compareValues( $right ) == 0 )
+
+		# Check that there is not already a pair with these values.
+		not Opposites( 
+			left == $left, 
+			right == $right 
+		)
+		not Opposites( 
+			right == $left, 
+			left == $right 
+		)
+	then
+		insert( new Opposites( $left, $right ));
+end
+
+#
+# If two LiteralRestrictions are in conflict.
+#
+# Depandencies: None
+# Example: Pattern( a > 10 && a <= 10 )
+#
+rule "Opposite LiteralRestrictions with ranges, greater - less or equal"
+	when
+		$left :LiteralRestriction(
+			operator == Operator.GREATER
+		)
+
+		$right :LiteralRestriction(
+			restrictionType == $left.restrictionType,
+			fieldId == $left.fieldId,
+			valueType == $left.valueType,
+			operator == Operator.LESS_OR_EQUAL,
+			id != $left.id
+		)
+		
+		eval( $left.compareValues( $right ) == 0 )
+
+		# Check that there is not already a pair with these values.
+		not Opposites( 
+			left == $left, 
+			right == $right 
+		)
+		not Opposites( 
+			right == $left, 
+			left == $right 
+		)
+	then
+		insert( new Opposites( $left, $right ));
+end
+
+
+#
+# If two LiteralRestrictions are in conflict.
+#
+# Depandencies: None
+# Example: Pattern( a < 10 && a > 9 )
+#
+rule "Opposite LiteralRestrictions with ranges, less - greater for ints and dates"
+	when
+		$left :LiteralRestriction(
+			operator == Operator.LESS,
+			( valueType == Field.FieldType.INT || == Field.FieldType.DATE )
+		)
+
+		$right :LiteralRestriction(
+			restrictionType == $left.restrictionType,
+			fieldId == $left.fieldId,
+			valueType == $left.valueType,
+			operator == Operator.GREATER,
+			id != $left.id
+		)
+		
+		eval( $left.compareValues( $right ) == 1 )
+		
+		# Check that there is not already a pair with these values.
+		not Opposites( 
+			left == $left, 
+			right == $right 
+		)
+		not Opposites( 
+			right == $left, 
+			left == $right 
+		)
+	then
+		insert( new Opposites( $left, $right ));
+end
+
+#
+# If two LiteralRestrictions are in conflict.
+#
+# Depandencies: None
+# Example: Pattern( a >= 10 && a <= 9 )
+#
+rule "Opposite LiteralRestrictions with ranges, less or equal - greater or equal for ints and dates"
+	when
+		$left :LiteralRestriction(
+			operator == Operator.GREATER_OR_EQUAL,
+			( valueType == Field.FieldType.INT || == Field.FieldType.DATE )
+		)
+
+		$right :LiteralRestriction(
+			restrictionType == $left.restrictionType,
+			fieldId == $left.fieldId,
+			valueType == $left.valueType,
+			operator == Operator.LESS_OR_EQUAL,
+			id != $left.id
+		)
+		
+		eval( $left.compareValues( $right ) == 1 )
+		
+		# Check that there is not already a pair with these values.
+		not Opposites( 
+			left == $left, 
+			right == $right 
+		)
+		not Opposites( 
+			right == $left, 
+			left == $right 
+		)
+	then
+		insert( new Opposites( $left, $right ));
+end
+

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/PatternOrder.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/PatternOrder.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/PatternOrder.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,20 +1,20 @@
 #created on: 27.10.2007
-package org.drools.analytics.optimisation
+package org.drools.verifier.optimisation
 
 #list any import classes here.
 import java.util.Collection;
 import java.util.ArrayList;
 
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.OperatorDescr;
-import org.drools.analytics.components.AnalyticsEvalDescr;
-import org.drools.analytics.components.AnalyticsComponent;
-import org.drools.analytics.components.AnalyticsComponentType;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.AnalyticsEvalDescr;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.AnalyticsComponentType;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.dao.AnalyticsResult;
 
 
 #declare any global variables here

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/optimisation/RestrictionOrder.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/optimisation/RestrictionOrder.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,5 +1,5 @@
 #created on: 25.10.2007
-package org.drools.analytics.optimisation.drl
+package org.drools.verifier.optimisation.drl
 
 #list any import classes here.
 import java.util.Collection;
@@ -8,17 +8,17 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.base.evaluators.MatchesEvaluatorsDefinition;
 
-import org.drools.analytics.components.Restriction;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.OperatorDescr;
-import org.drools.analytics.components.AnalyticsPredicateDescr;
-import org.drools.analytics.components.AnalyticsComponent;
-import org.drools.analytics.components.AnalyticsComponentType;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.AnalyticsPredicateDescr;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.AnalyticsComponentType;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.dao.AnalyticsResult;
 
 #declare any global variables here
 global AnalyticsResult result;

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Clean.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,13 +1,13 @@
 #created on: 24.9.2007
-package org.drools.analytics.rangeChecks.cleanUp
+package org.drools.verifier.rangeChecks.cleanUp
 
 import org.drools.base.evaluators.Operator;
 
-import org.drools.analytics.components.*;  
-import org.drools.analytics.report.components.Gap;  
-import org.drools.analytics.report.components.MissingNumberPattern;
+import org.drools.verifier.components.*;  
+import org.drools.verifier.report.components.Gap;  
+import org.drools.verifier.report.components.MissingNumberPattern;
 
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResult;
 
 #declare any global variables here
 global AnalyticsResult result;
@@ -18,20 +18,20 @@
 # Type: None
 # Depandencies: Needs at least one of the following packages or rules to fire.
 #
-# 		package org.drools.analytics.rangeChecks.patterns;
+# 		package org.drools.verifier.rangeChecks.patterns;
 #			rule "Range check for number patterns"
 #			rule "Range check for number patterns, !="
-#		package org.drools.analytics.rangeChecks.integers
+#		package org.drools.verifier.rangeChecks.integers
 #			rule "Range check for integers, if smaller than or equal is missing"
 #			rule "Range check for integers, if greater than or equal is missing"
 #			rule "Range check for integers, equal and greater than"
 #			rule "Range check for integers, equal and smaller than"
-#		package org.drools.analytics.rangeChecks.doubles
+#		package org.drools.verifier.rangeChecks.doubles
 #			rule "Range check for doubles, if smaller than or equal is missing"
 #			rule "Range check for doubles, if greater than or equal is missing"
 #			rule "Range check for doubles, equal and greater than"
 #			rule "Range check for doubles, equal and smaller than"
-#		package org.drools.analytics.rangeChecks.dates
+#		package org.drools.verifier.rangeChecks.dates
 #			rule "Range check for dates, if smaller than or equal is missing"
 #			rule "Range check for dates, if greater than or equal is missing"
 #			rule "Range check for dates, equal and greater than"
@@ -72,7 +72,7 @@
 # Type: None
 # Depandencies: Needs at least one of the following packages or rules to fire.
 #
-#		package org.drools.analytics.rangeChecks.integers
+#		package org.drools.verifier.rangeChecks.integers
 #			rule "Range check for integers, if smaller than or equal is missing"
 #			rule "Range check for integers, if greater than or equal is missing"
 #			rule "Range check for integers, equal and greater than"
@@ -124,7 +124,7 @@
 # Type: None
 # Depandencies: Needs at least one of the following packages or rules to fire.
 #
-#		package org.drools.analytics.rangeChecks.integers
+#		package org.drools.verifier.rangeChecks.integers
 #			rule "Range check for integers, if smaller than or equal is missing"
 #			rule "Range check for integers, if greater than or equal is missing"
 #			rule "Range check for integers, equal and greater than"
@@ -176,7 +176,7 @@
 # Type: None
 # Depandencies: Needs at least one of the following packages or rules to fire.
 #
-#		package org.drools.analytics.rangeChecks.doubles
+#		package org.drools.verifier.rangeChecks.doubles
 #			rule "Range check for doubles, if smaller than or equal is missing"
 #			rule "Range check for doubles, if greater than or equal is missing"
 #			rule "Range check for doubles, equal and greater than"
@@ -228,7 +228,7 @@
 # Type: None
 # Depandencies: Needs at least one of the following packages or rules to fire.
 #
-#		package org.drools.analytics.rangeChecks.doubles
+#		package org.drools.verifier.rangeChecks.doubles
 #			rule "Range check for doubles, if smaller than or equal is missing"
 #			rule "Range check for doubles, if greater than or equal is missing"
 #			rule "Range check for doubles, equal and greater than"
@@ -280,7 +280,7 @@
 # Type: None
 # Depandencies: Needs at least one of the following packages or rules to fire.
 #
-#		package org.drools.analytics.rangeChecks.dates
+#		package org.drools.verifier.rangeChecks.dates
 #			rule "Range check for dates, if smaller than or equal is missing"
 #			rule "Range check for dates, if greater than or equal is missing"
 #			rule "Range check for dates, equal and greater than"
@@ -332,7 +332,7 @@
 # Type: None
 # Depandencies: Needs at least one of the following packages or rules to fire.
 #
-#		package org.drools.analytics.rangeChecks.dates
+#		package org.drools.verifier.rangeChecks.dates
 #			rule "Range check for dates, if smaller than or equal is missing"
 #			rule "Range check for dates, if greater than or equal is missing"
 #			rule "Range check for dates, equal and greater than"

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Dates.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,18 +1,18 @@
 #created on: 7.6.2007
-package org.drools.analytics.rangeChecks.dates;
+package org.drools.verifier.rangeChecks.dates;
 
 #list any import classes here.
 import org.drools.base.evaluators.Operator;
 
-import org.drools.analytics.components.*;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Gap;
+import org.drools.verifier.components.*;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.Gap;
 
 import java.util.Date;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
 
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResult;
 
 #declare any global variables here
 global AnalyticsResult result;

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Doubles.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,14 +1,14 @@
 #created on: 7.6.2007
-package org.drools.analytics.rangeChecks.doubles;
+package org.drools.verifier.rangeChecks.doubles;
 
 #list any import classes here.
 import org.drools.base.evaluators.Operator;
 
-import org.drools.analytics.components.*;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Gap;
+import org.drools.verifier.components.*;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.Gap;
 
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResult;
 
 #declare any global variables here
 global AnalyticsResult result;

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Integers.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,13 +1,13 @@
 #created on: 7.6.2007
-package org.drools.analytics.rangeChecks.integers;
+package org.drools.verifier.rangeChecks.integers;
 
 #list any import classes here.
 import org.drools.base.evaluators.Operator;
 
-import org.drools.analytics.components.*;
-import org.drools.analytics.report.components.Gap;
+import org.drools.verifier.components.*;
+import org.drools.verifier.report.components.Gap;
 
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResult;
 
 global AnalyticsResult result;
 

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Patterns.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Patterns.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,19 +1,19 @@
 #created on: 7.6.2007
-package org.drools.analytics.rangeChecks.patterns;
+package org.drools.verifier.rangeChecks.patterns;
 
 #list any import classes here.
 import org.drools.base.evaluators.Operator;
 
-import org.drools.analytics.components.*;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.MissingNumberPattern;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.FindMissingNumber;
+import org.drools.verifier.components.*;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.MissingNumberPattern;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.FindMissingNumber;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import org.drools.analytics.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResult;
 
 #declare any global variables here
 global AnalyticsResult result;

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Variables.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Variables.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/rangeChecks/Variables.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +1,9 @@
-package org.drools.analytics.rangeChecks.variables;
+package org.drools.verifier.rangeChecks.variables;
 
 #list any import classes here.
-import org.drools.analytics.components.*;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Gap;
+import org.drools.verifier.components.*;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.Gap;
 
 import java.util.ArrayList;
 import java.util.TreeSet;

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Consequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Consequence.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Consequence.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,10 +1,10 @@
 #created on: 29.11.2007
-package org.drools.analytics.redundancy.consequences
+package org.drools.verifier.redundancy.consequences
 
 #list any import classes here.
-import org.drools.analytics.components.TextConsequence;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
+import org.drools.verifier.components.TextConsequence;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
 
 #declare any global variables here
 

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Notes.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Notes.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Notes.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,5 +1,5 @@
 #created on: 12.10.2007
-package org.drools.analytics.redundancy
+package org.drools.verifier.redundancy
 
 #list any import classes here.
 global AnalyticsResult result;
@@ -10,22 +10,22 @@
 import java.util.Collection;
 import java.util.ArrayList;
 
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
 
 
 #
 # Dependencies:
 #
 #	Needs at least one rule from following rules:
-#		package org.drools.analytics.redundancy.restrictions
+#		package org.drools.verifier.redundancy.restrictions
 #			rule "Find redundant VariableRestriction"
 #			rule "Find redundant LiteralRestriction"
 #
@@ -53,7 +53,7 @@
 #
 # Dependencies:
 #
-#		package org.drools.analytics.redundancy.possibilities
+#		package org.drools.verifier.redundancy.possibilities
 #			rule "Find pattern possibility redundancy"
 #
 rule "Find redundant pattern possibilities from rule possibilities"

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Patterns.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Patterns.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +1,9 @@
 #created on: 7.9.2007
-package org.drools.analytics.redundancy.patterns
+package org.drools.verifier.redundancy.patterns
 
-import org.drools.analytics.components.*;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
+import org.drools.verifier.components.*;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
 
 #
 # Only checks for redundant pattern specifications,

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Possibilities.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,13 +1,13 @@
 #created on: 7.9.2007
-package org.drools.analytics.redundancy.possibilities
+package org.drools.verifier.redundancy.possibilities
 
-import org.drools.analytics.components.*;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
-import org.drools.analytics.report.components.PartialRedundancy;
-import org.drools.analytics.report.components.Subsumption;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
+import org.drools.verifier.components.*;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.PartialRedundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
 
 import java.util.ArrayList;
 
@@ -17,10 +17,10 @@
 #
 # Depandencies: Needs at least one rule from both packages.
 #
-#		package org.drools.analytics.redundancy.patterns
+#		package org.drools.verifier.redundancy.patterns
 #			rule "Find redundant Patterns with restrictions"
 #			rule "Find redundant Patterns without restrictions"
-#		package org.drools.analytics.redundancy.restrictions
+#		package org.drools.verifier.redundancy.restrictions
 #			rule "Find redundant VariableRestriction"
 #			rule "Find redundant LiteralRestriction"
 #
@@ -103,13 +103,13 @@
 # Depandencies:
 #
 #	Needs at least one rule from these packages:
-#		package org.drools.analytics.equivalency.rules
+#		package org.drools.verifier.equivalency.rules
 #			rule "Find equivalent Rules"
-#		package org.drools.analytics.redundancy.rules
+#		package org.drools.verifier.redundancy.rules
 #			rule "Find redundant Rules, strong redundancy"
 #
 #	And this rule:
-#		package org.drools.analytics.redundancy.possibilities
+#		package org.drools.verifier.redundancy.possibilities
 #			rule "Find pattern possibility redundancy"
 #
 # Example: rule "1" Pattern( a == b) end

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Restrictions.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +1,9 @@
 #created on: 7.9.2007
-package org.drools.analytics.redundancy.restrictions
+package org.drools.verifier.redundancy.restrictions
 
-import org.drools.analytics.components.*;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
+import org.drools.verifier.components.*;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
 
 #
 # Depandencies: None

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Rules.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Rules.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,9 +1,9 @@
 #created on: 7.9.2007
-package org.drools.analytics.redundancy.rules
+package org.drools.verifier.redundancy.rules
 
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
 
 #
 # Only checks for redundant rule specifications,
@@ -11,7 +11,7 @@
 #
 # Depandencies:
 #
-#		package org.drools.analytics.redundancy.consequences
+#		package org.drools.verifier.redundancy.consequences
 #			rule "Find redundant TextConsequences"
 #
 rule "Find redundant Rules, strong redundancy"

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/redundancy/Warnings.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/redundancy/Warnings.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,5 +1,5 @@
 #created on: 9.12.2007
-package org.drools.analytics.redundancy
+package org.drools.verifier.redundancy
 
 #list any import classes here.
 global AnalyticsResult result;
@@ -10,27 +10,27 @@
 import java.util.Collection;
 import java.util.ArrayList;
 
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
 
 #
 # Dependencies:
 #
 #	Needs at least one rule from these packages:
-#		package org.drools.analytics.equivalency.rules
+#		package org.drools.verifier.equivalency.rules
 #			rule "Find equivalent Rules"
-#		package org.drools.analytics.redundancy.rules
+#		package org.drools.verifier.redundancy.rules
 #			rule "Find redundant Rules, strong redundancy"
 #
 #	And this rule:
-#		package org.drools.analytics.redundancy.possibilities
+#		package org.drools.verifier.redundancy.possibilities
 #			rule "Find rule possibility redundancy"
 #
 rule "Find redundant rule possibilities from different rules"
@@ -83,13 +83,13 @@
 # Dependencies:
 #
 #	Needs at least one rule from these packages:
-#		package org.drools.analytics.equivalency.rules
+#		package org.drools.verifier.equivalency.rules
 #			rule "Find equivalent Rules"
-#		package org.drools.analytics.redundancy.rules
+#		package org.drools.verifier.redundancy.rules
 #			rule "Find redundant Rules, strong redundancy"
 #
 #	And this rule:
-#		package org.drools.analytics.redundancy.possibilities
+#		package org.drools.verifier.redundancy.possibilities
 #			rule "Find rule possibility redundancy"
 #
 rule "Find subsumptant rule possibilities from different rules"

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/report (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/report)

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/reports (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/reports)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/reports/RangeCheckReports.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/reports/RangeCheckReports.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/reports/RangeCheckReports.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,13 +1,13 @@
 #created on: 7.6.2007
-package org.drools.analytics.rangeChecks.reports;
+package org.drools.verifier.rangeChecks.reports;
 
 #list any import classes here.
-import org.drools.analytics.components.Field;
-import org.drools.analytics.report.components.AnalyticsRangeCheckMessage;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.MissingRange;
-import org.drools.analytics.report.components.Severity;
-import org.drools.analytics.report.components.MessageType;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.report.components.AnalyticsRangeCheckMessage;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.MissingRange;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.MessageType;
 
 import java.util.ArrayList;
 
@@ -19,20 +19,20 @@
 # Dependencies:
 #
 #	Needs at least one of the following packages or rules to fire:
-# 		package org.drools.analytics.rangeChecks.patterns;
+# 		package org.drools.verifier.rangeChecks.patterns;
 #			rule "Range check for number patterns"
 #			rule "Range check for number patterns, !="
-#		package org.drools.analytics.rangeChecks.integers
+#		package org.drools.verifier.rangeChecks.integers
 #			rule "Range check for integers, if smaller than or equal is missing"
 #			rule "Range check for integers, if greater than or equal is missing"
 #			rule "Range check for integers, equal and greater than"
 #			rule "Range check for integers, equal and smaller than"
-#		package org.drools.analytics.rangeChecks.doubles
+#		package org.drools.verifier.rangeChecks.doubles
 #			rule "Range check for doubles, if smaller than or equal is missing"
 #			rule "Range check for doubles, if greater than or equal is missing"
 #			rule "Range check for doubles, equal and greater than"
 #			rule "Range check for doubles, equal and smaller than"
-#		package org.drools.analytics.rangeChecks.dates
+#		package org.drools.verifier.rangeChecks.dates
 #			rule "Range check for dates, if smaller than or equal is missing"
 #			rule "Range check for dates, if greater than or equal is missing"
 #			rule "Range check for dates, equal and greater than"
@@ -40,7 +40,7 @@
 #
 #	The following rules are used to clean up the data that this rule uses,
 #	but they are not always necessary:
-#		package org.drools.analytics.rangeChecks.cleanUp
+#		package org.drools.verifier.rangeChecks.cleanUp
 #			rule "Merge gaps"
 #			rule "Remove useless integer gaps lesser or lesser and equal"
 #			rule "Remove useless integer gaps greater or greater and equal"

Copied: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/subsumption)

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/subsumption/Possibilities.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,14 +1,14 @@
 #created on: 8.1.2008
-package org.drools.analytics.subsumption.patterns
+package org.drools.verifier.subsumption.patterns
 
-import org.drools.analytics.components.Restriction;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.Subsumption;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.analytics.report.components.RedundancyType;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.RedundancyType;
 
 
 #declare any global variables here
@@ -19,7 +19,7 @@
 #
 # Depandencies: Needs at least one rule.
 #
-#		package org.drools.analytics.redundancy.patterns
+#		package org.drools.verifier.redundancy.patterns
 #			rule "Find redundant Patterns with restrictions"
 #			rule "Find redundant Patterns without restrictions"
 #
@@ -85,10 +85,10 @@
 #
 # Depandencies: Needs at least one rule from either one of the following packages.
 #
-#		package org.drools.analytics.subsumption.patterns
+#		package org.drools.verifier.subsumption.patterns
 #			rule "Find subsumptant pattern possibilities"
 #
-#		package org.drools.analytics.redundancy.patterns
+#		package org.drools.verifier.redundancy.patterns
 #			rule "Find redundant Patterns with restrictions"
 #			rule "Find redundant Patterns without restrictions"
 #

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/analytics/subsumption/Restrictions.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,11 +1,11 @@
 #created on: 28.1.2008
-package org.drools.analytics.subsumption.patterns
+package org.drools.verifier.subsumption.patterns
 
 import org.drools.base.evaluators.Operator;
 
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.Field.FieldType;
-import org.drools.analytics.report.components.Subsumption;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Field.FieldType;
+import org.drools.verifier.report.components.Subsumption;
 
 
 

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyticsTestStandalone.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyticsTestStandalone.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyticsTestStandalone.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,148 @@
+package org.drools.verifier;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.Dialect.AnalysisResult;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.verifier.Analyzer;
+import org.drools.verifier.components.AnalyticsClass;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.AnalyticsRangeCheckMessage;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ * This is a sample file to launch a rule package from a rule source file.
+ */
+class AnalyticsTestStandalone {
+
+	public static final void main(String[] args) {
+		try {
+
+			Collection<String> fileNames = new ArrayList<String>();
+
+			// Test data
+			// fileNames.add("MissingRangesForDates.drl");
+			// fileNames.add("MissingRangesForDoubles.drl");
+			// fileNames.add("MissingRangesForInts.drl");
+			// fileNames.add("MissingRangesForVariables.drl");
+			// fileNames.add("Misc.drl");
+			// fileNames.add("Misc2.drl");
+			fileNames.add("Misc3.drl");
+			// fileNames.add("ConsequenceTest.drl");
+			// fileNames.add("optimisation/OptimisationRestrictionOrderTest.drl");
+			// fileNames.add("optimisation/OptimisationPatternOrderTest.drl");
+
+			DrlParser parser = new DrlParser();
+			Analyzer a = new Analyzer();
+
+			for (String s : fileNames) {
+				PackageDescr descr = parser.parse(new InputStreamReader(
+						Analyzer.class.getResourceAsStream(s)));
+				a.addPackageDescr(descr);
+			}
+
+			a.fireAnalysis();
+			// System.out.print(a.getResultAsPlainText());
+			// System.out.print(a.getResultAsXML());
+			// a.writeComponentsHTML("/stash/");
+			// a.writeComponentsHTML("/Users/michaelneale/foo.html");
+			a.writeComponentsHTML("c:/");
+
+			AnalyticsResult result = a.getResult();
+			Collection<AnalyticsMessageBase> msgs = result
+					.getBySeverity(Severity.ERROR);
+
+			for (Iterator iterator = msgs.iterator(); iterator.hasNext();) {
+				AnalyticsMessageBase msg = (AnalyticsMessageBase) iterator
+						.next();
+				System.out.println("ERR: " + msg.getMessage());
+			}
+
+			msgs = result.getBySeverity(Severity.WARNING);
+			for (Iterator iterator = msgs.iterator(); iterator.hasNext();) {
+				AnalyticsMessageBase msg = (AnalyticsMessageBase) iterator
+						.next();
+				System.out.println("WARN (" + msg.getClass().getSimpleName()
+						+ "): " + msg.getMessage());
+				System.out.println("\t FAULT: ["
+						+ msg.getClass().getSimpleName() + "] "
+						+ msg.getFaulty());
+				if (msg instanceof AnalyticsMessage) {
+					System.out.println("\t CAUSES (message):");
+					AnalyticsMessage amsg = (AnalyticsMessage) msg;
+					for (Iterator iterator2 = amsg.getCauses().iterator(); iterator2
+							.hasNext();) {
+						Cause c = (Cause) iterator2.next();
+						System.out.println("\t\t ["
+								+ c.getClass().getSimpleName() + "]" + c);
+
+					}
+
+				} else if (msg instanceof AnalyticsRangeCheckMessage) {
+					System.out.println("\t CAUSES (range):");
+					AnalyticsRangeCheckMessage amsg = (AnalyticsRangeCheckMessage) msg;
+					for (Iterator iterator2 = amsg.getCauses().iterator(); iterator2
+							.hasNext();) {
+						Cause c = (Cause) iterator2.next();
+						System.out.println("\t\t" + c);
+
+					}
+
+				}
+			}
+
+			msgs = result.getBySeverity(Severity.NOTE);
+			for (Iterator iterator = msgs.iterator(); iterator.hasNext();) {
+				AnalyticsMessageBase msg = (AnalyticsMessageBase) iterator
+						.next();
+				System.out.println("NOTE: " + msg.getMessage());
+				System.out.println("\t" + msg.getFaulty());
+			}
+
+			Collection<AnalyticsClass> classes = result.getAnalyticsData()
+					.getAllClasses();
+			for (Iterator iterator = classes.iterator(); iterator.hasNext();) {
+				AnalyticsClass c = (AnalyticsClass) iterator.next();
+
+				Collection<AnalyticsRule> cr = result.getAnalyticsData()
+						.getRulesByClassId(c.getId());
+				System.err.println("Class rules:" + cr);
+				Set<Field> flds = c.getFields();
+				for (Iterator iterator2 = flds.iterator(); iterator2.hasNext();) {
+					Field f = (Field) iterator2.next();
+					cr = result.getAnalyticsData().getRulesByFieldId(f.getId());
+					System.err.println("Field rules: " + cr);
+
+				}
+			}
+
+			// System.err.println(a.getResultAsPlainText());
+			// System.out.println(result.toString());
+		} catch (Throwable t) {
+			t.printStackTrace();
+		}
+	}
+
+	private static void writeToFile(String fileName, String text) {
+		try {
+			FileWriter fstream = new FileWriter(fileName);
+			BufferedWriter out = new BufferedWriter(fstream);
+			out.write(text);
+			out.close();
+		} catch (Exception e) {
+			System.err.println(e.getMessage());
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyzerTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/AnalyzerTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyzerTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/AnalyzerTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,78 @@
+package org.drools.verifier;
+
+import java.io.InputStreamReader;
+
+import junit.framework.TestCase;
+
+import org.drools.RuleBase;
+import org.drools.compiler.DrlParser;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.verifier.Analyzer;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.report.components.Severity;
+
+public class AnalyzerTest extends TestCase {
+
+	public void testAnalyzer() throws Exception {
+		Analyzer anal = new Analyzer();
+
+		DrlParser p = new DrlParser();
+		InputStreamReader reader = new InputStreamReader(this.getClass().getResourceAsStream("Misc3.drl"));
+		PackageDescr pkg = p.parse(reader);
+		assertFalse(p.hasErrors());
+
+		anal.addPackageDescr(pkg);
+		anal.fireAnalysis();
+
+		AnalyticsResult result = anal.getResult();
+		assertNotNull(result);
+		assertEquals(0, result.getBySeverity(Severity.ERROR).size());
+		assertEquals(10, result.getBySeverity(Severity.WARNING).size());
+		assertEquals(1, result.getBySeverity(Severity.NOTE).size());
+
+
+		//check it again
+		anal = new Analyzer();
+
+		p = new DrlParser();
+		reader = new InputStreamReader(this.getClass().getResourceAsStream("Misc3.drl"));
+		pkg = p.parse(reader);
+		assertFalse(p.hasErrors());
+
+		anal.addPackageDescr(pkg);
+		anal.fireAnalysis();
+
+		result = anal.getResult();
+		assertNotNull(result);
+		assertEquals(0, result.getBySeverity(Severity.ERROR).size());
+		assertEquals(10, result.getBySeverity(Severity.WARNING).size());
+		assertEquals(1, result.getBySeverity(Severity.NOTE).size());
+
+
+
+
+	}
+
+	public void testCacheKnowledgeBase() throws Exception {
+		Analyzer anal = new Analyzer();
+		DrlParser p = new DrlParser();
+		InputStreamReader reader = new InputStreamReader(this.getClass().getResourceAsStream("Misc3.drl"));
+		PackageDescr pkg = p.parse(reader);
+		assertFalse(p.hasErrors());
+
+		anal.addPackageDescr(pkg);
+		anal.fireAnalysis();
+
+		RuleBase original = Analyzer.verifierKnowledgeBase;
+
+		Analyzer anal2 = new Analyzer();
+
+		assertSame(original, Analyzer.verifierKnowledgeBase);
+
+		anal2.reloadAnalysisKnowledgeBase();
+		assertNotSame(original, Analyzer.verifierKnowledgeBase);
+
+
+	}
+
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/ConsequenceTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/ConsequenceTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/ConsequenceTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/ConsequenceTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,64 @@
+package org.drools.verifier;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ *
+ * @author Toni Rikkola
+ *
+ */
+public class ConsequenceTest extends TestBase {
+
+	public void testMissingConsequence() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Consequence.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"No action - possibly commented out"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("ConsequenceTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertFalse(rulesThatHadErrors.contains("Has a consequence 1"));
+		assertTrue(rulesThatHadErrors.remove("Missing consequence 1"));
+		assertTrue(rulesThatHadErrors.remove("Missing consequence 2"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/FindMissingNumberTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/FindMissingNumberTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/FindMissingNumberTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/FindMissingNumberTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,131 @@
+package org.drools.verifier;
+
+import java.math.BigDecimal;
+
+import org.drools.verifier.FindMissingNumber;
+
+import junit.framework.TestCase;
+
+public class FindMissingNumberTest extends TestCase {
+
+	public void testfindSumPattern() {
+		// Sum +2 missing number 4
+		assertTrue(FindMissingNumber.findSumPattern(
+				new BigDecimal[] { BigDecimal.valueOf(2),
+						BigDecimal.valueOf(6), BigDecimal.valueOf(8),
+						BigDecimal.valueOf(10) }).doubleValue() == 4);
+		// +10 missing number 50
+		assertTrue(FindMissingNumber.findSumPattern(
+				new BigDecimal[] { BigDecimal.valueOf(10),
+						BigDecimal.valueOf(20), BigDecimal.valueOf(30),
+						BigDecimal.valueOf(40), BigDecimal.valueOf(60),
+						BigDecimal.valueOf(70) }).doubleValue() == 50);
+		// +66 missing number 308
+		assertTrue(FindMissingNumber.findSumPattern(
+				new BigDecimal[] { BigDecimal.valueOf(110),
+						BigDecimal.valueOf(176), BigDecimal.valueOf(242),
+						BigDecimal.valueOf(374) }).doubleValue() == 308);
+
+		// Deduction -2 missing number 8
+		assertTrue(FindMissingNumber.findSumPattern(
+				new BigDecimal[] { BigDecimal.valueOf(10),
+						BigDecimal.valueOf(6), BigDecimal.valueOf(4),
+						BigDecimal.valueOf(2) }).doubleValue() == 8);
+		// -337 missing number -11
+		assertTrue(FindMissingNumber.findSumPattern(
+				new BigDecimal[] { BigDecimal.valueOf(663),
+						BigDecimal.valueOf(326), BigDecimal.valueOf(-348),
+						BigDecimal.valueOf(-685) }).doubleValue() == -11);
+		// -31 missing number 4350
+		assertTrue(FindMissingNumber.findSumPattern(
+				new BigDecimal[] { BigDecimal.valueOf(4443),
+						BigDecimal.valueOf(4412), BigDecimal.valueOf(4381),
+						BigDecimal.valueOf(4319) }).doubleValue() == 4350);
+
+		// Not valid
+		// Not in pattern.
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] {
+				BigDecimal.valueOf(1), BigDecimal.valueOf(2),
+				BigDecimal.valueOf(4), BigDecimal.valueOf(6),
+				BigDecimal.valueOf(8), BigDecimal.valueOf(11) }) == null);
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] {
+				BigDecimal.valueOf(5), BigDecimal.valueOf(3),
+				BigDecimal.valueOf(54353), BigDecimal.valueOf(54554),
+				BigDecimal.valueOf(232), BigDecimal.valueOf(123) }) == null);
+		// No missing values.
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] {
+				BigDecimal.valueOf(2), BigDecimal.valueOf(4),
+				BigDecimal.valueOf(6), BigDecimal.valueOf(8),
+				BigDecimal.valueOf(10), BigDecimal.valueOf(12),
+				BigDecimal.valueOf(14) }) == null);
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] {
+				BigDecimal.valueOf(10), BigDecimal.valueOf(20),
+				BigDecimal.valueOf(30), BigDecimal.valueOf(40),
+				BigDecimal.valueOf(50), BigDecimal.valueOf(60) }) == null);
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] {
+				BigDecimal.valueOf(-15), BigDecimal.valueOf(-10),
+				BigDecimal.valueOf(-5), BigDecimal.valueOf(0),
+				BigDecimal.valueOf(5), BigDecimal.valueOf(10),
+				BigDecimal.valueOf(15) }) == null);
+		// Under 4 values always returns null.
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] {
+				BigDecimal.valueOf(2), BigDecimal.valueOf(4),
+				BigDecimal.valueOf(6) }) == null);
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] {
+				BigDecimal.valueOf(2), BigDecimal.valueOf(4) }) == null);
+		assertTrue(FindMissingNumber.findSumPattern(new BigDecimal[] { BigDecimal
+				.valueOf(2) }) == null);
+	}
+
+	public void testFindMultiplicationPattern() {
+
+		// Multiplication
+		// *2 missing number 4
+		assertTrue(FindMissingNumber.findMultiplicationPattern(
+				new BigDecimal[] { BigDecimal.valueOf(2),
+						BigDecimal.valueOf(8), BigDecimal.valueOf(16),
+						BigDecimal.valueOf(32), BigDecimal.valueOf(64) })
+				.doubleValue() == 4);
+		// *17 missing number 383214
+		assertTrue(FindMissingNumber.findMultiplicationPattern(
+				new BigDecimal[] { BigDecimal.valueOf(78),
+						BigDecimal.valueOf(1326), BigDecimal.valueOf(22542),
+						BigDecimal.valueOf(6514638) }).doubleValue() == 383214);
+		// *1,23 missing number 2016.6957
+		assertTrue(FindMissingNumber.findMultiplicationPattern(
+				new BigDecimal[] { BigDecimal.valueOf(1333),
+						BigDecimal.valueOf(1639.59),
+						BigDecimal.valueOf(2480.535711),
+						BigDecimal.valueOf(3051.05892453) }).doubleValue() == 2016.6957);
+
+		// Division
+		// /2 (*0.5) missing number 128
+		assertTrue(FindMissingNumber.findMultiplicationPattern(
+				new BigDecimal[] { BigDecimal.valueOf(256),
+						BigDecimal.valueOf(64), BigDecimal.valueOf(32),
+						BigDecimal.valueOf(16), BigDecimal.valueOf(8),
+						BigDecimal.valueOf(4), BigDecimal.valueOf(2) })
+				.doubleValue() == 128);
+		// /10 (*0.1) missing number 1
+		assertTrue(FindMissingNumber.findMultiplicationPattern(
+				new BigDecimal[] { BigDecimal.valueOf(10000),
+						BigDecimal.valueOf(1000), BigDecimal.valueOf(100),
+						BigDecimal.valueOf(10), BigDecimal.valueOf(0.1),
+						BigDecimal.valueOf(0.01) }).doubleValue() == 1);
+
+		// Not valid
+		// Not in pattern.
+		assertTrue(FindMissingNumber.findMultiplicationPattern(new BigDecimal[] {
+				BigDecimal.valueOf(111.2), BigDecimal.valueOf(3323),
+				BigDecimal.valueOf(234.434), BigDecimal.valueOf(44343),
+				BigDecimal.valueOf(434) }) == null);
+		assertTrue(FindMissingNumber.findMultiplicationPattern(new BigDecimal[] {
+				BigDecimal.valueOf(1), BigDecimal.valueOf(2),
+				BigDecimal.valueOf(3), BigDecimal.valueOf(4),
+				BigDecimal.valueOf(5), BigDecimal.valueOf(6),
+				BigDecimal.valueOf(7), BigDecimal.valueOf(5),
+				BigDecimal.valueOf(4), BigDecimal.valueOf(3),
+				BigDecimal.valueOf(2), BigDecimal.valueOf(1),
+				BigDecimal.valueOf(1), BigDecimal.valueOf(1) }) == null);
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/PatternSolverTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/PatternSolverTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/PatternSolverTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/PatternSolverTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,392 @@
+package org.drools.verifier;
+
+import java.util.List;
+import java.util.Set;
+
+import org.drools.verifier.PatternSolver;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+
+import junit.framework.TestCase;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+public class PatternSolverTest extends TestCase {
+
+	/**
+	 * <pre>
+	 *      and
+	 *     /   \
+	 *  descr  descr2
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr && descr2
+	 */
+	public void testAddBasicAnd() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+
+		OperatorDescr operatorDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(operatorDescr);
+		solver.add(literalRestriction);
+		solver.add(literalRestriction2);
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(1, list.size());
+		assertEquals(2, list.get(0).size());
+	}
+
+	/**
+	 * <pre>
+	 *       or
+	 *      /  \
+	 *  descr descr2
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr<br>
+	 * or<br>
+	 * descr2
+	 */
+	public void testAddBasicOr() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+
+		OperatorDescr operatorDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(operatorDescr);
+		solver.add(literalRestriction);
+		solver.add(literalRestriction2);
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(2, list.size());
+		assertEquals(1, list.get(0).size());
+		assertEquals(1, list.get(1).size());
+	}
+
+	/**
+	 * <pre>
+	 *       or
+	 *      /  \
+	 *  descr  and
+	 *         / \
+	 *    descr2 descr3
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr <br>
+	 * or<br>
+	 * descr2 && descr3
+	 */
+	public void testAddOrAnd() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+		LiteralRestriction literalRestriction3 = new LiteralRestriction();
+
+		OperatorDescr orDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(orDescr);
+		solver.add(literalRestriction);
+		solver.add(andDescr);
+		solver.add(literalRestriction2);
+		solver.add(literalRestriction3);
+		solver.end();
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(2, list.size());
+
+		assertEquals(1, list.get(0).size());
+		assertTrue(list.get(0).contains(literalRestriction));
+
+		assertEquals(2, list.get(1).size());
+		assertTrue(list.get(1).contains(literalRestriction2));
+		assertTrue(list.get(1).contains(literalRestriction3));
+	}
+
+	/**
+	 * <pre>
+	 *       and
+	 *      /  \
+	 *  descr   or
+	 *         / \
+	 *    descr2 descr3
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr && descr2 <br>
+	 * or<br>
+	 * descr && descr3
+	 */
+	public void testAddAndOr() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+		LiteralRestriction literalRestriction3 = new LiteralRestriction();
+
+		OperatorDescr orDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(orDescr);
+		solver.add(literalRestriction);
+		solver.add(andDescr);
+		solver.add(literalRestriction2);
+		solver.add(literalRestriction3);
+		solver.end();
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(2, list.size());
+
+		assertEquals(2, list.get(0).size());
+		assertTrue(list.get(0).contains(literalRestriction));
+		assertTrue(list.get(0).contains(literalRestriction2));
+
+		assertEquals(2, list.get(1).size());
+		assertTrue(list.get(1).contains(literalRestriction));
+		assertTrue(list.get(1).contains(literalRestriction3));
+	}
+
+	/**
+	 * <pre>
+	 *            and
+	 *         /        \
+	 *       or          or
+	 *      /  \         / \
+	 * descr descr2 descr3 descr4
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr && descr3<br>
+	 * or<br>
+	 * descr && descr4<br>
+	 * or<br>
+	 * descr2 && descr3<br>
+	 * or<br>
+	 * descr2 && descr4
+	 */
+	public void testAddAndOrOr() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+		LiteralRestriction literalRestriction3 = new LiteralRestriction();
+		LiteralRestriction literalRestriction4 = new LiteralRestriction();
+
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		OperatorDescr orDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		OperatorDescr orDescr2 = new OperatorDescr(OperatorDescr.Type.OR);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(andDescr);
+		solver.add(orDescr);
+		solver.add(literalRestriction);
+		solver.add(literalRestriction2);
+		solver.end();
+		solver.add(orDescr2);
+		solver.add(literalRestriction3);
+		solver.add(literalRestriction4);
+		solver.end();
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(4, list.size());
+
+		assertEquals(2, list.get(0).size());
+		assertTrue(list.get(0).contains(literalRestriction));
+		assertTrue(list.get(0).contains(literalRestriction3));
+
+		assertEquals(2, list.get(1).size());
+		assertTrue(list.get(1).contains(literalRestriction));
+		assertTrue(list.get(1).contains(literalRestriction4));
+
+		assertEquals(2, list.get(2).size());
+		assertTrue(list.get(2).contains(literalRestriction2));
+		assertTrue(list.get(2).contains(literalRestriction3));
+
+		assertEquals(2, list.get(3).size());
+		assertTrue(list.get(3).contains(literalRestriction2));
+		assertTrue(list.get(3).contains(literalRestriction4));
+	}
+
+	/**
+	 * <pre>
+	 *             or
+	 *         /        \
+	 *       and         and
+	 *      /  \         / \
+	 * descr descr2 descr3 descr4
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr && descr2<br>
+	 * or<br>
+	 * descr3 && descr4
+	 */
+	public void testAddOrAndAnd() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+		LiteralRestriction literalRestriction3 = new LiteralRestriction();
+		LiteralRestriction literalRestriction4 = new LiteralRestriction();
+
+		OperatorDescr orDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		OperatorDescr andDescr2 = new OperatorDescr(OperatorDescr.Type.AND);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(orDescr);
+		solver.add(andDescr);
+		solver.add(literalRestriction);
+		solver.add(literalRestriction2);
+		solver.end();
+		solver.add(andDescr2);
+		solver.add(literalRestriction3);
+		solver.add(literalRestriction4);
+		solver.end();
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(2, list.size());
+
+		assertEquals(2, list.get(0).size());
+		assertTrue(list.get(0).contains(literalRestriction));
+		assertTrue(list.get(0).contains(literalRestriction2));
+
+		assertEquals(2, list.get(1).size());
+		assertTrue(list.get(1).contains(literalRestriction3));
+		assertTrue(list.get(1).contains(literalRestriction4));
+	}
+
+	/**
+	 * <pre>
+	 *             or
+	 *         /        \
+	 *       and         or
+	 *      /  \         / \
+	 * descr descr2 descr3 descr4
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr && descr2<br>
+	 * or<br>
+	 * descr3<br>
+	 * or<br>
+	 * descr4
+	 */
+	public void testAddOrAndOr() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+		LiteralRestriction literalRestriction3 = new LiteralRestriction();
+		LiteralRestriction literalRestriction4 = new LiteralRestriction();
+
+		OperatorDescr orDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		OperatorDescr orDescr2 = new OperatorDescr(OperatorDescr.Type.OR);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(orDescr);
+		solver.add(andDescr);
+		solver.add(literalRestriction);
+		solver.add(literalRestriction2);
+		solver.end();
+		solver.add(orDescr2);
+		solver.add(literalRestriction3);
+		solver.add(literalRestriction4);
+		solver.end();
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(3, list.size());
+
+		assertEquals(2, list.get(0).size());
+		assertTrue(list.get(0).contains(literalRestriction));
+		assertTrue(list.get(0).contains(literalRestriction2));
+
+		assertEquals(1, list.get(1).size());
+		assertTrue(list.get(1).contains(literalRestriction3));
+
+		assertEquals(1, list.get(2).size());
+		assertTrue(list.get(2).contains(literalRestriction4));
+	}
+
+	/**
+	 * <pre>
+	 *                   and
+	 *          /         |      \
+	 *       and         or       descr5
+	 *      /  \         / \
+	 * descr descr2 descr3 descr4
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr && descr2 && descr3 && descr5<br>
+	 * or<br>
+	 * descr && descr2 && descr4 && descr5<br>
+	 */
+	public void testAddOrAndOrDescr() {
+		Pattern pattern = new Pattern();
+
+		LiteralRestriction literalRestriction = new LiteralRestriction();
+		LiteralRestriction literalRestriction2 = new LiteralRestriction();
+		LiteralRestriction literalRestriction3 = new LiteralRestriction();
+		LiteralRestriction literalRestriction4 = new LiteralRestriction();
+		LiteralRestriction literalRestriction5 = new LiteralRestriction();
+
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		OperatorDescr andDescr2 = new OperatorDescr(OperatorDescr.Type.AND);
+		OperatorDescr orDescr = new OperatorDescr(OperatorDescr.Type.OR);
+		PatternSolver solver = new PatternSolver(pattern);
+
+		solver.add(andDescr);
+		solver.add(andDescr2);
+		solver.add(literalRestriction);
+		solver.add(literalRestriction2);
+		solver.end();
+		solver.add(orDescr);
+		solver.add(literalRestriction3);
+		solver.add(literalRestriction4);
+		solver.end();
+		solver.add(literalRestriction5);
+		solver.end();
+
+		List<Set<AnalyticsComponent>> list = solver.getPossibilityLists();
+		assertEquals(2, list.size());
+
+		assertEquals(4, list.get(0).size());
+		assertTrue(list.get(0).contains(literalRestriction));
+		assertTrue(list.get(0).contains(literalRestriction2));
+		assertTrue(list.get(0).contains(literalRestriction3));
+		assertTrue(list.get(0).contains(literalRestriction5));
+
+		assertEquals(4, list.get(1).size());
+		assertTrue(list.get(1).contains(literalRestriction));
+		assertTrue(list.get(1).contains(literalRestriction2));
+		assertTrue(list.get(1).contains(literalRestriction4));
+		assertTrue(list.get(1).contains(literalRestriction4));
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckCleanTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckCleanTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckCleanTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckCleanTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,596 @@
+package org.drools.verifier;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Gap;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+public class RangeCheckCleanTest extends TestBase {
+
+	public void testUselessIntegerGapsLesser() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Clean.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Remove useless integer gaps lesser or lesser and equal"));
+
+		Collection<Object> testData = new ArrayList<Object>();
+
+		Field f = new Field();
+		testData.add(f);
+
+		// > 10 covered
+		LiteralRestriction lower = new LiteralRestriction();
+		lower.setRuleName("> 10 covered");
+		lower.setFieldId(f.getId());
+		lower.setOperator(Operator.GREATER);
+		lower.setValue("10");
+		testData.add(lower);
+
+		// == 50 covered
+		LiteralRestriction r1 = new LiteralRestriction();
+		r1.setRuleName("== 50 covered");
+		r1.setFieldId(f.getId());
+		r1.setOperator(Operator.EQUAL);
+		r1.setValue("50");
+		testData.add(r1);
+
+		// > 50 gap
+		Gap g1 = new Gap(f, Operator.GREATER, r1);
+		g1.setFiredRuleName("above");
+		testData.add(g1);
+
+		// < 50 gap
+		Gap g2 = new Gap(f, Operator.LESS, r1);
+		g2.setFiredRuleName("below");
+		testData.add(g2);
+
+		// > 70 covered
+		LiteralRestriction r2 = new LiteralRestriction();
+		r2.setRuleName("> 70 covered");
+		r2.setFieldId(f.getId());
+		r2.setOperator(Operator.GREATER);
+		r2.setValue("70");
+		testData.add(r2);
+
+		// <= 70 gap
+		Gap g3 = new Gap(f, Operator.LESS_OR_EQUAL, r2);
+		g3.setFiredRuleName("70gap");
+		testData.add(g3);
+
+		// < 100 covered
+		LiteralRestriction higher = new LiteralRestriction();
+		higher.setRuleName("< 100 covered");
+		higher.setFieldId(f.getId());
+		higher.setOperator(Operator.LESS);
+		higher.setValue("100");
+		testData.add(higher);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Field) {
+				// Do nothing
+			} else if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
+			} else if (o instanceof AnalyticsComponent) {
+				rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("> 10 covered"));
+		assertTrue(rulesThatHadErrors.remove("== 50 covered"));
+		assertTrue(rulesThatHadErrors.remove("> 70 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 100 covered"));
+		assertFalse(rulesThatHadErrors.contains("below"));
+		assertFalse(rulesThatHadErrors.contains("above"));
+		assertFalse(rulesThatHadErrors.contains("70gap"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testUselessIntegerGapsGreater() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Clean.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Remove useless integer gaps greater or greater and equal"));
+
+		Collection<Object> testData = new ArrayList<Object>();
+
+		Field f = new Field();
+		testData.add(f);
+
+		// > 10 covered
+		LiteralRestriction lower = new LiteralRestriction();
+		lower.setRuleName("> 10 covered");
+		lower.setFieldId(f.getId());
+		lower.setOperator(Operator.GREATER);
+		lower.setValue("10");
+		testData.add(lower);
+
+		// == 50 covered
+		LiteralRestriction r1 = new LiteralRestriction();
+		r1.setRuleName("== 50 covered");
+		r1.setFieldId(f.getId());
+		r1.setOperator(Operator.EQUAL);
+		r1.setValue("50");
+		testData.add(r1);
+
+		// > 50 gap
+		Gap g1 = new Gap(f, Operator.GREATER, r1);
+		g1.setFiredRuleName("above");
+		testData.add(g1);
+
+		// < 50 gap
+		Gap g2 = new Gap(f, Operator.LESS, r1);
+		g2.setFiredRuleName("below");
+		testData.add(g2);
+
+		// < 70 covered
+		LiteralRestriction r2 = new LiteralRestriction();
+		r2.setRuleName("< 70 covered");
+		r2.setFieldId(f.getId());
+		r2.setOperator(Operator.LESS);
+		r2.setValue("70");
+		testData.add(r2);
+
+		// >= 70 gap
+		Gap g3 = new Gap(f, Operator.GREATER_OR_EQUAL, r2);
+		g3.setFiredRuleName("70gap");
+		testData.add(g3);
+
+		// < 100 covered
+		LiteralRestriction higher = new LiteralRestriction();
+		higher.setRuleName("< 100 covered");
+		higher.setFieldId(f.getId());
+		higher.setOperator(Operator.LESS);
+		higher.setValue("100");
+		testData.add(higher);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Field) {
+				// Do nothing
+			} else if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
+			} else if (o instanceof AnalyticsComponent) {
+				rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("> 10 covered"));
+		assertTrue(rulesThatHadErrors.remove("== 50 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 70 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 100 covered"));
+		assertFalse(rulesThatHadErrors.contains("below"));
+		assertFalse(rulesThatHadErrors.contains("above"));
+		assertFalse(rulesThatHadErrors.contains("70gap"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testUselessDoubleGapsLesser() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Clean.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Remove useless double gaps lesser or lesser and equal"));
+
+		Collection<Object> testData = new ArrayList<Object>();
+
+		Field f = new Field();
+		testData.add(f);
+
+		// > 10.0 covered
+		LiteralRestriction lower = new LiteralRestriction();
+		lower.setRuleName("> 10.0 covered");
+		lower.setFieldId(f.getId());
+		lower.setOperator(Operator.GREATER);
+		lower.setValue("10.0");
+		testData.add(lower);
+
+		// == 50.0 covered
+		LiteralRestriction r1 = new LiteralRestriction();
+		r1.setRuleName("== 50.0 covered");
+		r1.setFieldId(f.getId());
+		r1.setOperator(Operator.EQUAL);
+		r1.setValue("50.0");
+		testData.add(r1);
+
+		// > 50.0 gap
+		Gap g1 = new Gap(f, Operator.GREATER, r1);
+		g1.setFiredRuleName("above");
+		testData.add(g1);
+
+		// < 50.0 gap
+		Gap g2 = new Gap(f, Operator.LESS, r1);
+		g2.setFiredRuleName("below");
+		testData.add(g2);
+
+		// > 70.0 covered
+		LiteralRestriction r2 = new LiteralRestriction();
+		r2.setRuleName("> 70.0 covered");
+		r2.setFieldId(f.getId());
+		r2.setOperator(Operator.GREATER);
+		r2.setValue("70.0");
+		testData.add(r2);
+
+		// <= 70.0 gap
+		Gap g3 = new Gap(f, Operator.LESS_OR_EQUAL, r2);
+		g3.setFiredRuleName("70gap");
+		testData.add(g3);
+
+		// < 100.0 covered
+		LiteralRestriction higher = new LiteralRestriction();
+		higher.setRuleName("< 100.0 covered");
+		higher.setFieldId(f.getId());
+		higher.setOperator(Operator.LESS);
+		higher.setValue("100.0");
+		testData.add(higher);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Field) {
+				// Do nothing
+			} else if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
+			} else if (o instanceof AnalyticsComponent) {
+				rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("> 10.0 covered"));
+		assertTrue(rulesThatHadErrors.remove("== 50.0 covered"));
+		assertTrue(rulesThatHadErrors.remove("> 70.0 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 100.0 covered"));
+		assertFalse(rulesThatHadErrors.contains("below"));
+		assertFalse(rulesThatHadErrors.contains("above"));
+		assertFalse(rulesThatHadErrors.contains("70gap"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testUselessDoubleGapsGreater() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Clean.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Remove useless double gaps greater or greater and equal"));
+
+		Collection<Object> testData = new ArrayList<Object>();
+
+		Field f = new Field();
+		testData.add(f);
+
+		// > 10.0 covered
+		LiteralRestriction lower = new LiteralRestriction();
+		lower.setRuleName("> 10.0 covered");
+		lower.setFieldId(f.getId());
+		lower.setOperator(Operator.GREATER);
+		lower.setValue("10.0");
+		testData.add(lower);
+
+		// == 50.0 covered
+		LiteralRestriction r1 = new LiteralRestriction();
+		r1.setRuleName("== 50.0 covered");
+		r1.setFieldId(f.getId());
+		r1.setOperator(Operator.EQUAL);
+		r1.setValue("50.0");
+		testData.add(r1);
+
+		// > 50.0 gap
+		Gap g1 = new Gap(f, Operator.GREATER, r1);
+		g1.setFiredRuleName("above");
+		testData.add(g1);
+
+		// < 50.0 gap
+		Gap g2 = new Gap(f, Operator.LESS, r1);
+		g2.setFiredRuleName("below");
+		testData.add(g2);
+
+		// < 70.0 covered
+		LiteralRestriction r2 = new LiteralRestriction();
+		r2.setRuleName("< 70.0 covered");
+		r2.setFieldId(f.getId());
+		r2.setOperator(Operator.LESS);
+		r2.setValue("70.0");
+		testData.add(r2);
+
+		// >= 70.0 gap
+		Gap g3 = new Gap(f, Operator.GREATER_OR_EQUAL, r2);
+		g3.setFiredRuleName("70gap");
+		testData.add(g3);
+
+		// < 100.0 covered
+		LiteralRestriction higher = new LiteralRestriction();
+		higher.setRuleName("< 100.0 covered");
+		higher.setFieldId(f.getId());
+		higher.setOperator(Operator.LESS);
+		higher.setValue("100.0");
+		testData.add(higher);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Field) {
+				// Do nothing
+			} else if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
+			} else if (o instanceof AnalyticsComponent) {
+				rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("> 10.0 covered"));
+		assertTrue(rulesThatHadErrors.remove("== 50.0 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 70.0 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 100.0 covered"));
+		assertFalse(rulesThatHadErrors.contains("below"));
+		assertFalse(rulesThatHadErrors.contains("above"));
+		assertFalse(rulesThatHadErrors.contains("70gap"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testUselessDateGapsLesser() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Clean.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Remove useless date gaps lesser or lesser and equal"));
+
+		Collection<Object> testData = new ArrayList<Object>();
+
+		Field f = new Field();
+		testData.add(f);
+
+		// > "01-Oct-2007" covered
+		LiteralRestriction lower = new LiteralRestriction();
+		lower.setRuleName("> 01-Oct-2007 covered");
+		lower.setFieldId(f.getId());
+		lower.setOperator(Operator.GREATER);
+		lower.setValue("01-Oct-2007");
+		testData.add(lower);
+
+		// == "10-Oct-2007" covered
+		LiteralRestriction r1 = new LiteralRestriction();
+		r1.setRuleName("== 10-Oct-2007 covered");
+		r1.setFieldId(f.getId());
+		r1.setOperator(Operator.EQUAL);
+		r1.setValue("10-Oct-2007");
+		testData.add(r1);
+
+		// > "10-Oct-2007" gap
+		Gap g1 = new Gap(f, Operator.GREATER, r1);
+		g1.setFiredRuleName("above");
+		testData.add(g1);
+
+		// < "10-Oct-2007" gap
+		Gap g2 = new Gap(f, Operator.LESS, r1);
+		g2.setFiredRuleName("below");
+		testData.add(g2);
+
+		// > "15-Oct-2007" covered
+		LiteralRestriction r2 = new LiteralRestriction();
+		r2.setRuleName("> 15-Oct-2007 covered");
+		r2.setFieldId(f.getId());
+		r2.setOperator(Operator.GREATER);
+		r2.setValue("15-Oct-2007");
+		testData.add(r2);
+
+		// <= "15-Oct-2007" gap
+		Gap g3 = new Gap(f, Operator.LESS_OR_EQUAL, r2);
+		g3.setFiredRuleName("15-Oct-2007gap");
+		testData.add(g3);
+
+		// < "20-Oct-2007" covered
+		LiteralRestriction higher = new LiteralRestriction();
+		higher.setRuleName("< 20-Oct-2007 covered");
+		higher.setFieldId(f.getId());
+		higher.setOperator(Operator.LESS);
+		higher.setValue("20-Oct-2007");
+		testData.add(higher);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Field) {
+				// Do nothing
+			} else if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
+			} else if (o instanceof AnalyticsComponent) {
+				rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("> 01-Oct-2007 covered"));
+		assertTrue(rulesThatHadErrors.remove("== 10-Oct-2007 covered"));
+		assertTrue(rulesThatHadErrors.remove("> 15-Oct-2007 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 20-Oct-2007 covered"));
+		assertFalse(rulesThatHadErrors.contains("below"));
+		assertFalse(rulesThatHadErrors.contains("above"));
+		assertFalse(rulesThatHadErrors.contains("15-Oct-2007gap"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testUselessDateGapsGreater() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Clean.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Remove useless date gaps greater or greater and equal"));
+
+		Collection<Object> testData = new ArrayList<Object>();
+
+		Field f = new Field();
+		testData.add(f);
+
+		// > "01-Oct-2007" covered
+		LiteralRestriction lower = new LiteralRestriction();
+		lower.setRuleName("> 01-Oct-2007 covered");
+		lower.setFieldId(f.getId());
+		lower.setOperator(Operator.GREATER);
+		lower.setValue("01-Oct-2007");
+		testData.add(lower);
+
+		// == "10-Oct-2007" covered
+		LiteralRestriction r1 = new LiteralRestriction();
+		r1.setRuleName("== 10-Oct-2007 covered");
+		r1.setFieldId(f.getId());
+		r1.setOperator(Operator.EQUAL);
+		r1.setValue("10-Oct-2007");
+		testData.add(r1);
+
+		// > "10-Oct-2007" gap
+		Gap g1 = new Gap(f, Operator.GREATER, r1);
+		g1.setFiredRuleName("above");
+		testData.add(g1);
+
+		// < "10-Oct-2007" gap
+		Gap g2 = new Gap(f, Operator.LESS, r1);
+		g2.setFiredRuleName("below");
+		testData.add(g2);
+
+		// < "15-Oct-2007" covered
+		LiteralRestriction r2 = new LiteralRestriction();
+		r2.setRuleName("< 15-Oct-2007 covered");
+		r2.setFieldId(f.getId());
+		r2.setOperator(Operator.LESS);
+		r2.setValue("15-Oct-2007");
+		testData.add(r2);
+
+		// >= "15-Oct-2007" gap
+		Gap g3 = new Gap(f, Operator.GREATER_OR_EQUAL, r2);
+		g3.setFiredRuleName("15-Oct-2007gap");
+		testData.add(g3);
+
+		// < "20-Oct-2007" covered
+		LiteralRestriction higher = new LiteralRestriction();
+		higher.setRuleName("< 20-Oct-2007 covered");
+		higher.setFieldId(f.getId());
+		higher.setOperator(Operator.LESS);
+		higher.setValue("20-Oct-2007");
+		testData.add(higher);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Field) {
+				// Do nothing
+			} else if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getFiredRuleName());
+			} else if (o instanceof AnalyticsComponent) {
+				rulesThatHadErrors.add(((AnalyticsComponent) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("> 01-Oct-2007 covered"));
+		assertTrue(rulesThatHadErrors.remove("== 10-Oct-2007 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 15-Oct-2007 covered"));
+		assertTrue(rulesThatHadErrors.remove("< 20-Oct-2007 covered"));
+		assertFalse(rulesThatHadErrors.contains("below"));
+		assertFalse(rulesThatHadErrors.contains("above"));
+		assertFalse(rulesThatHadErrors.contains("15-Oct-2007gap"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDatesTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDatesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDatesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDatesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,179 @@
+package org.drools.verifier;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Gap;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+public class RangeCheckDatesTest extends TestBase {
+
+	public void testFake() {
+		assertTrue(true);
+	}
+
+	public void fixmetestSmallerOrEqual() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Dates.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for dates, if smaller than or equal is missing"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDates.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 4a"));
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 5a"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void fixmetestGreaterOrEqual() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Dates.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for dates, if greater than or equal is missing"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDates.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 4b"));
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 5b"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void fixmetestEqualAndGreaterThan() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Dates.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for dates, equal and greater than"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDates.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 1"));
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 7b"));
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 3"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void fixmetestEqualAndSmallerThan() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Dates.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for dates, equal and smaller than"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDates.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 1"));
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 6b"));
+		assertTrue(rulesThatHadErrors.remove("Date gap rule 2"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDoublesTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDoublesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckDoublesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,179 @@
+package org.drools.verifier;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Gap;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+public class RangeCheckDoublesTest extends TestBase {
+
+	public void testSmallerOrEqual() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Doubles.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Range check for doubles, if smaller than or equal is missing"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDoubles.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 4a"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 5a"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testGreaterOrEqual() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Doubles.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Range check for doubles, if greater than or equal is missing"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDoubles.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 4b"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 5b"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testEqualAndGreaterThan() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Doubles.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for doubles, equal and greater than"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDoubles.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 1"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 7b"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 3"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 9b"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testEqualAndSmallerThan() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Doubles.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for doubles, equal and smaller than"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForDoubles.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 1"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 6b"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 2"));
+		assertTrue(rulesThatHadErrors.remove("Double gap rule 9a"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckIntegersTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckIntegersTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/RangeCheckIntegersTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,177 @@
+package org.drools.verifier;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Gap;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+public class RangeCheckIntegersTest extends TestBase {
+
+	public void testSmallerOrEqual() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Integers.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Range check for integers, if smaller than or equal is missing"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForInts.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 4a"));
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 5a"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testGreaterOrEqual() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Integers.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Range check for integers, if greater than or equal is missing"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForInts.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 4b"));
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 5b"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testEqualAndGreaterThan() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Integers.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for integers, equal and greater than"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForInts.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 1"));
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 7b"));
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 3"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testEqualAndSmallerThan() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("rangeChecks/Integers.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Range check for integers, equal and smaller than"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingRangesForInts.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(testData);
+
+		Iterator<Object> iter = sessionResult.iterateObjects();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Gap) {
+				rulesThatHadErrors.add(((Gap) o).getRuleName());
+			}
+			// System.out.println(o);
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 1"));
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 6b"));
+		assertTrue(rulesThatHadErrors.remove("Integer gap rule 2"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SolversTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SolversTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SolversTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SolversTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,143 @@
+package org.drools.verifier;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.drools.verifier.Solvers;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.report.components.Cause;
+
+import junit.framework.TestCase;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+public class SolversTest extends TestCase {
+
+	/**
+	 * <pre>
+	 * when 
+	 * 		Foo( r &amp;&amp; r2 )
+	 * 		and
+	 * 		not Foo( r3 &amp;&amp; r4 )
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * r && r2<br>
+	 * r3 && r4
+	 */
+	public void testNotAnd() {
+		AnalyticsRule rule = new AnalyticsRule();
+		Pattern pattern = new Pattern();
+
+		Restriction r = new LiteralRestriction();
+		Restriction r2 = new LiteralRestriction();
+		Restriction r3 = new LiteralRestriction();
+		Restriction r4 = new LiteralRestriction();
+
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		Solvers solvers = new Solvers();
+
+		solvers.startRuleSolver(rule);
+
+		solvers.startOperator(andDescr);
+		solvers.startPatternSolver(pattern);
+		solvers.startOperator(andDescr);
+		solvers.addRestriction(r);
+		solvers.addRestriction(r2);
+		solvers.endOperator();
+		solvers.endPatternSolver();
+
+		solvers.startNot();
+		solvers.startPatternSolver(pattern);
+		solvers.startOperator(andDescr);
+		solvers.addRestriction(r3);
+		solvers.addRestriction(r4);
+		solvers.endOperator();
+		solvers.endPatternSolver();
+		solvers.endNot();
+
+		solvers.endOperator();
+
+		solvers.endRuleSolver();
+
+		List<RulePossibility> list = solvers.getRulePossibilities();
+		assertEquals(1, list.size());
+		assertEquals(2, list.get(0).getItems().size());
+
+		List<Restriction> result = new ArrayList<Restriction>();
+		result.add(r);
+		result.add(r2);
+
+		List<Restriction> result2 = new ArrayList<Restriction>();
+		result2.add(r3);
+		result2.add(r4);
+
+		Object[] possibilies = list.get(0).getItems().toArray();
+		PatternPossibility p1 = (PatternPossibility) possibilies[0];
+		PatternPossibility p2 = (PatternPossibility) possibilies[1];
+
+		/*
+		 * Order may change but it doesn't matter.
+		 */
+		if (p1.getItems().containsAll(result)) {
+			assertTrue(p2.getItems().containsAll(result2));
+		} else if (p1.getItems().containsAll(result2)) {
+			assertTrue(p2.getItems().containsAll(result));
+		} else {
+			fail("No items found.");
+		}
+	}
+
+	/**
+	 * <pre>
+	 * when 
+	 * 		Foo( descr &amp;&amp; descr2 )
+	 * </pre>
+	 * 
+	 * result:<br>
+	 * descr && descr2
+	 */
+	public void testBasicAnd() {
+		AnalyticsRule rule = new AnalyticsRule();
+		Pattern pattern = new Pattern();
+
+		Restriction r = new LiteralRestriction();
+		Restriction r2 = new LiteralRestriction();
+
+		OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
+		Solvers solvers = new Solvers();
+
+		solvers.startRuleSolver(rule);
+		solvers.startPatternSolver(pattern);
+		solvers.startOperator(andDescr);
+		solvers.addRestriction(r);
+		solvers.addRestriction(r2);
+		solvers.endOperator();
+		solvers.endPatternSolver();
+		solvers.endRuleSolver();
+
+		List<RulePossibility> list = solvers.getRulePossibilities();
+		assertEquals(1, list.size());
+		assertEquals(1, list.get(0).getItems().size());
+
+		List<Restriction> result = new ArrayList<Restriction>();
+		result.add(r);
+		result.add(r2);
+
+		Set<Cause> set = list.get(0).getItems();
+		for (Cause cause : set) {
+			PatternPossibility possibility = (PatternPossibility) cause;
+			assertTrue(possibility.getItems().containsAll(result));
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SubsumptantPossibilitiesRuleTest.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/SubsumptantPossibilitiesRuleTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SubsumptantPossibilitiesRuleTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/SubsumptantPossibilitiesRuleTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,232 @@
+package org.drools.verifier;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.report.components.PartialRedundancy;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+
+public class SubsumptantPossibilitiesRuleTest extends TestBase {
+
+	private static final String RULE_NAME = "Find subsumptant Possibilities";
+
+	public void testFake() {
+		assertTrue(true);
+	}
+
+	public void fixmetestSubsumptantPossibilitiesPattern() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("redundancy/Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(RULE_NAME));
+
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(createSubsumptantPatternData(ruleName1,
+						ruleName2));
+
+		Map<String, Set<String>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
+
+		if (!map.isEmpty()) {
+			fail("More subsumpt cases than was expected.");
+		}
+	}
+
+	public void fixmetestSubsumptantPossibilitiesRule() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("redundancy/Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(RULE_NAME));
+
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		StatelessSessionResult sessionResult = session
+				.executeWithResults(createSubsumptantRuleData(ruleName1,
+						ruleName2));
+
+		Map<String, Set<String>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
+
+		if (!map.isEmpty()) {
+			fail("More subsumpt cases than was expected.");
+		}
+	}
+
+	public void fixmetestSubsumptantPossibilitiesBoth() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("redundancy/Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(RULE_NAME));
+
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+		String ruleName3 = "Rule 3";
+		String ruleName4 = "Rule 4";
+		String ruleName5 = "Rule 5";
+		String ruleName6 = "Rule 6";
+		String ruleName7 = "Rule 7";
+		String ruleName8 = "Rule 8";
+		String ruleName9 = "Rule 9";
+		String ruleName10 = "Rule 10";
+		String ruleName11 = "Rule 11";
+		String ruleName12 = "Rule 12";
+
+		// Rule data
+		Collection<Object> data = createSubsumptantRuleData(ruleName1,
+				ruleName2);
+		data.addAll(createSubsumptantRuleData(ruleName3, ruleName4));
+		data.addAll(createSubsumptantRuleData(ruleName5, ruleName6));
+
+		// Pattern data.
+		data.addAll(createSubsumptantPatternData(ruleName7, ruleName8));
+		data.addAll(createSubsumptantPatternData(ruleName9, ruleName10));
+		data.addAll(createSubsumptantPatternData(ruleName11, ruleName12));
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
+		assertTrue(TestBase.mapContains(map, ruleName4, ruleName3));
+		assertTrue(TestBase.mapContains(map, ruleName6, ruleName5));
+
+		assertTrue(TestBase.mapContains(map, ruleName8, ruleName7));
+		assertTrue(TestBase.mapContains(map, ruleName10, ruleName9));
+		assertTrue(TestBase.mapContains(map, ruleName12, ruleName11));
+
+		if (!map.isEmpty()) {
+			fail("More subsumpt cases than was expected.");
+		}
+	}
+
+	private Collection<Object> createSubsumptantPatternData(String ruleName1,
+			String ruleName2) {
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		LiteralRestriction lr1 = new LiteralRestriction();
+		lr1.setRuleName(ruleName1);
+		LiteralRestriction lr2 = new LiteralRestriction();
+		lr2.setRuleName(ruleName1);
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setRuleName(ruleName1);
+		pp1.add(lr1);
+		pp1.add(lr2);
+
+		LiteralRestriction lr3 = new LiteralRestriction();
+		lr3.setRuleName(ruleName2);
+
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setRuleName(ruleName2);
+		pp2.add(lr3);
+
+		Redundancy redundancy1 = new Redundancy(lr1, lr3);
+
+		PartialRedundancy pr1 = new PartialRedundancy(pp1, pp2, redundancy1);
+		PartialRedundancy pr2 = new PartialRedundancy(pp2, pp1, redundancy1);
+
+		data.add(lr1);
+		data.add(lr2);
+		data.add(lr3);
+		data.add(pp1);
+		data.add(pp2);
+		data.add(redundancy1);
+		data.add(pr1);
+		data.add(pr2);
+
+		return data;
+	}
+
+	private Collection<Object> createSubsumptantRuleData(String ruleName1,
+			String ruleName2) {
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setRuleName(ruleName1);
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setRuleName(ruleName1);
+
+		RulePossibility rp1 = new RulePossibility();
+		rp1.setRuleName(ruleName1);
+		rp1.add(pp1);
+		rp1.add(pp2);
+
+		PatternPossibility pp3 = new PatternPossibility();
+		pp3.setRuleName(ruleName2);
+
+		RulePossibility rp2 = new RulePossibility();
+		rp2.setRuleName(ruleName2);
+		rp2.add(pp3);
+
+		Redundancy redundancy1 = new Redundancy(pp1, pp3);
+
+		PartialRedundancy pr1 = new PartialRedundancy(rp1, rp2, redundancy1);
+		PartialRedundancy pr2 = new PartialRedundancy(rp2, rp1, redundancy1);
+
+		data.add(pp1);
+		data.add(pp2);
+		data.add(rp1);
+		data.add(pp3);
+		data.add(rp2);
+		data.add(redundancy1);
+		data.add(pr1);
+		data.add(pr2);
+
+		return data;
+	}
+
+	/**
+	 * Creates redundancy map from Redundancy objects, one rule may have several
+	 * redundancy dependencies.
+	 * 
+	 * @param iter
+	 * @return
+	 */
+	private Map<String, Set<String>> createSubsumptionMap(Iterator iter) {
+
+		Map<String, Set<String>> map = new HashMap<String, Set<String>>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Subsumption) {
+				Subsumption s = (Subsumption) o;
+				AnalyticsComponent left = (AnalyticsComponent) s.getLeft();
+				AnalyticsComponent right = (AnalyticsComponent) s.getRight();
+
+				if (map.containsKey(left.getRuleName())) {
+					Set<String> set = map.get(left.getRuleName());
+					set.add(right.getRuleName());
+				} else {
+					Set<String> set = new HashSet<String>();
+					set.add(right.getRuleName());
+					map.put(left.getRuleName(), set);
+				}
+			}
+		}
+
+		return map;
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/TestBase.java (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/TestBase.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/TestBase.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/TestBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,114 @@
+package org.drools.verifier;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatelessSession;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.PackageBuilder;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.rule.Package;
+import org.drools.verifier.PackageDescrFlattener;
+import org.drools.verifier.dao.AnalyticsData;
+import org.drools.verifier.report.components.Cause;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+abstract public class TestBase extends TestCase {
+
+	@Override
+	protected void setUp() throws Exception {
+		super.setUp();
+
+		System.setProperty("drools.dateformat", "dd-MMM-yyyy");
+	}
+
+	public StatelessSession getStatelessSession(InputStream stream)
+			throws Exception {
+		// read in the source
+		Reader source = new InputStreamReader(stream);
+
+		PackageBuilder builder = new PackageBuilder();
+
+		builder.addPackageFromDrl(source);
+
+		Package pkg = builder.getPackage();
+
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+		ruleBase.addPackage(pkg);
+
+		return ruleBase.newStatelessSession();
+	}
+
+	/**
+	 * Returns true if map contains redundancy where ruleName1 is redundant to
+	 * ruleName2.
+	 * 
+	 * @param map
+	 * @param ruleName1
+	 * @param ruleName2
+	 * @return True if redundancy exists.
+	 */
+	protected static boolean mapContains(Map<String, Set<String>> map,
+			String ruleName1, String ruleName2) {
+		if (map.containsKey(ruleName1)) {
+			Set<String> set = map.get(ruleName1);
+			boolean exists = set.remove(ruleName2);
+
+			// If set is empty remove key from map.
+			if (set.isEmpty()) {
+				map.remove(ruleName1);
+			}
+			return exists;
+		}
+		return false;
+	}
+
+	/**
+	 * Returns true if map contains redundancy where cause1 is redundant to
+	 * cause2.
+	 * 
+	 * @param map
+	 * @param cause1
+	 * @param cause2
+	 * @return True if redundancy exists.
+	 */
+	protected static boolean causeMapContains(Map<Cause, Set<Cause>> map,
+			Cause cause1, Cause cause2) {
+		if (map.containsKey(cause1)) {
+			Set<Cause> set = map.get(cause1);
+			boolean exists = set.remove(cause2);
+
+			// If set is empty remove key from map.
+			if (set.isEmpty()) {
+				map.remove(cause1);
+			}
+			return exists;
+		}
+		return false;
+	}
+
+	public Collection<? extends Object> getTestData(InputStream stream,
+			AnalyticsData data) throws Exception {
+		Reader drlReader = new InputStreamReader(stream);
+		PackageDescr descr = new DrlParser().parse(drlReader);
+
+		PackageDescrFlattener ruleFlattener = new PackageDescrFlattener();
+
+		ruleFlattener.addPackageDescrToData(descr, data);
+
+		// Rules with relations
+		return data.getAll();
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/equivalence)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/equivalence/EquivalentRulesTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,58 +0,0 @@
-package org.drools.analytics.equivalence;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.redundancy.RedundancyTestBase;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class EquivalentRulesTest extends RedundancyTestBase {
-
-	public void testRuleRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Rules.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find equivalent Rules"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		AnalyticsRule rule1 = new AnalyticsRule();
-		rule1.setRuleName(ruleName1);
-		AnalyticsRule rule2 = new AnalyticsRule();
-		rule2.setRuleName(ruleName2);
-
-		Redundancy r1 = new Redundancy(rule1, rule2);
-
-		data.add(rule1);
-		data.add(rule2);
-		data.add(r1);
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2));
-		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
-
-		if (!map.isEmpty()) {
-			fail("More equivalences than was expected.");
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/equivalence/EquivalentRulesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,58 @@
+package org.drools.verifier.equivalence;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.redundancy.RedundancyTestBase;
+import org.drools.verifier.report.components.Redundancy;
+
+public class EquivalentRulesTest extends RedundancyTestBase {
+
+	public void testRuleRedundancy() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Rules.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find equivalent Rules"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		AnalyticsRule rule1 = new AnalyticsRule();
+		rule1.setRuleName(ruleName1);
+		AnalyticsRule rule2 = new AnalyticsRule();
+		rule2.setRuleName(ruleName2);
+
+		Redundancy r1 = new Redundancy(rule1, rule2);
+
+		data.add(rule1);
+		data.add(rule2);
+		data.add(r1);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2));
+		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
+
+		if (!map.isEmpty()) {
+			fail("More equivalences than was expected.");
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incoherence)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incoherence/IncoherentPatternsTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentPatternsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,349 +0,0 @@
-package org.drools.analytics.incoherence;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Severity;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-/**
- *
- * @author Toni Rikkola
- *
- */
-public class IncoherentPatternsTest extends TestBase {
-
-	public void testIncoherentPatternsInRulePossibility() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Incoherent Patterns in rule possibility"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 1"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 2"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 7"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentPatternsInRulePossibilityVariables()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Incoherent Patterns in rule possibility, variables"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 3"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 4"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 5"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 6"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentPatternsInRulePossibilityRangesLess()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent Patterns in rule possibility, ranges when not conflicts with lesser value"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 8"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 12"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentPatternsInRulePossibilityRangesGreater()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent Patterns in rule possibility, ranges when not conflicts with greater value"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 9"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 14"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentPatternsInRulePossibilityRangesEqualOrUnequal()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal or unequal value"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 10"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 15"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentPatternsInRulePossibilityRangesEqualOrUnequalVariables()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal or unequal variables"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 11"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentPatternsInRulePossibilityRangesEqualValue()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal value"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 16"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentPatternsInRulePossibilityRangesEqualVariable()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal variable"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("PatternsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
-						.getFaulty();
-				rulesThatHadErrors.add(rule.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 13"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentPatternsTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incoherence/IncoherentPatternsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentPatternsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentPatternsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,349 @@
+package org.drools.verifier.incoherence;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ *
+ * @author Toni Rikkola
+ *
+ */
+public class IncoherentPatternsTest extends TestBase {
+
+	public void testIncoherentPatternsInRulePossibility() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Incoherent Patterns in rule possibility"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 1"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 2"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 7"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentPatternsInRulePossibilityVariables()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Incoherent Patterns in rule possibility, variables"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 3"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 4"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 5"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 6"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentPatternsInRulePossibilityRangesLess()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent Patterns in rule possibility, ranges when not conflicts with lesser value"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 8"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 12"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentPatternsInRulePossibilityRangesGreater()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent Patterns in rule possibility, ranges when not conflicts with greater value"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 9"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 14"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentPatternsInRulePossibilityRangesEqualOrUnequal()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal or unequal value"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 10"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 15"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentPatternsInRulePossibilityRangesEqualOrUnequalVariables()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal or unequal variables"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 11"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentPatternsInRulePossibilityRangesEqualValue()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal value"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 16"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentPatternsInRulePossibilityRangesEqualVariable()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent Patterns in rule possibility, ranges when not conflicts with equal variable"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("PatternsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				AnalyticsRule rule = (AnalyticsRule) ((AnalyticsMessage) o)
+						.getFaulty();
+				rulesThatHadErrors.add(rule.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent patterns 13"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incoherence/IncoherentRestrictionsTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,299 +0,0 @@
-package org.drools.analytics.incoherence;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Severity;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-/**
- *
- * @author Toni Rikkola
- *
- */
-public class IncoherentRestrictionsTest extends TestBase {
-
-	public void testIncoherentLiteralRestrictionsInPatternPossibility()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Incoherent LiteralRestrictions in pattern possibility"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("RestrictionsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.ERROR).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
-				rulesThatHadErrors.add(pattern.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 1"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 2"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleRanges()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible ranges"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("RestrictionsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.ERROR).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
-				rulesThatHadErrors.add(pattern.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 8"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleEqualityLess()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible equality less or equal"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("RestrictionsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.ERROR).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
-				rulesThatHadErrors.add(pattern.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 9"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 11"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleEqualityGreater()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible equality greater"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("RestrictionsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.ERROR).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
-				rulesThatHadErrors.add(pattern.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 10"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleRange()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible range"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("RestrictionsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.ERROR).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
-				rulesThatHadErrors.add(pattern.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 7"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentVariableRestrictionsInPatternPossibility()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Incoherent VariableRestrictions in pattern possibility"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("RestrictionsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.ERROR).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
-				rulesThatHadErrors.add(pattern.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 3"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 4"));
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 5"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testIncoherentVariableRestrictionsInPatternPossibilityImpossibleRange()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incoherent VariableRestrictions in pattern possibility, impossible range"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("RestrictionsTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.ERROR).iterator();
-
-		Set<String> rulesThatHadErrors = new HashSet<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
-				rulesThatHadErrors.add(pattern.getRuleName());
-			}
-		}
-
-		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 6"));
-
-		if (!rulesThatHadErrors.isEmpty()) {
-			for (String string : rulesThatHadErrors) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentRestrictionsTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incoherence/IncoherentRestrictionsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentRestrictionsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incoherence/IncoherentRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,299 @@
+package org.drools.verifier.incoherence;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Severity;
+
+/**
+ *
+ * @author Toni Rikkola
+ *
+ */
+public class IncoherentRestrictionsTest extends TestBase {
+
+	public void testIncoherentLiteralRestrictionsInPatternPossibility()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Incoherent LiteralRestrictions in pattern possibility"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("RestrictionsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.ERROR).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
+				rulesThatHadErrors.add(pattern.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 1"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 2"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleRanges()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible ranges"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("RestrictionsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.ERROR).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
+				rulesThatHadErrors.add(pattern.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 8"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleEqualityLess()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible equality less or equal"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("RestrictionsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.ERROR).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
+				rulesThatHadErrors.add(pattern.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 9"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 11"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleEqualityGreater()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible equality greater"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("RestrictionsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.ERROR).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
+				rulesThatHadErrors.add(pattern.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 10"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentLiteralRestrictionsInPatternPossibilityImpossibleRange()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent LiteralRestrictions with ranges in pattern possibility, impossible range"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("RestrictionsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.ERROR).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
+				rulesThatHadErrors.add(pattern.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 7"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentVariableRestrictionsInPatternPossibility()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Incoherent VariableRestrictions in pattern possibility"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("RestrictionsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.ERROR).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
+				rulesThatHadErrors.add(pattern.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 3"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 4"));
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 5"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testIncoherentVariableRestrictionsInPatternPossibilityImpossibleRange()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Incoherent VariableRestrictions in pattern possibility, impossible range"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("RestrictionsTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.ERROR).iterator();
+
+		Set<String> rulesThatHadErrors = new HashSet<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Pattern pattern = (Pattern) ((AnalyticsMessage) o).getFaulty();
+				rulesThatHadErrors.add(pattern.getRuleName());
+			}
+		}
+
+		assertTrue(rulesThatHadErrors.remove("Incoherent restrictions 6"));
+
+		if (!rulesThatHadErrors.isEmpty()) {
+			for (String string : rulesThatHadErrors) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility (from rev 18568, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incompatibility)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incompatibility/IncompatibilityBase.java	2008-02-23 17:28:12 UTC (rev 18568)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,56 +0,0 @@
-package org.drools.analytics.incompatibility;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.analytics.TestBase;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.analytics.report.components.Incompatibility;
-
-public class IncompatibilityBase extends TestBase {
-
-	public void testDummy() {
-		// this is needed as eclipse will try to run this and produce a failure
-		// if its not here.
-		assertTrue(true);
-	}
-
-	/**
-	 * Creates redundancy map from Redundancy objects, one rule may have several
-	 * redundancy dependencies.
-	 * 
-	 * @param iter
-	 * @return
-	 */
-	protected Map<Cause, Set<Cause>> createOppositesMap(CauseType type,
-			Iterator<Object> iter) {
-
-		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof Incompatibility) {
-				Incompatibility r = (Incompatibility) o;
-
-				if (r.getLeft().getCauseType() == type) {
-					Cause left = r.getLeft();
-					Cause right = r.getRight();
-
-					if (map.containsKey(left)) {
-						Set<Cause> set = map.get(left);
-						set.add(right);
-					} else {
-						Set<Cause> set = new HashSet<Cause>();
-						set.add(right);
-						map.put(left, set);
-					}
-				}
-			}
-		}
-
-		return map;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incompatibility/IncompatibilityBase.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,56 @@
+package org.drools.verifier.incompatibility;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.verifier.TestBase;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Incompatibility;
+
+public class IncompatibilityBase extends TestBase {
+
+	public void testDummy() {
+		// this is needed as eclipse will try to run this and produce a failure
+		// if its not here.
+		assertTrue(true);
+	}
+
+	/**
+	 * Creates redundancy map from Redundancy objects, one rule may have several
+	 * redundancy dependencies.
+	 * 
+	 * @param iter
+	 * @return
+	 */
+	protected Map<Cause, Set<Cause>> createOppositesMap(CauseType type,
+			Iterator<Object> iter) {
+
+		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Incompatibility) {
+				Incompatibility r = (Incompatibility) o;
+
+				if (r.getLeft().getCauseType() == type) {
+					Cause left = r.getLeft();
+					Cause right = r.getRight();
+
+					if (map.containsKey(left)) {
+						Set<Cause> set = map.get(left);
+						set.add(right);
+					} else {
+						Set<Cause> set = new HashSet<Cause>();
+						set.add(right);
+						map.put(left, set);
+					}
+				}
+			}
+		}
+
+		return map;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incompatibility/IncompatibilityRestrictionsTest.java	2008-02-23 17:28:12 UTC (rev 18568)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,230 +0,0 @@
-package org.drools.analytics.incompatibility;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.base.evaluators.MatchesEvaluatorsDefinition;
-import org.drools.base.evaluators.Operator;
-
-public class IncompatibilityRestrictionsTest extends IncompatibilityBase {
-
-	public void testLiteralRestrictionIncompatibility() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Incompatibility LiteralRestrictions"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		LiteralRestriction r1 = new LiteralRestriction();
-		r1.setFieldId(0);
-		r1.setOperator(Operator.EQUAL);
-		r1.setValue("1");
-
-		LiteralRestriction r2 = new LiteralRestriction();
-		r2.setFieldId(0);
-		r2.setOperator(Operator.NOT_EQUAL);
-		r2.setValue("1");
-
-		LiteralRestriction r3 = new LiteralRestriction();
-		r3.setFieldId(0);
-		r3.setOperator(Operator.EQUAL);
-		r3.setValue("1.0");
-
-		LiteralRestriction r4 = new LiteralRestriction();
-		r4.setFieldId(0);
-		r4.setOperator(Operator.NOT_EQUAL);
-		r4.setValue("1.0");
-
-		LiteralRestriction r5 = new LiteralRestriction();
-		r5.setFieldId(0);
-		r5.setOperator(MatchesEvaluatorsDefinition.MATCHES);
-		r5.setValue("foo");
-
-		LiteralRestriction r6 = new LiteralRestriction();
-		r6.setFieldId(0);
-		r6.setOperator(MatchesEvaluatorsDefinition.NOT_MATCHES);
-		r6.setValue("foo");
-
-		data.add(r1);
-		data.add(r2);
-		data.add(r3);
-		data.add(r4);
-		data.add(r5);
-		data.add(r6);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createOppositesMap(CauseType.RESTRICTION,
-				sessionResult.iterateObjects());
-
-		assertTrue((TestBase.causeMapContains(map, r1, r2) ^ TestBase
-				.causeMapContains(map, r2, r1)));
-		assertTrue((TestBase.causeMapContains(map, r3, r4) ^ TestBase
-				.causeMapContains(map, r4, r3)));
-		assertTrue((TestBase.causeMapContains(map, r5, r6) ^ TestBase
-				.causeMapContains(map, r6, r5)));
-
-		if (!map.isEmpty()) {
-			fail("More incompatibilities than was expected.");
-		}
-	}
-
-	public void testLiteralRestrictionIncompatibilityWithRangesGreaterOrEqualAndLess()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incompatibility LiteralRestrictions with ranges, greater or equal - less"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		LiteralRestriction r1 = new LiteralRestriction();
-		r1.setFieldId(0);
-		r1.setOperator(Operator.GREATER_OR_EQUAL);
-		r1.setValue("1");
-
-		LiteralRestriction r2 = new LiteralRestriction();
-		r2.setFieldId(0);
-		r2.setOperator(Operator.LESS);
-		r2.setValue("1");
-
-		data.add(r1);
-		data.add(r2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createOppositesMap(CauseType.RESTRICTION,
-				sessionResult.iterateObjects());
-
-		assertTrue((TestBase.causeMapContains(map, r1, r2) ^ TestBase
-				.causeMapContains(map, r2, r1)));
-
-		if (!map.isEmpty()) {
-			fail("More incompatibilities than was expected.");
-		}
-	}
-
-	public void testLiteralRestrictionIncompatibilityWithRangesGreaterAndLessOrEqual()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incompatibility LiteralRestrictions with ranges, greater - less or equal"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		LiteralRestriction r1 = new LiteralRestriction();
-		r1.setFieldId(0);
-		r1.setOperator(Operator.GREATER);
-		r1.setValue("1");
-
-		LiteralRestriction r2 = new LiteralRestriction();
-		r2.setFieldId(0);
-		r2.setOperator(Operator.LESS_OR_EQUAL);
-		r2.setValue("1");
-
-		data.add(r1);
-		data.add(r2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createOppositesMap(CauseType.RESTRICTION,
-				sessionResult.iterateObjects());
-
-		assertTrue((TestBase.causeMapContains(map, r1, r2) ^ TestBase
-				.causeMapContains(map, r2, r1)));
-
-		if (!map.isEmpty()) {
-			fail("More incompatibilities than was expected.");
-		}
-	}
-
-	public void testLiteralRestrictionIncompatibilityWithRangesLessAndGreaterForIntsAndDates()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incompatibility LiteralRestrictions with ranges, less - greater for ints and dates"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		LiteralRestriction r1 = new LiteralRestriction();
-		r1.setFieldId(0);
-		r1.setOperator(Operator.GREATER);
-		r1.setValue("0");
-
-		LiteralRestriction r2 = new LiteralRestriction();
-		r2.setFieldId(0);
-		r2.setOperator(Operator.LESS);
-		r2.setValue("1");
-
-		data.add(r1);
-		data.add(r2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createOppositesMap(CauseType.RESTRICTION,
-				sessionResult.iterateObjects());
-
-		assertTrue((TestBase.causeMapContains(map, r1, r2) ^ TestBase
-				.causeMapContains(map, r2, r1)));
-
-		if (!map.isEmpty()) {
-			fail("More incompatibility than was expected.");
-		}
-	}
-
-	public void testLiteralRestrictionIncompatibilityWithRangesLessOrEqualAndGreaterOrEqualForIntsAndDates()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Incompatibility LiteralRestrictions with ranges, less or equal - greater or equal for ints and dates"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		LiteralRestriction r1 = new LiteralRestriction();
-		r1.setFieldId(0);
-		r1.setOperator(Operator.GREATER_OR_EQUAL);
-		r1.setValue("1");
-
-		LiteralRestriction r2 = new LiteralRestriction();
-		r2.setFieldId(0);
-		r2.setOperator(Operator.LESS_OR_EQUAL);
-		r2.setValue("0");
-
-		data.add(r1);
-		data.add(r2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createOppositesMap(CauseType.RESTRICTION,
-				sessionResult.iterateObjects());
-
-		assertTrue((TestBase.causeMapContains(map, r1, r2) ^ TestBase
-				.causeMapContains(map, r2, r1)));
-
-		if (!map.isEmpty()) {
-			fail("More incompatibilities than was expected.");
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/incompatibility/IncompatibilityRestrictionsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/incompatibility/IncompatibilityRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,6 @@
+package org.drools.verifier.incompatibility;
+
+
+public class IncompatibilityRestrictionsTest extends IncompatibilityBase {
+
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/MissingEqualityTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality/MissingEqualityTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/MissingEqualityTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,102 +0,0 @@
-package org.drools.analytics.missingEquality;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.drools.StatelessSession;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.VariableRestriction;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.Severity;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class MissingEqualityTest extends TestBase {
-
-	public void testMissingEqualityInLiteralRestrictions() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("MissingEquality.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Missing restriction in LiteralRestrictions"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("MissingEqualityTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Collection<String> ruleNames = new ArrayList<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Cause cause = ((AnalyticsMessage) o).getFaulty();
-				String name = ((LiteralRestriction) cause).getRuleName();
-
-				ruleNames.add(name);
-			}
-		}
-
-		assertTrue(ruleNames.remove("Missing equality 1"));
-		assertTrue(ruleNames.remove("Missing equality 2"));
-
-		if (!ruleNames.isEmpty()) {
-			for (String string : ruleNames) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testMissingEqualityInVariableRestrictions() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("MissingEquality.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Missing restriction in VariableRestrictions"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("MissingEqualityTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.WARNING).iterator();
-
-		Collection<String> ruleNames = new ArrayList<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Cause cause = ((AnalyticsMessage) o).getFaulty();
-				String name = ((VariableRestriction) cause).getRuleName();
-
-				ruleNames.add(name);
-			}
-		}
-
-		assertTrue(ruleNames.remove("Missing equality 3"));
-		assertTrue(ruleNames.remove("Missing equality 4"));
-		assertTrue(ruleNames.remove("Missing equality 5"));
-		assertTrue(ruleNames.remove("Missing equality 6"));
-
-		if (!ruleNames.isEmpty()) {
-			for (String string : ruleNames) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/MissingEqualityTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/missingEquality/MissingEqualityTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/MissingEqualityTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/missingEquality/MissingEqualityTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,102 @@
+package org.drools.verifier.missingEquality;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.VariableRestriction;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.Severity;
+
+public class MissingEqualityTest extends TestBase {
+
+	public void testMissingEqualityInLiteralRestrictions() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("MissingEquality.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Missing restriction in LiteralRestrictions"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingEqualityTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Collection<String> ruleNames = new ArrayList<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Cause cause = ((AnalyticsMessage) o).getFaulty();
+				String name = ((LiteralRestriction) cause).getRuleName();
+
+				ruleNames.add(name);
+			}
+		}
+
+		assertTrue(ruleNames.remove("Missing equality 1"));
+		assertTrue(ruleNames.remove("Missing equality 2"));
+
+		if (!ruleNames.isEmpty()) {
+			for (String string : ruleNames) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testMissingEqualityInVariableRestrictions() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("MissingEquality.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Missing restriction in VariableRestrictions"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("MissingEqualityTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.WARNING).iterator();
+
+		Collection<String> ruleNames = new ArrayList<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Cause cause = ((AnalyticsMessage) o).getFaulty();
+				String name = ((VariableRestriction) cause).getRuleName();
+
+				ruleNames.add(name);
+			}
+		}
+
+		assertTrue(ruleNames.remove("Missing equality 3"));
+		assertTrue(ruleNames.remove("Missing equality 4"));
+		assertTrue(ruleNames.remove("Missing equality 5"));
+		assertTrue(ruleNames.remove("Missing equality 6"));
+
+		if (!ruleNames.isEmpty()) {
+			for (String string : ruleNames) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/PatternOrderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/PatternOrderTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/PatternOrderTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,57 +0,0 @@
-package org.drools.analytics.optimisation;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.drools.StatelessSession;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsComponent;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Severity;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class PatternOrderTest extends TestBase {
-
-	public void testEvalOrderInsideOperator() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("PatternOrder.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Optimise evals inside pattern"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("OptimisationPatternOrderTest.drl"),
-				result.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.NOTE).iterator();
-
-		Collection<String> ruleNames = new ArrayList<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				String name = ((AnalyticsMessage) o).getCauses().toArray(
-						new AnalyticsComponent[2])[0].getRuleName();
-
-				ruleNames.add(name);
-			}
-		}
-
-		assertTrue(ruleNames.remove("Wrong eval order 1"));
-
-		if (!ruleNames.isEmpty()) {
-			for (String string : ruleNames) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/PatternOrderTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/PatternOrderTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/PatternOrderTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/PatternOrderTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,57 @@
+package org.drools.verifier.optimisation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Severity;
+
+public class PatternOrderTest extends TestBase {
+
+	public void testEvalOrderInsideOperator() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("PatternOrder.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Optimise evals inside pattern"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("OptimisationPatternOrderTest.drl"),
+				result.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.NOTE).iterator();
+
+		Collection<String> ruleNames = new ArrayList<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				String name = ((AnalyticsMessage) o).getCauses().toArray(
+						new AnalyticsComponent[2])[0].getRuleName();
+
+				ruleNames.add(name);
+			}
+		}
+
+		assertTrue(ruleNames.remove("Wrong eval order 1"));
+
+		if (!ruleNames.isEmpty()) {
+			for (String string : ruleNames) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/RestrictionOrderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/RestrictionOrderTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/RestrictionOrderTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,204 +0,0 @@
-package org.drools.analytics.optimisation;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.drools.StatelessSession;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsComponent;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.OperatorDescr;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.Restriction;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.Severity;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.base.evaluators.Operator;
-
-public class RestrictionOrderTest extends TestBase {
-
-	public void testRestrictionOrderInsideOperator() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("RestrictionOrder.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Optimise restrictions inside operator"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("OptimisationRestrictionOrderTest.drl"),
-				result.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.NOTE).iterator();
-
-		Collection<String> ruleNames = new ArrayList<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				String name = ((AnalyticsMessage) o).getCauses().toArray(
-						new Restriction[2])[0].getRuleName();
-
-				ruleNames.add(name);
-			}
-		}
-
-		assertTrue(ruleNames.remove("Wrong descr order 1"));
-
-		if (!ruleNames.isEmpty()) {
-			for (String string : ruleNames) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-
-	public void testRestrictionOrderInsideConstraint() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("RestrictionOrder.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Optimise restrictions inside constraint"));
-
-		Collection<Object> testData = new ArrayList<Object>();
-
-		/*
-		 * Case 1
-		 */
-		Pattern pattern1 = new Pattern();
-		testData.add(pattern1);
-
-		OperatorDescr parent1 = new OperatorDescr(OperatorDescr.Type.AND);
-
-		LiteralRestriction r1 = new LiteralRestriction();
-		r1.setPatternId(pattern1.getId());
-		r1.setParent(parent1);
-		r1.setOperator(Operator.GREATER);
-		r1.setOrderNumber(1);
-		testData.add(r1);
-
-		LiteralRestriction r2 = new LiteralRestriction();
-		r2.setPatternId(pattern1.getId());
-		r2.setParent(parent1);
-		r2.setOperator(Operator.EQUAL);
-		r2.setOrderNumber(2);
-		testData.add(r2);
-
-		LiteralRestriction r3 = new LiteralRestriction();
-		r3.setPatternId(pattern1.getId());
-		r3.setParent(parent1);
-		r3.setOperator(Operator.LESS);
-		r3.setOrderNumber(3);
-		testData.add(r3);
-
-		/*
-		 * Case 2
-		 */
-		Pattern pattern2 = new Pattern();
-		testData.add(pattern2);
-
-		OperatorDescr parent2 = new OperatorDescr(OperatorDescr.Type.OR);
-
-		LiteralRestriction r4 = new LiteralRestriction();
-		r4.setPatternId(pattern2.getId());
-		r4.setParent(parent2);
-		r4.setOperator(Operator.NOT_EQUAL);
-		r4.setOrderNumber(1);
-		testData.add(r4);
-
-		LiteralRestriction r5 = new LiteralRestriction();
-		r5.setPatternId(pattern2.getId());
-		r5.setParent(parent2);
-		r5.setOperator(Operator.LESS_OR_EQUAL);
-		r5.setOrderNumber(2);
-		testData.add(r5);
-
-		LiteralRestriction r6 = new LiteralRestriction();
-		r6.setPatternId(pattern2.getId());
-		r6.setParent(parent2);
-		r6.setOperator(Operator.NOT_EQUAL);
-		r6.setOrderNumber(3);
-		testData.add(r6);
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.NOTE).iterator();
-
-		Map<Cause, Cause> pairs = new HashMap<Cause, Cause>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				Cause left = ((AnalyticsMessage) o).getCauses().toArray(
-						new Cause[2])[0];
-				Cause right = ((AnalyticsMessage) o).getCauses().toArray(
-						new Cause[2])[1];
-
-				pairs.put(left, right);
-			}
-		}
-
-		// Check that case 1 is here.
-		assertTrue((pairs.containsKey(r1) && pairs.get(r1).equals(r2))
-				|| pairs.containsKey(r2) && pairs.get(r2).equals(r1));
-
-		// Check that case 2 is here.
-		assertTrue((pairs.containsKey(r4) && pairs.get(r4).equals(r5))
-				|| pairs.containsKey(r5) && pairs.get(r5).equals(r4));
-
-		// Check that there is only one pair.
-		assertEquals(2, pairs.size());
-	}
-
-	public void testPredicateOrderInsideOperator() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("RestrictionOrder.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Optimise predicates inside operator"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> testData = getTestData(this.getClass()
-				.getResourceAsStream("OptimisationRestrictionOrderTest.drl"),
-				result.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		session.executeWithResults(testData);
-
-		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
-				Severity.NOTE).iterator();
-
-		Collection<String> ruleNames = new ArrayList<String>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof AnalyticsMessage) {
-				String name = ((AnalyticsMessage) o).getCauses().toArray(
-						new AnalyticsComponent[2])[0].getRuleName();
-
-				ruleNames.add(name);
-			}
-		}
-
-		assertTrue(ruleNames.remove("Wrong eval order 1"));
-
-		if (!ruleNames.isEmpty()) {
-			for (String string : ruleNames) {
-				fail("Rule " + string + " caused an error.");
-			}
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/RestrictionOrderTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/optimisation/RestrictionOrderTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/RestrictionOrderTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/optimisation/RestrictionOrderTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,204 @@
+package org.drools.verifier.optimisation;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.OperatorDescr;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.Severity;
+
+public class RestrictionOrderTest extends TestBase {
+
+	public void testRestrictionOrderInsideOperator() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("RestrictionOrder.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Optimise restrictions inside operator"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("OptimisationRestrictionOrderTest.drl"),
+				result.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.NOTE).iterator();
+
+		Collection<String> ruleNames = new ArrayList<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				String name = ((AnalyticsMessage) o).getCauses().toArray(
+						new Restriction[2])[0].getRuleName();
+
+				ruleNames.add(name);
+			}
+		}
+
+		assertTrue(ruleNames.remove("Wrong descr order 1"));
+
+		if (!ruleNames.isEmpty()) {
+			for (String string : ruleNames) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+
+	public void testRestrictionOrderInsideConstraint() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("RestrictionOrder.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Optimise restrictions inside constraint"));
+
+		Collection<Object> testData = new ArrayList<Object>();
+
+		/*
+		 * Case 1
+		 */
+		Pattern pattern1 = new Pattern();
+		testData.add(pattern1);
+
+		OperatorDescr parent1 = new OperatorDescr(OperatorDescr.Type.AND);
+
+		LiteralRestriction r1 = new LiteralRestriction();
+		r1.setPatternId(pattern1.getId());
+		r1.setParent(parent1);
+		r1.setOperator(Operator.GREATER);
+		r1.setOrderNumber(1);
+		testData.add(r1);
+
+		LiteralRestriction r2 = new LiteralRestriction();
+		r2.setPatternId(pattern1.getId());
+		r2.setParent(parent1);
+		r2.setOperator(Operator.EQUAL);
+		r2.setOrderNumber(2);
+		testData.add(r2);
+
+		LiteralRestriction r3 = new LiteralRestriction();
+		r3.setPatternId(pattern1.getId());
+		r3.setParent(parent1);
+		r3.setOperator(Operator.LESS);
+		r3.setOrderNumber(3);
+		testData.add(r3);
+
+		/*
+		 * Case 2
+		 */
+		Pattern pattern2 = new Pattern();
+		testData.add(pattern2);
+
+		OperatorDescr parent2 = new OperatorDescr(OperatorDescr.Type.OR);
+
+		LiteralRestriction r4 = new LiteralRestriction();
+		r4.setPatternId(pattern2.getId());
+		r4.setParent(parent2);
+		r4.setOperator(Operator.NOT_EQUAL);
+		r4.setOrderNumber(1);
+		testData.add(r4);
+
+		LiteralRestriction r5 = new LiteralRestriction();
+		r5.setPatternId(pattern2.getId());
+		r5.setParent(parent2);
+		r5.setOperator(Operator.LESS_OR_EQUAL);
+		r5.setOrderNumber(2);
+		testData.add(r5);
+
+		LiteralRestriction r6 = new LiteralRestriction();
+		r6.setPatternId(pattern2.getId());
+		r6.setParent(parent2);
+		r6.setOperator(Operator.NOT_EQUAL);
+		r6.setOrderNumber(3);
+		testData.add(r6);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.NOTE).iterator();
+
+		Map<Cause, Cause> pairs = new HashMap<Cause, Cause>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				Cause left = ((AnalyticsMessage) o).getCauses().toArray(
+						new Cause[2])[0];
+				Cause right = ((AnalyticsMessage) o).getCauses().toArray(
+						new Cause[2])[1];
+
+				pairs.put(left, right);
+			}
+		}
+
+		// Check that case 1 is here.
+		assertTrue((pairs.containsKey(r1) && pairs.get(r1).equals(r2))
+				|| pairs.containsKey(r2) && pairs.get(r2).equals(r1));
+
+		// Check that case 2 is here.
+		assertTrue((pairs.containsKey(r4) && pairs.get(r4).equals(r5))
+				|| pairs.containsKey(r5) && pairs.get(r5).equals(r4));
+
+		// Check that there is only one pair.
+		assertEquals(2, pairs.size());
+	}
+
+	public void testPredicateOrderInsideOperator() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("RestrictionOrder.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Optimise predicates inside operator"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> testData = getTestData(this.getClass()
+				.getResourceAsStream("OptimisationRestrictionOrderTest.drl"),
+				result.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		session.executeWithResults(testData);
+
+		Iterator<AnalyticsMessageBase> iter = result.getBySeverity(
+				Severity.NOTE).iterator();
+
+		Collection<String> ruleNames = new ArrayList<String>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof AnalyticsMessage) {
+				String name = ((AnalyticsMessage) o).getCauses().toArray(
+						new AnalyticsComponent[2])[0].getRuleName();
+
+				ruleNames.add(name);
+			}
+		}
+
+		assertTrue(ruleNames.remove("Wrong eval order 1"));
+
+		if (!ruleNames.isEmpty()) {
+			for (String string : ruleNames) {
+				fail("Rule " + string + " caused an error.");
+			}
+		}
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/NotesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/NotesTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/NotesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,102 +0,0 @@
-package org.drools.analytics.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.drools.StatelessSession;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
-import org.drools.analytics.report.components.Severity;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class NotesTest extends TestBase {
-
-	public void testRedundantRestrictionsInPatternPossibilities()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Notes.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant restrictions from pattern possibilities"));
-
-		Collection<Object> objects = new ArrayList<Object>();
-		LiteralRestriction left = new LiteralRestriction();
-
-		LiteralRestriction right = new LiteralRestriction();
-
-		Redundancy redundancy = new Redundancy(
-				RedundancyType.STRONG, left, right);
-
-		PatternPossibility possibility = new PatternPossibility();
-		possibility.add(left);
-		possibility.add(right);
-
-		objects.add(left);
-		objects.add(right);
-		objects.add(redundancy);
-		objects.add(possibility);
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		session.executeWithResults(objects);
-
-		Collection<AnalyticsMessageBase> notes = result
-				.getBySeverity(Severity.NOTE);
-
-		// Has at least one item.
-		assertEquals(1, notes.size());
-
-		AnalyticsMessageBase note = notes.iterator().next();
-		assertTrue(note.getFaulty().equals(redundancy));
-	}
-
-	public void testRedundantPatternPossibilitiesInRulePossibilities()
-			throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Notes.drl"));
-
-		session
-				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-						"Find redundant pattern possibilities from rule possibilities"));
-
-		Collection<Object> objects = new ArrayList<Object>();
-		PatternPossibility left = new PatternPossibility();
-
-		PatternPossibility right = new PatternPossibility();
-
-		Redundancy redundancy = new Redundancy(
-				RedundancyType.STRONG, left, right);
-
-		RulePossibility possibility = new RulePossibility();
-		possibility.add(left);
-		possibility.add(right);
-
-		objects.add(left);
-		objects.add(right);
-		objects.add(redundancy);
-		objects.add(possibility);
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		session.executeWithResults(objects);
-
-		Collection<AnalyticsMessageBase> notes = result
-				.getBySeverity(Severity.NOTE);
-
-		// Has at least one item.
-		assertEquals(1, notes.size());
-
-		AnalyticsMessageBase note = notes.iterator().next();
-		assertTrue(note.getFaulty().equals(redundancy));
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/NotesTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/NotesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/NotesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/NotesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,102 @@
+package org.drools.verifier.redundancy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.Severity;
+
+public class NotesTest extends TestBase {
+
+	public void testRedundantRestrictionsInPatternPossibilities()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Notes.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant restrictions from pattern possibilities"));
+
+		Collection<Object> objects = new ArrayList<Object>();
+		LiteralRestriction left = new LiteralRestriction();
+
+		LiteralRestriction right = new LiteralRestriction();
+
+		Redundancy redundancy = new Redundancy(
+				RedundancyType.STRONG, left, right);
+
+		PatternPossibility possibility = new PatternPossibility();
+		possibility.add(left);
+		possibility.add(right);
+
+		objects.add(left);
+		objects.add(right);
+		objects.add(redundancy);
+		objects.add(possibility);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		session.executeWithResults(objects);
+
+		Collection<AnalyticsMessageBase> notes = result
+				.getBySeverity(Severity.NOTE);
+
+		// Has at least one item.
+		assertEquals(1, notes.size());
+
+		AnalyticsMessageBase note = notes.iterator().next();
+		assertTrue(note.getFaulty().equals(redundancy));
+	}
+
+	public void testRedundantPatternPossibilitiesInRulePossibilities()
+			throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Notes.drl"));
+
+		session
+				.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+						"Find redundant pattern possibilities from rule possibilities"));
+
+		Collection<Object> objects = new ArrayList<Object>();
+		PatternPossibility left = new PatternPossibility();
+
+		PatternPossibility right = new PatternPossibility();
+
+		Redundancy redundancy = new Redundancy(
+				RedundancyType.STRONG, left, right);
+
+		RulePossibility possibility = new RulePossibility();
+		possibility.add(left);
+		possibility.add(right);
+
+		objects.add(left);
+		objects.add(right);
+		objects.add(redundancy);
+		objects.add(possibility);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		session.executeWithResults(objects);
+
+		Collection<AnalyticsMessageBase> notes = result
+				.getBySeverity(Severity.NOTE);
+
+		// Has at least one item.
+		assertEquals(1, notes.size());
+
+		AnalyticsMessageBase note = notes.iterator().next();
+		assertTrue(note.getFaulty().equals(redundancy));
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundancyTestBase.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,115 +0,0 @@
-package org.drools.analytics.redundancy;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsComponent;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.analytics.report.components.Redundancy;
-
-/**
- *
- * @author Toni Rikkola
- *
- */
-public class RedundancyTestBase extends TestBase {
-
-	/**
-	 * Creates redundancy map from Redundancy objects, one rule may have several
-	 * redundancy dependencies.
-	 *
-	 * @param iter
-	 * @return
-	 */
-	protected Map<String, Set<String>> createRedundancyMap(Iterator<Object> iter) {
-
-		Map<String, Set<String>> map = new HashMap<String, Set<String>>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof Redundancy) {
-				Redundancy r = (Redundancy) o;
-				AnalyticsComponent left = (AnalyticsComponent) r.getLeft();
-				AnalyticsComponent right = (AnalyticsComponent) r.getRight();
-
-				if (map.containsKey(left.getRuleName())) {
-					Set<String> set = map.get(left.getRuleName());
-					set.add(right.getRuleName());
-				} else {
-					Set<String> set = new HashSet<String>();
-					set.add(right.getRuleName());
-					map.put(left.getRuleName(), set);
-				}
-			}
-		}
-
-		return map;
-	}
-
-	/**
-	 * Creates redundancy map from Redundancy objects, one rule may have several
-	 * redundancy dependencies.
-	 *
-	 * @param iter
-	 * @return
-	 */
-	protected Map<Cause, Set<Cause>> createRedundancyCauseMap(
-			CauseType type, Iterator<Object> iter) {
-
-		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof Redundancy) {
-				Redundancy r = (Redundancy) o;
-
-				if (r.getLeft().getCauseType() == type) {
-					Cause left = r.getLeft();
-					Cause right = r.getRight();
-
-					if (map.containsKey(left)) {
-						Set<Cause> set = map.get(left);
-						set.add(right);
-					} else {
-						Set<Cause> set = new HashSet<Cause>();
-						set.add(right);
-						map.put(left, set);
-					}
-				}
-			}
-		}
-
-		return map;
-	}
-
-	public void testDummy() {
-		// this is needed as eclipse will try to run this and produce a failure
-		// if its not here.
-	}
-
-	/**
-	 * Returns true if map contains redundancy where key is redundant to value.
-	 *
-	 * @param map
-	 * @param key
-	 * @param value
-	 * @return True if redundancy exists.
-	 */
-	protected static boolean mapContains(Map<String, Set<Redundancy>> map,
-			String key, Object value) {
-		if (map.containsKey(key)) {
-			Set<Redundancy> set = map.get(key);
-			boolean exists = set.remove(value);
-
-			// If set is empty remove key from map.
-			if (set.isEmpty()) {
-				map.remove(key);
-			}
-			return exists;
-		}
-		return false;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundancyTestBase.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,115 @@
+package org.drools.verifier.redundancy;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsComponent;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Redundancy;
+
+/**
+ *
+ * @author Toni Rikkola
+ *
+ */
+public class RedundancyTestBase extends TestBase {
+
+	/**
+	 * Creates redundancy map from Redundancy objects, one rule may have several
+	 * redundancy dependencies.
+	 *
+	 * @param iter
+	 * @return
+	 */
+	protected Map<String, Set<String>> createRedundancyMap(Iterator<Object> iter) {
+
+		Map<String, Set<String>> map = new HashMap<String, Set<String>>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Redundancy) {
+				Redundancy r = (Redundancy) o;
+				AnalyticsComponent left = (AnalyticsComponent) r.getLeft();
+				AnalyticsComponent right = (AnalyticsComponent) r.getRight();
+
+				if (map.containsKey(left.getRuleName())) {
+					Set<String> set = map.get(left.getRuleName());
+					set.add(right.getRuleName());
+				} else {
+					Set<String> set = new HashSet<String>();
+					set.add(right.getRuleName());
+					map.put(left.getRuleName(), set);
+				}
+			}
+		}
+
+		return map;
+	}
+
+	/**
+	 * Creates redundancy map from Redundancy objects, one rule may have several
+	 * redundancy dependencies.
+	 *
+	 * @param iter
+	 * @return
+	 */
+	protected Map<Cause, Set<Cause>> createRedundancyCauseMap(
+			CauseType type, Iterator<Object> iter) {
+
+		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Redundancy) {
+				Redundancy r = (Redundancy) o;
+
+				if (r.getLeft().getCauseType() == type) {
+					Cause left = r.getLeft();
+					Cause right = r.getRight();
+
+					if (map.containsKey(left)) {
+						Set<Cause> set = map.get(left);
+						set.add(right);
+					} else {
+						Set<Cause> set = new HashSet<Cause>();
+						set.add(right);
+						map.put(left, set);
+					}
+				}
+			}
+		}
+
+		return map;
+	}
+
+	public void testDummy() {
+		// this is needed as eclipse will try to run this and produce a failure
+		// if its not here.
+	}
+
+	/**
+	 * Returns true if map contains redundancy where key is redundant to value.
+	 *
+	 * @param map
+	 * @param key
+	 * @param value
+	 * @return True if redundancy exists.
+	 */
+	protected static boolean mapContains(Map<String, Set<Redundancy>> map,
+			String key, Object value) {
+		if (map.containsKey(key)) {
+			Set<Redundancy> set = map.get(key);
+			boolean exists = set.remove(value);
+
+			// If set is empty remove key from map.
+			if (set.isEmpty()) {
+				map.remove(key);
+			}
+			return exists;
+		}
+		return false;
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantConsequencesTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,55 +0,0 @@
-package org.drools.analytics.redundancy;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class RedundantConsequencesTest extends RedundancyTestBase {
-
-	public void testRedundantTextConsequences() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Consequence.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant TextConsequences"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("ConsequenceRedundancyTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 1a",
-				"Redundant consiquence 1b"));
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 1b",
-				"Redundant consiquence 1a"));
-
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 2a",
-				"Redundant consiquence 2b"));
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 2b",
-				"Redundant consiquence 2a"));
-
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 3a",
-				"Redundant consiquence 3b"));
-		assertTrue(TestBase.mapContains(map, "Redundant consiquence 3b",
-				"Redundant consiquence 3a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantConsequencesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,55 @@
+package org.drools.verifier.redundancy;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+
+public class RedundantConsequencesTest extends RedundancyTestBase {
+
+	public void testRedundantTextConsequences() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Consequence.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant TextConsequences"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> data = getTestData(this.getClass()
+				.getResourceAsStream("ConsequenceRedundancyTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, "Redundant consiquence 1a",
+				"Redundant consiquence 1b"));
+		assertTrue(TestBase.mapContains(map, "Redundant consiquence 1b",
+				"Redundant consiquence 1a"));
+
+		assertTrue(TestBase.mapContains(map, "Redundant consiquence 2a",
+				"Redundant consiquence 2b"));
+		assertTrue(TestBase.mapContains(map, "Redundant consiquence 2b",
+				"Redundant consiquence 2a"));
+
+		assertTrue(TestBase.mapContains(map, "Redundant consiquence 3a",
+				"Redundant consiquence 3b"));
+		assertTrue(TestBase.mapContains(map, "Redundant consiquence 3b",
+				"Redundant consiquence 3a"));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantPossibilitiesTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,197 +0,0 @@
-package org.drools.analytics.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.CauseType;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class RedundantPossibilitiesTest extends RedundancyTestBase {
-
-	public void testPatternPossibilityRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Possibilities.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find pattern possibility redundancy"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		Pattern p1 = new Pattern();
-		p1.setRuleName(ruleName1);
-		Pattern p2 = new Pattern();
-		p2.setRuleName(ruleName2);
-
-		LiteralRestriction lr1 = new LiteralRestriction();
-		lr1.setRuleName(ruleName1);
-		LiteralRestriction lr2 = new LiteralRestriction();
-		lr2.setRuleName(ruleName2);
-
-		PatternPossibility pp1 = new PatternPossibility();
-		pp1.setPatternId(p1.getId());
-		pp1.setRuleName(ruleName1);
-		pp1.add(lr1);
-
-		PatternPossibility pp2 = new PatternPossibility();
-		pp2.setPatternId(p2.getId());
-		pp2.setRuleName(ruleName2);
-		pp2.add(lr2);
-
-		Redundancy r1 = new Redundancy(lr1, lr2);
-		Redundancy r2 = new Redundancy(p1, p2);
-
-		data.add(p1);
-		data.add(p2);
-		data.add(lr1);
-		data.add(lr2);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(r1);
-		data.add(r2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2));
-		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testRulePossibilityRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Possibilities.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find rule possibility redundancy"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		/*
-		 * First rules. These are redundant,
-		 */
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		AnalyticsRule r1 = new AnalyticsRule();
-		r1.setRuleName(ruleName1);
-		AnalyticsRule r2 = new AnalyticsRule();
-		r2.setRuleName(ruleName2);
-
-		PatternPossibility pp1 = new PatternPossibility();
-		pp1.setRuleName(ruleName1);
-		PatternPossibility pp2 = new PatternPossibility();
-		pp2.setRuleName(ruleName2);
-
-		RulePossibility rp1 = new RulePossibility();
-		rp1.setRuleId(r1.getId());
-		rp1.setRuleName(ruleName1);
-		rp1.add(pp1);
-
-		RulePossibility rp2 = new RulePossibility();
-		rp2.setRuleId(r2.getId());
-		rp2.setRuleName(ruleName2);
-		rp2.add(pp2);
-
-		Redundancy possibilityredundancy = new Redundancy(
-				RedundancyType.STRONG, pp1, pp2);
-		Redundancy ruleRedundancy = new Redundancy(r1, r2);
-
-		data.add(r1);
-		data.add(r2);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(possibilityredundancy);
-		data.add(ruleRedundancy);
-		data.add(rp1);
-		data.add(rp2);
-
-		/*
-		 * These two rules are not redundant
-		 */
-		String ruleName3 = "Rule 3";
-		String ruleName4 = "Rule 4";
-
-		AnalyticsRule r3 = new AnalyticsRule();
-		r3.setRuleName(ruleName3);
-		AnalyticsRule r4 = new AnalyticsRule();
-		r4.setRuleName(ruleName4);
-
-		PatternPossibility pp3 = new PatternPossibility();
-		pp3.setRuleId(r3.getId());
-		pp3.setRuleName(ruleName3);
-		PatternPossibility pp4 = new PatternPossibility();
-		pp4.setRuleId(r4.getId());
-		pp4.setRuleName(ruleName4);
-		// This possibility makes them different
-		PatternPossibility pp5 = new PatternPossibility();
-		pp5.setRuleId(r4.getId());
-		pp5.setRuleName(ruleName4);
-
-		RulePossibility rp3 = new RulePossibility();
-		rp3.setRuleId(r3.getId());
-		rp3.setRuleName(ruleName3);
-		rp3.add(pp3);
-
-		RulePossibility rp4 = new RulePossibility();
-		rp4.setRuleId(r4.getId());
-		rp4.setRuleName(ruleName4);
-		rp4.add(pp4);
-		rp4.add(pp5);
-
-		Redundancy possibilityredundancy2 = new Redundancy(
-				RedundancyType.STRONG, pp3, pp4);
-		Redundancy ruleRedundancy2 = new Redundancy(r3, r4);
-
-		data.add(r3);
-		data.add(r4);
-		data.add(pp3);
-		data.add(pp4);
-		data.add(pp5);
-		data.add(possibilityredundancy2);
-		data.add(ruleRedundancy2);
-		data.add(rp3);
-		data.add(rp4);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createRedundancyCauseMap(
-				CauseType.RULE_POSSIBILITY, sessionResult
-						.iterateObjects());
-
-		assertTrue(TestBase.causeMapContains(map, rp1, rp2));
-		assertFalse(TestBase.causeMapContains(map, rp3, rp4));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantPossibilitiesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,197 @@
+package org.drools.verifier.redundancy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
+
+public class RedundantPossibilitiesTest extends RedundancyTestBase {
+
+	public void testPatternPossibilityRedundancy() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find pattern possibility redundancy"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		Pattern p1 = new Pattern();
+		p1.setRuleName(ruleName1);
+		Pattern p2 = new Pattern();
+		p2.setRuleName(ruleName2);
+
+		LiteralRestriction lr1 = new LiteralRestriction();
+		lr1.setRuleName(ruleName1);
+		LiteralRestriction lr2 = new LiteralRestriction();
+		lr2.setRuleName(ruleName2);
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setPatternId(p1.getId());
+		pp1.setRuleName(ruleName1);
+		pp1.add(lr1);
+
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setPatternId(p2.getId());
+		pp2.setRuleName(ruleName2);
+		pp2.add(lr2);
+
+		Redundancy r1 = new Redundancy(lr1, lr2);
+		Redundancy r2 = new Redundancy(p1, p2);
+
+		data.add(p1);
+		data.add(p2);
+		data.add(lr1);
+		data.add(lr2);
+		data.add(pp1);
+		data.add(pp2);
+		data.add(r1);
+		data.add(r2);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2));
+		assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testRulePossibilityRedundancy() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find rule possibility redundancy"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		/*
+		 * First rules. These are redundant,
+		 */
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		AnalyticsRule r1 = new AnalyticsRule();
+		r1.setRuleName(ruleName1);
+		AnalyticsRule r2 = new AnalyticsRule();
+		r2.setRuleName(ruleName2);
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setRuleName(ruleName1);
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setRuleName(ruleName2);
+
+		RulePossibility rp1 = new RulePossibility();
+		rp1.setRuleId(r1.getId());
+		rp1.setRuleName(ruleName1);
+		rp1.add(pp1);
+
+		RulePossibility rp2 = new RulePossibility();
+		rp2.setRuleId(r2.getId());
+		rp2.setRuleName(ruleName2);
+		rp2.add(pp2);
+
+		Redundancy possibilityredundancy = new Redundancy(
+				RedundancyType.STRONG, pp1, pp2);
+		Redundancy ruleRedundancy = new Redundancy(r1, r2);
+
+		data.add(r1);
+		data.add(r2);
+		data.add(pp1);
+		data.add(pp2);
+		data.add(possibilityredundancy);
+		data.add(ruleRedundancy);
+		data.add(rp1);
+		data.add(rp2);
+
+		/*
+		 * These two rules are not redundant
+		 */
+		String ruleName3 = "Rule 3";
+		String ruleName4 = "Rule 4";
+
+		AnalyticsRule r3 = new AnalyticsRule();
+		r3.setRuleName(ruleName3);
+		AnalyticsRule r4 = new AnalyticsRule();
+		r4.setRuleName(ruleName4);
+
+		PatternPossibility pp3 = new PatternPossibility();
+		pp3.setRuleId(r3.getId());
+		pp3.setRuleName(ruleName3);
+		PatternPossibility pp4 = new PatternPossibility();
+		pp4.setRuleId(r4.getId());
+		pp4.setRuleName(ruleName4);
+		// This possibility makes them different
+		PatternPossibility pp5 = new PatternPossibility();
+		pp5.setRuleId(r4.getId());
+		pp5.setRuleName(ruleName4);
+
+		RulePossibility rp3 = new RulePossibility();
+		rp3.setRuleId(r3.getId());
+		rp3.setRuleName(ruleName3);
+		rp3.add(pp3);
+
+		RulePossibility rp4 = new RulePossibility();
+		rp4.setRuleId(r4.getId());
+		rp4.setRuleName(ruleName4);
+		rp4.add(pp4);
+		rp4.add(pp5);
+
+		Redundancy possibilityredundancy2 = new Redundancy(
+				RedundancyType.STRONG, pp3, pp4);
+		Redundancy ruleRedundancy2 = new Redundancy(r3, r4);
+
+		data.add(r3);
+		data.add(r4);
+		data.add(pp3);
+		data.add(pp4);
+		data.add(pp5);
+		data.add(possibilityredundancy2);
+		data.add(ruleRedundancy2);
+		data.add(rp3);
+		data.add(rp4);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<Cause, Set<Cause>> map = createRedundancyCauseMap(
+				CauseType.RULE_POSSIBILITY, sessionResult
+						.iterateObjects());
+
+		assertTrue(TestBase.causeMapContains(map, rp1, rp2));
+		assertFalse(TestBase.causeMapContains(map, rp3, rp4));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantRestrictionsTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,80 +0,0 @@
-package org.drools.analytics.redundancy;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class RedundantRestrictionsTest extends RedundancyTestBase {
-
-	public void testAnalyticsLiteralRestrictionRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant LiteralRestriction"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("RedundancyLiteralRestrictionTest.drl"),
-				result.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue((TestBase.mapContains(map, "Redundant 1a", "Redundant 1b") ^ TestBase
-				.mapContains(map, "Redundant 1b", "Redundant 1a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 2a", "Redundant 2b") ^ TestBase
-				.mapContains(map, "Redundant 2b", "Redundant 2a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 3a", "Redundant 3b") ^ TestBase
-				.mapContains(map, "Redundant 3b", "Redundant 3a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 4a", "Redundant 4b") ^ TestBase
-				.mapContains(map, "Redundant 4b", "Redundant 4a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 5a", "Redundant 5b") ^ TestBase
-				.mapContains(map, "Redundant 5b", "Redundant 5a")));
-		assertTrue((TestBase.mapContains(map, "Redundant 6a", "Redundant 6b") ^ TestBase
-				.mapContains(map, "Redundant 6b", "Redundant 6a")));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testAnalyticsVariableRestrictionRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant VariableRestriction"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("SubsumptionVariableRestrictionTest.drl"),
-				result.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, "Redundant 1a", "Redundant 1b")
-				^ TestBase.mapContains(map, "Redundant 1b", "Redundant 1a"));
-		assertTrue(TestBase.mapContains(map, "Redundant 2a", "Redundant 2a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantRestrictionsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,80 @@
+package org.drools.verifier.redundancy;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+
+public class RedundantRestrictionsTest extends RedundancyTestBase {
+
+	public void testAnalyticsLiteralRestrictionRedundancy() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant LiteralRestriction"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> data = getTestData(this.getClass()
+				.getResourceAsStream("RedundancyLiteralRestrictionTest.drl"),
+				result.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue((TestBase.mapContains(map, "Redundant 1a", "Redundant 1b") ^ TestBase
+				.mapContains(map, "Redundant 1b", "Redundant 1a")));
+		assertTrue((TestBase.mapContains(map, "Redundant 2a", "Redundant 2b") ^ TestBase
+				.mapContains(map, "Redundant 2b", "Redundant 2a")));
+		assertTrue((TestBase.mapContains(map, "Redundant 3a", "Redundant 3b") ^ TestBase
+				.mapContains(map, "Redundant 3b", "Redundant 3a")));
+		assertTrue((TestBase.mapContains(map, "Redundant 4a", "Redundant 4b") ^ TestBase
+				.mapContains(map, "Redundant 4b", "Redundant 4a")));
+		assertTrue((TestBase.mapContains(map, "Redundant 5a", "Redundant 5b") ^ TestBase
+				.mapContains(map, "Redundant 5b", "Redundant 5a")));
+		assertTrue((TestBase.mapContains(map, "Redundant 6a", "Redundant 6b") ^ TestBase
+				.mapContains(map, "Redundant 6b", "Redundant 6a")));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testAnalyticsVariableRestrictionRedundancy() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant VariableRestriction"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> data = getTestData(this.getClass()
+				.getResourceAsStream("SubsumptionVariableRestrictionTest.drl"),
+				result.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, "Redundant 1a", "Redundant 1b")
+				^ TestBase.mapContains(map, "Redundant 1b", "Redundant 1a"));
+		assertTrue(TestBase.mapContains(map, "Redundant 2a", "Redundant 2a"));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantRulesAndPatternsTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,166 +0,0 @@
-package org.drools.analytics.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.TextConsequence;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class RedundantRulesAndPatternsTest extends RedundancyTestBase {
-
-	public void testRuleRedundancy() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Rules.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant Rules, strong redundancy"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		AnalyticsRule rule1 = new AnalyticsRule();
-		rule1.setRuleName(ruleName1);
-		AnalyticsRule rule2 = new AnalyticsRule();
-		rule2.setRuleName(ruleName2);
-
-		TextConsequence c1 = new TextConsequence();
-		c1.setRuleName(ruleName1);
-		TextConsequence c2 = new TextConsequence();
-		c2.setRuleName(ruleName2);
-
-		Redundancy r1 = new Redundancy(rule1, rule2);
-		Redundancy r2 = new Redundancy(c1, c2);
-
-		data.add(rule1);
-		data.add(rule2);
-		data.add(c1);
-		data.add(c2);
-		data.add(r1);
-		data.add(r2);
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2)
-				^ TestBase.mapContains(map, ruleName2, ruleName1));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testPatternRedundancyWithRestrictions() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant Patterns with restrictions"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("PatternRedundancyTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 1a",
-				"Pattern redundancy with restrictions 1b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 1b",
-						"Pattern redundancy with restrictions 1a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 2a",
-				"Pattern redundancy with restrictions 2b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 2b",
-						"Pattern redundancy with restrictions 2a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 3a",
-				"Pattern redundancy with restrictions 3b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 3b",
-						"Pattern redundancy with restrictions 3a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy with restrictions 4a",
-				"Pattern redundancy with restrictions 4b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy with restrictions 4b",
-						"Pattern redundancy with restrictions 4a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testPatternRedundancyWithoutRestrictions() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Patterns.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant Patterns without restrictions"));
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		Collection<? extends Object> data = getTestData(this.getClass()
-				.getResourceAsStream("PatternRedundancyTest.drl"), result
-				.getAnalyticsData());
-
-		session.setGlobal("result", result);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<String, Set<String>> map = createRedundancyMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 1a",
-				"Pattern redundancy without restrictions 1b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 1b",
-						"Pattern redundancy without restrictions 1a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 2a",
-				"Pattern redundancy without restrictions 2b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 2b",
-						"Pattern redundancy without restrictions 2a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 3a",
-				"Pattern redundancy without restrictions 3b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 3b",
-						"Pattern redundancy without restrictions 3a"));
-		assertTrue(TestBase.mapContains(map,
-				"Pattern redundancy without restrictions 4a",
-				"Pattern redundancy without restrictions 4b")
-				^ TestBase.mapContains(map,
-						"Pattern redundancy without restrictions 4b",
-						"Pattern redundancy without restrictions 4a"));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/RedundantRulesAndPatternsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,166 @@
+package org.drools.verifier.redundancy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.TextConsequence;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Redundancy;
+
+public class RedundantRulesAndPatternsTest extends RedundancyTestBase {
+
+	public void testRuleRedundancy() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Rules.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant Rules, strong redundancy"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		AnalyticsRule rule1 = new AnalyticsRule();
+		rule1.setRuleName(ruleName1);
+		AnalyticsRule rule2 = new AnalyticsRule();
+		rule2.setRuleName(ruleName2);
+
+		TextConsequence c1 = new TextConsequence();
+		c1.setRuleName(ruleName1);
+		TextConsequence c2 = new TextConsequence();
+		c2.setRuleName(ruleName2);
+
+		Redundancy r1 = new Redundancy(rule1, rule2);
+		Redundancy r2 = new Redundancy(c1, c2);
+
+		data.add(rule1);
+		data.add(rule2);
+		data.add(c1);
+		data.add(c2);
+		data.add(r1);
+		data.add(r2);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map, ruleName1, ruleName2)
+				^ TestBase.mapContains(map, ruleName2, ruleName1));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testPatternRedundancyWithRestrictions() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant Patterns with restrictions"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> data = getTestData(this.getClass()
+				.getResourceAsStream("PatternRedundancyTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy with restrictions 1a",
+				"Pattern redundancy with restrictions 1b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy with restrictions 1b",
+						"Pattern redundancy with restrictions 1a"));
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy with restrictions 2a",
+				"Pattern redundancy with restrictions 2b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy with restrictions 2b",
+						"Pattern redundancy with restrictions 2a"));
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy with restrictions 3a",
+				"Pattern redundancy with restrictions 3b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy with restrictions 3b",
+						"Pattern redundancy with restrictions 3a"));
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy with restrictions 4a",
+				"Pattern redundancy with restrictions 4b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy with restrictions 4b",
+						"Pattern redundancy with restrictions 4a"));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testPatternRedundancyWithoutRestrictions() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Patterns.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant Patterns without restrictions"));
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		Collection<? extends Object> data = getTestData(this.getClass()
+				.getResourceAsStream("PatternRedundancyTest.drl"), result
+				.getAnalyticsData());
+
+		session.setGlobal("result", result);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<String, Set<String>> map = createRedundancyMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy without restrictions 1a",
+				"Pattern redundancy without restrictions 1b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy without restrictions 1b",
+						"Pattern redundancy without restrictions 1a"));
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy without restrictions 2a",
+				"Pattern redundancy without restrictions 2b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy without restrictions 2b",
+						"Pattern redundancy without restrictions 2a"));
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy without restrictions 3a",
+				"Pattern redundancy without restrictions 3b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy without restrictions 3b",
+						"Pattern redundancy without restrictions 3a"));
+		assertTrue(TestBase.mapContains(map,
+				"Pattern redundancy without restrictions 4a",
+				"Pattern redundancy without restrictions 4b")
+				^ TestBase.mapContains(map,
+						"Pattern redundancy without restrictions 4b",
+						"Pattern redundancy without restrictions 4a"));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/WarningsTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/WarningsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,116 +0,0 @@
-package org.drools.analytics.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.drools.StatelessSession;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.report.components.AnalyticsMessage;
-import org.drools.analytics.report.components.AnalyticsMessageBase;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
-import org.drools.analytics.report.components.Severity;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class WarningsTest extends TestBase {
-
-	public void testRedundantRules() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Warnings.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find redundant rule possibilities from different rules"));
-
-		Collection<Object> objects = new ArrayList<Object>();
-
-		AnalyticsRule rule1 = new AnalyticsRule();
-		AnalyticsRule rule2 = new AnalyticsRule();
-
-		Redundancy ruleRedundancy = new Redundancy(
-				RedundancyType.STRONG, rule1, rule2);
-
-		RulePossibility rp1 = new RulePossibility();
-		rp1.setRuleId(rule1.getId());
-
-		RulePossibility rp2 = new RulePossibility();
-		rp2.setRuleId(rule2.getId());
-
-		Redundancy rulePossibilityRedundancy1 = new Redundancy(
-				RedundancyType.STRONG, rp1, rp2);
-
-		Redundancy rulePossibilityRedundancy2 = new Redundancy(
-				RedundancyType.STRONG, rp2, rp1);
-
-		objects.add(rule1);
-		objects.add(rule2);
-		objects.add(ruleRedundancy);
-		objects.add(rp1);
-		objects.add(rp2);
-		objects.add(rulePossibilityRedundancy1);
-		objects.add(rulePossibilityRedundancy2);
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		session.executeWithResults(objects);
-
-		Collection<AnalyticsMessageBase> notes = result
-				.getBySeverity(Severity.WARNING);
-
-		// Has at least one item.
-		assertEquals(1, notes.size());
-
-		AnalyticsMessageBase warning = notes.iterator().next();
-		assertTrue(warning.getFaulty().equals(rulePossibilityRedundancy1));
-	}
-
-	public void testSubsumptantRules() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Warnings.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find subsumptant rule possibilities from different rules"));
-
-		Collection<Object> objects = new ArrayList<Object>();
-
-		AnalyticsRule rule1 = new AnalyticsRule();
-		AnalyticsRule rule2 = new AnalyticsRule();
-
-		Redundancy ruleRedundancy = new Redundancy(
-				RedundancyType.STRONG, rule1, rule2);
-
-		RulePossibility rp1 = new RulePossibility();
-		rp1.setRuleId(rule1.getId());
-
-		RulePossibility rp2 = new RulePossibility();
-		rp2.setRuleId(rule2.getId());
-
-		Redundancy rulePossibilityRedundancy1 = new Redundancy(
-				RedundancyType.STRONG, rp1, rp2);
-
-		objects.add(rule1);
-		objects.add(rule2);
-		objects.add(ruleRedundancy);
-		objects.add(rp1);
-		objects.add(rp2);
-		objects.add(rulePossibilityRedundancy1);
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		session.executeWithResults(objects);
-
-		Collection<AnalyticsMessageBase> notes = result
-				.getBySeverity(Severity.WARNING);
-
-		// Has at least one item.
-		assertEquals(1, notes.size());
-
-		AnalyticsMessageBase warning = notes.iterator().next();
-		assertTrue(warning.getFaulty().equals(rulePossibilityRedundancy1));
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/WarningsTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/redundancy/WarningsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/WarningsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/redundancy/WarningsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,116 @@
+package org.drools.verifier.redundancy;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.drools.StatelessSession;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.AnalyticsMessage;
+import org.drools.verifier.report.components.AnalyticsMessageBase;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.Severity;
+
+public class WarningsTest extends TestBase {
+
+	public void testRedundantRules() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Warnings.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find redundant rule possibilities from different rules"));
+
+		Collection<Object> objects = new ArrayList<Object>();
+
+		AnalyticsRule rule1 = new AnalyticsRule();
+		AnalyticsRule rule2 = new AnalyticsRule();
+
+		Redundancy ruleRedundancy = new Redundancy(
+				RedundancyType.STRONG, rule1, rule2);
+
+		RulePossibility rp1 = new RulePossibility();
+		rp1.setRuleId(rule1.getId());
+
+		RulePossibility rp2 = new RulePossibility();
+		rp2.setRuleId(rule2.getId());
+
+		Redundancy rulePossibilityRedundancy1 = new Redundancy(
+				RedundancyType.STRONG, rp1, rp2);
+
+		Redundancy rulePossibilityRedundancy2 = new Redundancy(
+				RedundancyType.STRONG, rp2, rp1);
+
+		objects.add(rule1);
+		objects.add(rule2);
+		objects.add(ruleRedundancy);
+		objects.add(rp1);
+		objects.add(rp2);
+		objects.add(rulePossibilityRedundancy1);
+		objects.add(rulePossibilityRedundancy2);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		session.executeWithResults(objects);
+
+		Collection<AnalyticsMessageBase> notes = result
+				.getBySeverity(Severity.WARNING);
+
+		// Has at least one item.
+		assertEquals(1, notes.size());
+
+		AnalyticsMessageBase warning = notes.iterator().next();
+		assertTrue(warning.getFaulty().equals(rulePossibilityRedundancy1));
+	}
+
+	public void testSubsumptantRules() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Warnings.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find subsumptant rule possibilities from different rules"));
+
+		Collection<Object> objects = new ArrayList<Object>();
+
+		AnalyticsRule rule1 = new AnalyticsRule();
+		AnalyticsRule rule2 = new AnalyticsRule();
+
+		Redundancy ruleRedundancy = new Redundancy(
+				RedundancyType.STRONG, rule1, rule2);
+
+		RulePossibility rp1 = new RulePossibility();
+		rp1.setRuleId(rule1.getId());
+
+		RulePossibility rp2 = new RulePossibility();
+		rp2.setRuleId(rule2.getId());
+
+		Redundancy rulePossibilityRedundancy1 = new Redundancy(
+				RedundancyType.STRONG, rp1, rp2);
+
+		objects.add(rule1);
+		objects.add(rule2);
+		objects.add(ruleRedundancy);
+		objects.add(rp1);
+		objects.add(rp2);
+		objects.add(rulePossibilityRedundancy1);
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		session.executeWithResults(objects);
+
+		Collection<AnalyticsMessageBase> notes = result
+				.getBySeverity(Severity.WARNING);
+
+		// Has at least one item.
+		assertEquals(1, notes.size());
+
+		AnalyticsMessageBase warning = notes.iterator().next();
+		assertTrue(warning.getFaulty().equals(rulePossibilityRedundancy1));
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/subsumption)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/subsumption/SubsumptantPossibilitiesTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,307 +0,0 @@
-package org.drools.analytics.subsumption;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.AnalyticsRule;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.components.Pattern;
-import org.drools.analytics.components.PatternPossibility;
-import org.drools.analytics.components.RulePossibility;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.RedundancyType;
-import org.drools.analytics.report.components.Subsumption;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-
-public class SubsumptantPossibilitiesTest extends SubsumptionTestBase {
-
-	public void testPatternPossibilityRedundancy1() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Possibilities.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find subsumptant pattern possibilities"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		/*
-		 * Redundant patterns
-		 */
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		Pattern p1 = new Pattern();
-		p1.setRuleName(ruleName1);
-		Pattern p2 = new Pattern();
-		p2.setRuleName(ruleName2);
-
-		LiteralRestriction lr1 = new LiteralRestriction();
-		lr1.setRuleName(ruleName1);
-		lr1.setOrderNumber(0);
-		LiteralRestriction lr2 = new LiteralRestriction();
-		lr2.setRuleName(ruleName2);
-		lr2.setOrderNumber(0);
-		LiteralRestriction lr3 = new LiteralRestriction();
-		lr3.setRuleName(ruleName2);
-		lr3.setOrderNumber(1);
-
-		PatternPossibility pp1 = new PatternPossibility();
-		pp1.setPatternId(p1.getId());
-		pp1.setRuleName(ruleName1);
-		pp1.add(lr1);
-
-		PatternPossibility pp2 = new PatternPossibility();
-		pp2.setPatternId(p2.getId());
-		pp2.setRuleName(ruleName2);
-		pp2.add(lr2);
-		pp2.add(lr3);
-
-		Redundancy r1 = new Redundancy(lr1, lr2);
-		Redundancy r2 = new Redundancy(p1, p2);
-
-		data.add(p1);
-		data.add(p2);
-		data.add(lr1);
-		data.add(lr2);
-		data.add(lr3);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(r1);
-		data.add(r2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.causeMapContains(map, pp1, pp2));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testPatternPossibilityRedundancy2() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Possibilities.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find subsumptant pattern possibilities"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		/*
-		 * Not redundant patterns
-		 * 
-		 * For example: Pattern ( a==1, b==1, c==1) and Pattern ( a==1, c==1)
-		 */
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		Pattern p1 = new Pattern();
-		p1.setRuleName(ruleName1);
-		Pattern p2 = new Pattern();
-		p2.setRuleName(ruleName2);
-
-		LiteralRestriction lr1 = new LiteralRestriction();
-		lr1.setRuleName(ruleName1);
-		lr1.setOrderNumber(0);
-		LiteralRestriction lr2 = new LiteralRestriction();
-		lr2.setRuleName(ruleName2);
-		lr2.setOrderNumber(0);
-		LiteralRestriction lr3 = new LiteralRestriction();
-		lr3.setRuleName(ruleName2);
-		lr3.setOrderNumber(1);
-
-		PatternPossibility pp1 = new PatternPossibility();
-		pp1.setPatternId(p1.getId());
-		pp1.setRuleName(ruleName1);
-		pp1.add(lr1);
-
-		PatternPossibility pp2 = new PatternPossibility();
-		pp2.setPatternId(p2.getId());
-		pp2.setRuleName(ruleName2);
-		pp2.add(lr2);
-		pp2.add(lr3);
-
-		Redundancy r1 = new Redundancy(lr1, lr3);
-		Redundancy r2 = new Redundancy(p1, p2);
-
-		data.add(p1);
-		data.add(p2);
-		data.add(lr1);
-		data.add(lr2);
-		data.add(lr3);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(r1);
-		data.add(r2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
-				.iterateObjects());
-
-		assertFalse(TestBase.causeMapContains(map, pp1, pp2));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testRulePossibilityRedundancy1() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Possibilities.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find subsumptant rule possibilities"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		/*
-		 * First rules. These are subsumptant,
-		 */
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		AnalyticsRule r1 = new AnalyticsRule();
-		r1.setRuleName(ruleName1);
-		AnalyticsRule r2 = new AnalyticsRule();
-		r2.setRuleName(ruleName2);
-
-		PatternPossibility pp1 = new PatternPossibility();
-		pp1.setRuleName(ruleName1);
-		PatternPossibility pp2 = new PatternPossibility();
-		pp2.setRuleName(ruleName2);
-		PatternPossibility pp3 = new PatternPossibility();
-		pp3.setRuleName(ruleName2);
-
-		RulePossibility rp1 = new RulePossibility();
-		rp1.setRuleId(r1.getId());
-		rp1.setRuleName(ruleName1);
-		rp1.add(pp1);
-
-		RulePossibility rp2 = new RulePossibility();
-		rp2.setRuleId(r2.getId());
-		rp2.setRuleName(ruleName2);
-		rp2.add(pp2);
-		rp2.add(pp3);
-
-		Redundancy possibilityredundancy = new Redundancy(
-				RedundancyType.STRONG, pp1, pp2);
-		Redundancy ruleRedundancy = new Redundancy(r1, r2);
-
-		data.add(r1);
-		data.add(r2);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(pp3);
-		data.add(possibilityredundancy);
-		data.add(ruleRedundancy);
-		data.add(rp1);
-		data.add(rp2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.causeMapContains(map, rp1, rp2));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testRulePossibilityRedundancy2() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Possibilities.drl"));
-
-		 session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-		 "Find subsumptant rule possibilities"));
-//		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-//				"XXX: test rule"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		/*
-		 * First rules. These are subsumptant,
-		 */
-		String ruleName1 = "Rule 1";
-		String ruleName2 = "Rule 2";
-
-		AnalyticsRule r1 = new AnalyticsRule();
-		r1.setRuleName(ruleName1);
-		AnalyticsRule r2 = new AnalyticsRule();
-		r2.setRuleName(ruleName2);
-
-		PatternPossibility pp1 = new PatternPossibility();
-		pp1.setRuleName(ruleName1);
-		PatternPossibility pp2 = new PatternPossibility();
-		pp2.setRuleName(ruleName1);
-		PatternPossibility pp3 = new PatternPossibility();
-		pp3.setRuleName(ruleName2);
-		PatternPossibility pp4 = new PatternPossibility();
-		pp4.setRuleName(ruleName2);
-
-		RulePossibility rp1 = new RulePossibility();
-		rp1.setRuleId(r1.getId());
-		rp1.setRuleName(ruleName1);
-		rp1.add(pp1);
-		rp1.add(pp2);
-
-		RulePossibility rp2 = new RulePossibility();
-		rp2.setRuleId(r2.getId());
-		rp2.setRuleName(ruleName2);
-		rp2.add(pp3);
-		rp2.add(pp4);
-
-		Redundancy possibilityredundancy = new Redundancy(
-				RedundancyType.STRONG, pp1, pp3);
-		Subsumption possibilitysubsupmtion = new Subsumption(pp2, pp4);
-		Redundancy ruleRedundancy = new Redundancy(r1, r2);
-
-		data.add(r1);
-		data.add(r2);
-		data.add(pp1);
-		data.add(pp2);
-		data.add(pp3);
-		data.add(possibilityredundancy);
-		data.add(possibilitysubsupmtion);
-		data.add(ruleRedundancy);
-		data.add(rp1);
-		data.add(rp2);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.causeMapContains(map, rp1, rp2));
-		assertTrue(TestBase.causeMapContains(map, pp2, pp4));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/subsumption/SubsumptantPossibilitiesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,307 @@
+package org.drools.verifier.subsumption;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.AnalyticsRule;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternPossibility;
+import org.drools.verifier.components.RulePossibility;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.Subsumption;
+
+public class SubsumptantPossibilitiesTest extends SubsumptionTestBase {
+
+	public void testPatternPossibilityRedundancy1() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find subsumptant pattern possibilities"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		/*
+		 * Redundant patterns
+		 */
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		Pattern p1 = new Pattern();
+		p1.setRuleName(ruleName1);
+		Pattern p2 = new Pattern();
+		p2.setRuleName(ruleName2);
+
+		LiteralRestriction lr1 = new LiteralRestriction();
+		lr1.setRuleName(ruleName1);
+		lr1.setOrderNumber(0);
+		LiteralRestriction lr2 = new LiteralRestriction();
+		lr2.setRuleName(ruleName2);
+		lr2.setOrderNumber(0);
+		LiteralRestriction lr3 = new LiteralRestriction();
+		lr3.setRuleName(ruleName2);
+		lr3.setOrderNumber(1);
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setPatternId(p1.getId());
+		pp1.setRuleName(ruleName1);
+		pp1.add(lr1);
+
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setPatternId(p2.getId());
+		pp2.setRuleName(ruleName2);
+		pp2.add(lr2);
+		pp2.add(lr3);
+
+		Redundancy r1 = new Redundancy(lr1, lr2);
+		Redundancy r2 = new Redundancy(p1, p2);
+
+		data.add(p1);
+		data.add(p2);
+		data.add(lr1);
+		data.add(lr2);
+		data.add(lr3);
+		data.add(pp1);
+		data.add(pp2);
+		data.add(r1);
+		data.add(r2);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.causeMapContains(map, pp1, pp2));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testPatternPossibilityRedundancy2() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find subsumptant pattern possibilities"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		/*
+		 * Not redundant patterns
+		 * 
+		 * For example: Pattern ( a==1, b==1, c==1) and Pattern ( a==1, c==1)
+		 */
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		Pattern p1 = new Pattern();
+		p1.setRuleName(ruleName1);
+		Pattern p2 = new Pattern();
+		p2.setRuleName(ruleName2);
+
+		LiteralRestriction lr1 = new LiteralRestriction();
+		lr1.setRuleName(ruleName1);
+		lr1.setOrderNumber(0);
+		LiteralRestriction lr2 = new LiteralRestriction();
+		lr2.setRuleName(ruleName2);
+		lr2.setOrderNumber(0);
+		LiteralRestriction lr3 = new LiteralRestriction();
+		lr3.setRuleName(ruleName2);
+		lr3.setOrderNumber(1);
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setPatternId(p1.getId());
+		pp1.setRuleName(ruleName1);
+		pp1.add(lr1);
+
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setPatternId(p2.getId());
+		pp2.setRuleName(ruleName2);
+		pp2.add(lr2);
+		pp2.add(lr3);
+
+		Redundancy r1 = new Redundancy(lr1, lr3);
+		Redundancy r2 = new Redundancy(p1, p2);
+
+		data.add(p1);
+		data.add(p2);
+		data.add(lr1);
+		data.add(lr2);
+		data.add(lr3);
+		data.add(pp1);
+		data.add(pp2);
+		data.add(r1);
+		data.add(r2);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertFalse(TestBase.causeMapContains(map, pp1, pp2));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testRulePossibilityRedundancy1() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Possibilities.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find subsumptant rule possibilities"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		/*
+		 * First rules. These are subsumptant,
+		 */
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		AnalyticsRule r1 = new AnalyticsRule();
+		r1.setRuleName(ruleName1);
+		AnalyticsRule r2 = new AnalyticsRule();
+		r2.setRuleName(ruleName2);
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setRuleName(ruleName1);
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setRuleName(ruleName2);
+		PatternPossibility pp3 = new PatternPossibility();
+		pp3.setRuleName(ruleName2);
+
+		RulePossibility rp1 = new RulePossibility();
+		rp1.setRuleId(r1.getId());
+		rp1.setRuleName(ruleName1);
+		rp1.add(pp1);
+
+		RulePossibility rp2 = new RulePossibility();
+		rp2.setRuleId(r2.getId());
+		rp2.setRuleName(ruleName2);
+		rp2.add(pp2);
+		rp2.add(pp3);
+
+		Redundancy possibilityredundancy = new Redundancy(
+				RedundancyType.STRONG, pp1, pp2);
+		Redundancy ruleRedundancy = new Redundancy(r1, r2);
+
+		data.add(r1);
+		data.add(r2);
+		data.add(pp1);
+		data.add(pp2);
+		data.add(pp3);
+		data.add(possibilityredundancy);
+		data.add(ruleRedundancy);
+		data.add(rp1);
+		data.add(rp2);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.causeMapContains(map, rp1, rp2));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testRulePossibilityRedundancy2() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Possibilities.drl"));
+
+		 session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+		 "Find subsumptant rule possibilities"));
+//		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+//				"XXX: test rule"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		/*
+		 * First rules. These are subsumptant,
+		 */
+		String ruleName1 = "Rule 1";
+		String ruleName2 = "Rule 2";
+
+		AnalyticsRule r1 = new AnalyticsRule();
+		r1.setRuleName(ruleName1);
+		AnalyticsRule r2 = new AnalyticsRule();
+		r2.setRuleName(ruleName2);
+
+		PatternPossibility pp1 = new PatternPossibility();
+		pp1.setRuleName(ruleName1);
+		PatternPossibility pp2 = new PatternPossibility();
+		pp2.setRuleName(ruleName1);
+		PatternPossibility pp3 = new PatternPossibility();
+		pp3.setRuleName(ruleName2);
+		PatternPossibility pp4 = new PatternPossibility();
+		pp4.setRuleName(ruleName2);
+
+		RulePossibility rp1 = new RulePossibility();
+		rp1.setRuleId(r1.getId());
+		rp1.setRuleName(ruleName1);
+		rp1.add(pp1);
+		rp1.add(pp2);
+
+		RulePossibility rp2 = new RulePossibility();
+		rp2.setRuleId(r2.getId());
+		rp2.setRuleName(ruleName2);
+		rp2.add(pp3);
+		rp2.add(pp4);
+
+		Redundancy possibilityredundancy = new Redundancy(
+				RedundancyType.STRONG, pp1, pp3);
+		Subsumption possibilitysubsupmtion = new Subsumption(pp2, pp4);
+		Redundancy ruleRedundancy = new Redundancy(r1, r2);
+
+		data.add(r1);
+		data.add(r2);
+		data.add(pp1);
+		data.add(pp2);
+		data.add(pp3);
+		data.add(possibilityredundancy);
+		data.add(possibilitysubsupmtion);
+		data.add(ruleRedundancy);
+		data.add(rp1);
+		data.add(rp2);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.causeMapContains(map, rp1, rp2));
+		assertTrue(TestBase.causeMapContains(map, pp2, pp4));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/subsumption/SubsumptantRestrictionsTest.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,182 +0,0 @@
-package org.drools.analytics.subsumption;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.analytics.TestBase;
-import org.drools.analytics.components.Field;
-import org.drools.analytics.components.LiteralRestriction;
-import org.drools.analytics.dao.AnalyticsResult;
-import org.drools.analytics.dao.AnalyticsResultFactory;
-import org.drools.analytics.report.components.Cause;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.base.evaluators.Operator;
-
-public class SubsumptantRestrictionsTest extends SubsumptionTestBase {
-
-	public void testRestrictionRedundancyGreater() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find subsumptant restrictions, greater than"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		/*
-		 * Redundant restrictions
-		 */
-		// Doubles
-		Field field1 = new Field();
-
-		LiteralRestriction lr1 = new LiteralRestriction();
-		lr1.setOrderNumber(0);
-		lr1.setFieldId(field1.getId());
-		lr1.setValue("1.0");
-		lr1.setOperator(Operator.GREATER);
-
-		LiteralRestriction lr2 = new LiteralRestriction();
-		lr2.setOrderNumber(1);
-		lr2.setFieldId(field1.getId());
-		lr2.setValue("2.0");
-		lr2.setOperator(Operator.GREATER);
-
-		// Integers
-		Field field2 = new Field();
-
-		LiteralRestriction lr3 = new LiteralRestriction();
-		lr3.setOrderNumber(0);
-		lr3.setFieldId(field2.getId());
-		lr3.setValue("1");
-		lr3.setOperator(Operator.GREATER);
-
-		LiteralRestriction lr4 = new LiteralRestriction();
-		lr4.setOrderNumber(1);
-		lr4.setFieldId(field2.getId());
-		lr4.setValue("2");
-		lr4.setOperator(Operator.GREATER_OR_EQUAL);
-
-		// Dates
-		Field field3 = new Field();
-
-		LiteralRestriction lr5 = new LiteralRestriction();
-		lr5.setOrderNumber(0);
-		lr5.setFieldId(field3.getId());
-		lr5.setValue("10-dec-2005");
-		lr5.setOperator(Operator.GREATER);
-
-		LiteralRestriction lr6 = new LiteralRestriction();
-		lr6.setOrderNumber(1);
-		lr6.setFieldId(field3.getId());
-		lr6.setValue("10-dec-2008");
-		lr6.setOperator(Operator.EQUAL);
-
-		data.add(lr1);
-		data.add(lr2);
-		data.add(lr3);
-		data.add(lr4);
-		data.add(lr5);
-		data.add(lr6);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.causeMapContains(map, lr1, lr2));
-		assertTrue(TestBase.causeMapContains(map, lr3, lr4));
-		assertTrue(TestBase.causeMapContains(map, lr5, lr6));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-
-	public void testRestrictionRedundancyLess() throws Exception {
-		StatelessSession session = getStatelessSession(this.getClass()
-				.getResourceAsStream("Restrictions.drl"));
-
-		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
-				"Find subsumptant restrictions, less than"));
-
-		Collection<Object> data = new ArrayList<Object>();
-
-		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
-		session.setGlobal("result", result);
-
-		/*
-		 * Redundant restrictions
-		 */
-		// Doubles
-		Field field1 = new Field();
-
-		LiteralRestriction lr1 = new LiteralRestriction();
-		lr1.setOrderNumber(0);
-		lr1.setFieldId(field1.getId());
-		lr1.setValue("2.0");
-		lr1.setOperator(Operator.LESS);
-
-		LiteralRestriction lr2 = new LiteralRestriction();
-		lr2.setOrderNumber(1);
-		lr2.setFieldId(field1.getId());
-		lr2.setValue("1.0");
-		lr2.setOperator(Operator.LESS);
-
-		// Integers
-		Field field2 = new Field();
-
-		LiteralRestriction lr3 = new LiteralRestriction();
-		lr3.setOrderNumber(0);
-		lr3.setFieldId(field2.getId());
-		lr3.setValue("2");
-		lr3.setOperator(Operator.LESS);
-
-		LiteralRestriction lr4 = new LiteralRestriction();
-		lr4.setOrderNumber(1);
-		lr4.setFieldId(field2.getId());
-		lr4.setValue("1");
-		lr4.setOperator(Operator.LESS_OR_EQUAL);
-
-		// Dates
-		Field field3 = new Field();
-
-		LiteralRestriction lr5 = new LiteralRestriction();
-		lr5.setOrderNumber(0);
-		lr5.setFieldId(field3.getId());
-		lr5.setValue("10-dec-2008");
-		lr5.setOperator(Operator.LESS);
-
-		LiteralRestriction lr6 = new LiteralRestriction();
-		lr6.setOrderNumber(1);
-		lr6.setFieldId(field3.getId());
-		lr6.setValue("10-dec-2005");
-		lr6.setOperator(Operator.EQUAL);
-
-		data.add(lr1);
-		data.add(lr2);
-		data.add(lr3);
-		data.add(lr4);
-		data.add(lr5);
-		data.add(lr6);
-
-		StatelessSessionResult sessionResult = session.executeWithResults(data);
-
-		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
-				.iterateObjects());
-
-		assertTrue(TestBase.causeMapContains(map, lr1, lr2));
-		assertTrue(TestBase.causeMapContains(map, lr3, lr4));
-		assertTrue(TestBase.causeMapContains(map, lr5, lr6));
-
-		if (!map.isEmpty()) {
-			fail("More redundancies than was expected.");
-		}
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/subsumption/SubsumptantRestrictionsTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,182 @@
+package org.drools.verifier.subsumption;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.StatelessSession;
+import org.drools.StatelessSessionResult;
+import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.base.evaluators.Operator;
+import org.drools.verifier.TestBase;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.LiteralRestriction;
+import org.drools.verifier.dao.AnalyticsResult;
+import org.drools.verifier.dao.AnalyticsResultFactory;
+import org.drools.verifier.report.components.Cause;
+
+public class SubsumptantRestrictionsTest extends SubsumptionTestBase {
+
+	public void testRestrictionRedundancyGreater() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find subsumptant restrictions, greater than"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		/*
+		 * Redundant restrictions
+		 */
+		// Doubles
+		Field field1 = new Field();
+
+		LiteralRestriction lr1 = new LiteralRestriction();
+		lr1.setOrderNumber(0);
+		lr1.setFieldId(field1.getId());
+		lr1.setValue("1.0");
+		lr1.setOperator(Operator.GREATER);
+
+		LiteralRestriction lr2 = new LiteralRestriction();
+		lr2.setOrderNumber(1);
+		lr2.setFieldId(field1.getId());
+		lr2.setValue("2.0");
+		lr2.setOperator(Operator.GREATER);
+
+		// Integers
+		Field field2 = new Field();
+
+		LiteralRestriction lr3 = new LiteralRestriction();
+		lr3.setOrderNumber(0);
+		lr3.setFieldId(field2.getId());
+		lr3.setValue("1");
+		lr3.setOperator(Operator.GREATER);
+
+		LiteralRestriction lr4 = new LiteralRestriction();
+		lr4.setOrderNumber(1);
+		lr4.setFieldId(field2.getId());
+		lr4.setValue("2");
+		lr4.setOperator(Operator.GREATER_OR_EQUAL);
+
+		// Dates
+		Field field3 = new Field();
+
+		LiteralRestriction lr5 = new LiteralRestriction();
+		lr5.setOrderNumber(0);
+		lr5.setFieldId(field3.getId());
+		lr5.setValue("10-dec-2005");
+		lr5.setOperator(Operator.GREATER);
+
+		LiteralRestriction lr6 = new LiteralRestriction();
+		lr6.setOrderNumber(1);
+		lr6.setFieldId(field3.getId());
+		lr6.setValue("10-dec-2008");
+		lr6.setOperator(Operator.EQUAL);
+
+		data.add(lr1);
+		data.add(lr2);
+		data.add(lr3);
+		data.add(lr4);
+		data.add(lr5);
+		data.add(lr6);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.causeMapContains(map, lr1, lr2));
+		assertTrue(TestBase.causeMapContains(map, lr3, lr4));
+		assertTrue(TestBase.causeMapContains(map, lr5, lr6));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+
+	public void testRestrictionRedundancyLess() throws Exception {
+		StatelessSession session = getStatelessSession(this.getClass()
+				.getResourceAsStream("Restrictions.drl"));
+
+		session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
+				"Find subsumptant restrictions, less than"));
+
+		Collection<Object> data = new ArrayList<Object>();
+
+		AnalyticsResult result = AnalyticsResultFactory.createAnalyticsResult();
+		session.setGlobal("result", result);
+
+		/*
+		 * Redundant restrictions
+		 */
+		// Doubles
+		Field field1 = new Field();
+
+		LiteralRestriction lr1 = new LiteralRestriction();
+		lr1.setOrderNumber(0);
+		lr1.setFieldId(field1.getId());
+		lr1.setValue("2.0");
+		lr1.setOperator(Operator.LESS);
+
+		LiteralRestriction lr2 = new LiteralRestriction();
+		lr2.setOrderNumber(1);
+		lr2.setFieldId(field1.getId());
+		lr2.setValue("1.0");
+		lr2.setOperator(Operator.LESS);
+
+		// Integers
+		Field field2 = new Field();
+
+		LiteralRestriction lr3 = new LiteralRestriction();
+		lr3.setOrderNumber(0);
+		lr3.setFieldId(field2.getId());
+		lr3.setValue("2");
+		lr3.setOperator(Operator.LESS);
+
+		LiteralRestriction lr4 = new LiteralRestriction();
+		lr4.setOrderNumber(1);
+		lr4.setFieldId(field2.getId());
+		lr4.setValue("1");
+		lr4.setOperator(Operator.LESS_OR_EQUAL);
+
+		// Dates
+		Field field3 = new Field();
+
+		LiteralRestriction lr5 = new LiteralRestriction();
+		lr5.setOrderNumber(0);
+		lr5.setFieldId(field3.getId());
+		lr5.setValue("10-dec-2008");
+		lr5.setOperator(Operator.LESS);
+
+		LiteralRestriction lr6 = new LiteralRestriction();
+		lr6.setOrderNumber(1);
+		lr6.setFieldId(field3.getId());
+		lr6.setValue("10-dec-2005");
+		lr6.setOperator(Operator.EQUAL);
+
+		data.add(lr1);
+		data.add(lr2);
+		data.add(lr3);
+		data.add(lr4);
+		data.add(lr5);
+		data.add(lr6);
+
+		StatelessSessionResult sessionResult = session.executeWithResults(data);
+
+		Map<Cause, Set<Cause>> map = createSubsumptionMap(sessionResult
+				.iterateObjects());
+
+		assertTrue(TestBase.causeMapContains(map, lr1, lr2));
+		assertTrue(TestBase.causeMapContains(map, lr3, lr4));
+		assertTrue(TestBase.causeMapContains(map, lr5, lr6));
+
+		if (!map.isEmpty()) {
+			fail("More redundancies than was expected.");
+		}
+	}
+}

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/subsumption/SubsumptionTestBase.java	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,56 +0,0 @@
-package org.drools.analytics.subsumption;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.analytics.TestBase;
-import org.drools.analytics.report.components.Cause;
-import org.drools.analytics.report.components.Redundancy;
-import org.drools.analytics.report.components.Subsumption;
-
-/**
- * 
- * @author Toni Rikkola
- * 
- */
-public class SubsumptionTestBase extends TestBase {
-
-	public void testDummy() {
-		// this is needed as eclipse will try to run this and produce a failure
-		// if its not here.
-	}
-
-	/**
-	 * Creates subsumption map from Subsumption objects, one rule may have
-	 * several subsumption dependencies.
-	 * 
-	 * @param iter
-	 * @return
-	 */
-	protected Map<Cause, Set<Cause>> createSubsumptionMap(Iterator<Object> iter) {
-
-		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
-		while (iter.hasNext()) {
-			Object o = (Object) iter.next();
-			if (o instanceof Subsumption && !(o instanceof Redundancy)) {
-				Subsumption s = (Subsumption) o;
-				Cause left = s.getLeft();
-				Cause right = s.getRight();
-
-				if (map.containsKey(left)) {
-					Set<Cause> set = map.get(left);
-					set.add(right);
-				} else {
-					Set<Cause> set = new HashSet<Cause>();
-					set.add(right);
-					map.put(left, set);
-				}
-			}
-		}
-
-		return map;
-	}
-}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/subsumption/SubsumptionTestBase.java)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,56 @@
+package org.drools.verifier.subsumption;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.drools.verifier.TestBase;
+import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+
+/**
+ * 
+ * @author Toni Rikkola
+ * 
+ */
+public class SubsumptionTestBase extends TestBase {
+
+	public void testDummy() {
+		// this is needed as eclipse will try to run this and produce a failure
+		// if its not here.
+	}
+
+	/**
+	 * Creates subsumption map from Subsumption objects, one rule may have
+	 * several subsumption dependencies.
+	 * 
+	 * @param iter
+	 * @return
+	 */
+	protected Map<Cause, Set<Cause>> createSubsumptionMap(Iterator<Object> iter) {
+
+		Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
+		while (iter.hasNext()) {
+			Object o = (Object) iter.next();
+			if (o instanceof Subsumption && !(o instanceof Redundancy)) {
+				Subsumption s = (Subsumption) o;
+				Cause left = s.getLeft();
+				Cause right = s.getRight();
+
+				if (map.containsKey(left)) {
+					Set<Cause> set = map.get(left);
+					set.add(right);
+				} else {
+					Set<Cause> set = new HashSet<Cause>();
+					set.add(right);
+					map.put(left, set);
+				}
+			}
+		}
+
+		return map;
+	}
+}

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier (from rev 18566, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics)

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/ConsequenceTest.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/ConsequenceTest.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/ConsequenceTest.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,23 +0,0 @@
-package com.misc.someData
-
-import com.sample.DroolsTest.Message;
-
-rule "Missing consequence 1"
-	when
-		Foo()
-	then
-end
-
-rule "Has a consequence 1"
-	when
-		Foo()
-	then
-		System.out.println("Test");
-end
-
-rule "Missing consequence 2"
-	when
-		Foo()
-	then
-		// System.out.println("Test");
-end
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/ConsequenceTest.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/ConsequenceTest.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/ConsequenceTest.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/ConsequenceTest.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,23 @@
+package com.misc.someData
+
+import com.sample.DroolsTest.Message;
+
+rule "Missing consequence 1"
+	when
+		Foo()
+	then
+end
+
+rule "Has a consequence 1"
+	when
+		Foo()
+	then
+		System.out.println("Test");
+end
+
+rule "Missing consequence 2"
+	when
+		Foo()
+	then
+		// System.out.println("Test");
+end
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,79 +0,0 @@
-package com.misc.someData
-
-import com.sample.DroolsTest.Message;
-
-
-rule "nro 1."
-	when
-		Foo( bar > 10 )
-	then
-		System.out.println("Test");
-end
-
-rule "nro 2."
-	when
-		Foo( bar < 10 )
-	then
-		System.out.println("Test");
-end
-
-rule "Rule with patterns"
-	when
-		    Foo1()
-		    Foo1()
-		    TestPattern1( a == 10, b == 10, c == 10, d == 10, e == 10)
-		    TestPattern2()
-		    TestPattern3()
-		    TestPattern4()
-	then
-		System.out.println( "Test" );
-end
-
-rule "Field rule"
-	when
-		PatThePattern( gg > 100 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Field rule 2"
-	when
-		PatThePattern()
-	then
-		System.out.println( "Test" );
-end
-
-rule "Numbers 1"
-	when
-		NumbersInPattern( x == 10 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Numbers 2"
-	when
-		NumbersInPattern( x == 20 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Numbers 3"
-	when
-		NumbersInPattern( x == 30 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Numbers 5"
-	when
-		NumbersInPattern( x == 50 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Numbers 6"
-	when
-		NumbersInPattern( x == 60 )
-	then
-		System.out.println( "Test" );
-end

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,79 @@
+package com.misc.someData
+
+import com.sample.DroolsTest.Message;
+
+
+rule "nro 1."
+	when
+		Foo( bar > 10 )
+	then
+		System.out.println("Test");
+end
+
+rule "nro 2."
+	when
+		Foo( bar < 10 )
+	then
+		System.out.println("Test");
+end
+
+rule "Rule with patterns"
+	when
+		    Foo1()
+		    Foo1()
+		    TestPattern1( a == 10, b == 10, c == 10, d == 10, e == 10)
+		    TestPattern2()
+		    TestPattern3()
+		    TestPattern4()
+	then
+		System.out.println( "Test" );
+end
+
+rule "Field rule"
+	when
+		PatThePattern( gg > 100 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Field rule 2"
+	when
+		PatThePattern()
+	then
+		System.out.println( "Test" );
+end
+
+rule "Numbers 1"
+	when
+		NumbersInPattern( x == 10 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Numbers 2"
+	when
+		NumbersInPattern( x == 20 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Numbers 3"
+	when
+		NumbersInPattern( x == 30 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Numbers 5"
+	when
+		NumbersInPattern( x == 50 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Numbers 6"
+	when
+		NumbersInPattern( x == 60 )
+	then
+		System.out.println( "Test" );
+end

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc2.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc2.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc2.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,130 +0,0 @@
-package com.misc.missingRanges
-
-import com.sample.DroolsTest.Message;
-
-
-rule "Check time 1"
-	when
-		    Time( startDate > "1-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 2"
-	when
-		    Foo( startDate <= "10-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 3"
-	when
-		    Foo( startDate > "10-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 4"
-	when
-		    Foo( startDate < "20-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 5"
-	when
-		    Foo( startDate > "27-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 6"
-	when
-		    Foo( startDate <= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 7"
-	when
-		    Foo( endDate < "10-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 8"
-	when
-		    Foo( endDate == "11-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 9"
-	when
-		    Foo( endDate >= "11-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 10"
-	when
-		    Foo( endDate < "20-Jan-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 11"
-	when
-		    Foo( endDate >= "20-Jan-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 12"
-	when
-		    Foo( endDate < "13-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 13"
-	when
-		    Foo( endDate == "13-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 14"
-	when
-		    Foo( endDate == "14-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 15"
-	when
-		    Foo( endDate == "15-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 16"
-	when
-		    Foo( endDate == "25-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 17"
-	when
-		    Foo( endDate < "26-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Check time 18"
-	when
-		    Foo( endDate >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc2.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc2.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc2.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc2.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,130 @@
+package com.misc.missingRanges
+
+import com.sample.DroolsTest.Message;
+
+
+rule "Check time 1"
+	when
+		    Time( startDate > "1-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 2"
+	when
+		    Foo( startDate <= "10-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 3"
+	when
+		    Foo( startDate > "10-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 4"
+	when
+		    Foo( startDate < "20-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 5"
+	when
+		    Foo( startDate > "27-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 6"
+	when
+		    Foo( startDate <= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 7"
+	when
+		    Foo( endDate < "10-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 8"
+	when
+		    Foo( endDate == "11-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 9"
+	when
+		    Foo( endDate >= "11-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 10"
+	when
+		    Foo( endDate < "20-Jan-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 11"
+	when
+		    Foo( endDate >= "20-Jan-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 12"
+	when
+		    Foo( endDate < "13-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 13"
+	when
+		    Foo( endDate == "13-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 14"
+	when
+		    Foo( endDate == "14-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 15"
+	when
+		    Foo( endDate == "15-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 16"
+	when
+		    Foo( endDate == "25-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 17"
+	when
+		    Foo( endDate < "26-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Check time 18"
+	when
+		    Foo( endDate >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc3.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc3.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,37 +0,0 @@
-package com.misc.missingRanges
-
-import com.sample.DroolsTest.Message;
-
-/*
-rule "Redundant restrictions"
-	when
-		RedundancyPattern( a == 1, a == 1 )
-	then
-		// Something
-end
-
-rule "Redundant rule 1, rules"
-	when
-		RedundancyPattern( a == 1 )
-		RedundancyPattern2( a == 1 )
-	then
-		System.out.println("TEST");
-end
-*/
-rule "Redundant rule 2, rules"
-	when
-		RedundancyPattern( a == 1 )
-		RedundancyPattern2( a >= 1 )
-		RedundancyPattern3( a == 1, a == 1 )
-	then
-		System.out.println("TEST");
-end
-
-rule "Equivalent rule"
-	when
-		BlaaBlaa( a == 1 )
-		RedundancyPattern( a == 1 )
-		RedundancyPattern2( a == 1 )
-	then
-		System.out.println("NOT A TEST");
-end

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc3.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc3.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Misc3.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,37 @@
+package com.misc.missingRanges
+
+import com.sample.DroolsTest.Message;
+
+/*
+rule "Redundant restrictions"
+	when
+		RedundancyPattern( a == 1, a == 1 )
+	then
+		// Something
+end
+
+rule "Redundant rule 1, rules"
+	when
+		RedundancyPattern( a == 1 )
+		RedundancyPattern2( a == 1 )
+	then
+		System.out.println("TEST");
+end
+*/
+rule "Redundant rule 2, rules"
+	when
+		RedundancyPattern( a == 1 )
+		RedundancyPattern2( a >= 1 )
+		RedundancyPattern3( a == 1, a == 1 )
+	then
+		System.out.println("TEST");
+end
+
+rule "Equivalent rule"
+	when
+		BlaaBlaa( a == 1 )
+		RedundancyPattern( a == 1 )
+		RedundancyPattern2( a == 1 )
+	then
+		System.out.println("NOT A TEST");
+end

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDates.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDates.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDates.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,450 +0,0 @@
-package com.sample
-
-import com.sample.DroolsTest.Message;
-
-rule "Date gap rule 1"
-	when
-		DatePattern1( value == "27-Oct-2007" )
-	then
-		# gap > 10 <.
-end
-
-rule "Date gap rule 2"
-	when
-		DatePattern2( value >= "27-Oct-2000" )
-	then
-		# gap < 15.
-end
-
-rule "Date gap rule 3"
-	when
-		DatePattern3( value <= "27-Oct-2004" )
-	then
-		# gap > 15.
-end
-
-rule "Date gap rule 4a"
-	when
-		DatePattern4( value > "27-Oct-2001" )
-	then
-		# gap == 25.
-end
-
-rule "Date gap rule 4b"
-	when
-		DatePattern4( value < "27-Oct-2001" )
-	then
-		# gap == 25.
-end
-
-rule "Date gap rule 5a"
-	when
-		DatePattern5( value > "20-Oct-2007" )
-	then
-		# gap 100 > x > 50.
-end
-
-rule "Date gap rule 5b"
-	when
-		DatePattern5( value < "10-Oct-2007" )
-	then
-		# gap 100 > x > 50.
-end
-
-rule "Date gap rule 6a"
-	when
-		DatePattern6( value > "28-Oct-2007" )
-	then
-		# gap < 350.
-end
-
-rule "Date gap rule 6b"
-	when
-		DatePattern6( value == "28-Oct-2007" )
-	then
-		# gap < 350.
-end
-
-rule "Date gap rule 7a"
-	when
-		DatePattern7( value < "27-Jan-2007" )
-	then
-		# gap > 55.
-end
-
-rule "Date gap rule 7b"
-	when
-		DatePattern7( value == "27-Jan-2007" )
-	then
-		# gap > 55.
-end
-
-rule "Date gap rule 8a"
-	when
-		DatePattern8( value < "11-Jan-2007" )
-	then
-		# No gap
-end
-
-rule "Date gap rule 8b"
-	when
-		DatePattern8( value == "11-Jan-2007" )
-	then
-		# No gap
-end
-
-rule "Date gap rule 8c"
-	when
-		DatePattern8( value > "11-Jan-2007" )
-	then
-		# No gap
-end
-
-rule "Date gap rule 9a"
-	when
-		DatePattern9( value <= "14-Jan-2007" )
-	then
-		# No gap
-end
-
-rule "Date gap rule 9b"
-	when
-		DatePattern9( value == "15-Jan-2007" )
-	then
-		# No gap
-end
-
-rule "Date gap rule 9c"
-	when
-		DatePattern9( value >= "16-Jan-2007" )
-	then
-		# No gap
-end
-
-/*
-#
-# These rules have gaps
-#
-rule "Date range 1a, has gap"
-	when
-		    Foo1( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 2a, has gap"
-	when
-		    Foo2( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 3a, has gap"
-	when
-		    Foo3( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 4a, has gap"
-	when
-		    Foo4( value <= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 5a, has gap"
-	when
-		    Foo5( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 5b, has gap"
-	when
-		    Foo5( value == "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 6a, has gap"
-	when
-		    Foo6( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 6b, has gap"
-	when
-		    Foo6( value == "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 7a, has gap"
-	when
-		    Foo7( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 7b, has gap"
-	when
-		    Foo7( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 8a, has gap"
-	when
-		    Foo8( value < "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 8b, has gap"
-	when
-		    Foo8( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 9a, has gap"
-	when
-		    Foo9( value <= "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 9b, has gap"
-	when
-		    Foo9( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 10a, has gap"
-	when
-		    Foo10( value < "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 10b, has gap"
-	when
-		    Foo10( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 11a, has gap"
-	when
-		    Foo11( value <= "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 11b, has gap"
-	when
-		    Foo11( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-#
-# Not rules that have gaps.
-#
-
-rule "Date range 12a, has gap"
-	when
-		    not Foo12( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 13a, has gap"
-	when
-		    not Foo13( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 14a, has gap"
-	when
-		    not Foo14( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 15a, has gap"
-	when
-		    not Foo15( value <= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 16a, has gap"
-	when
-		    not Foo16( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 16b, has gap"
-	when
-		    not Foo16( value == "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 17a, has gap"
-	when
-		    not Foo17( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 17b, has gap"
-	when
-		    not Foo17( value == "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 18a, has gap"
-	when
-		    not Foo18( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 18b, has gap"
-	when
-		    not Foo18( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 19a, has gap"
-	when
-		    not Foo19( value < "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 19b, has gap"
-	when
-		    not Foo19( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 20a, has gap"
-	when
-		    not Foo20( value <= "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 20b, has gap"
-	when
-		    not Foo20( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 21a, has gap"
-	when
-		    not Foo21( value < "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 21b, has gap"
-	when
-		    not Foo21( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 22a, has gap"
-	when
-		    not Foo22( value <= "03-Oct-2002" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 22b, has gap"
-	when
-		    not Foo22( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-#
-# No gaps
-#
-
-rule "Date range 23a, no gap"
-	when
-		    Foo23( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 23b, no gap"
-	when
-		    Foo23( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 24a, no gap"
-	when
-		    Foo24( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 24b, no gap"
-	when
-		    Foo24( value <= 27-Oct-2007 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 25a, no gap"
-	when
-		    Foo25( value >= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 25b, no gap"
-	when
-		    Foo25( value <= "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 25a, no gap"
-	when
-		    Foo25( value > "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 25b, no gap"
-	when
-		    Foo25( value == "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Date range 25c, no gap"
-	when
-		    Foo25( value < "27-Oct-2007" )
-	then
-		System.out.println( "Test" );
-end
-*/
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDates.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDates.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDates.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDates.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,450 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Date gap rule 1"
+	when
+		DatePattern1( value == "27-Oct-2007" )
+	then
+		# gap > 10 <.
+end
+
+rule "Date gap rule 2"
+	when
+		DatePattern2( value >= "27-Oct-2000" )
+	then
+		# gap < 15.
+end
+
+rule "Date gap rule 3"
+	when
+		DatePattern3( value <= "27-Oct-2004" )
+	then
+		# gap > 15.
+end
+
+rule "Date gap rule 4a"
+	when
+		DatePattern4( value > "27-Oct-2001" )
+	then
+		# gap == 25.
+end
+
+rule "Date gap rule 4b"
+	when
+		DatePattern4( value < "27-Oct-2001" )
+	then
+		# gap == 25.
+end
+
+rule "Date gap rule 5a"
+	when
+		DatePattern5( value > "20-Oct-2007" )
+	then
+		# gap 100 > x > 50.
+end
+
+rule "Date gap rule 5b"
+	when
+		DatePattern5( value < "10-Oct-2007" )
+	then
+		# gap 100 > x > 50.
+end
+
+rule "Date gap rule 6a"
+	when
+		DatePattern6( value > "28-Oct-2007" )
+	then
+		# gap < 350.
+end
+
+rule "Date gap rule 6b"
+	when
+		DatePattern6( value == "28-Oct-2007" )
+	then
+		# gap < 350.
+end
+
+rule "Date gap rule 7a"
+	when
+		DatePattern7( value < "27-Jan-2007" )
+	then
+		# gap > 55.
+end
+
+rule "Date gap rule 7b"
+	when
+		DatePattern7( value == "27-Jan-2007" )
+	then
+		# gap > 55.
+end
+
+rule "Date gap rule 8a"
+	when
+		DatePattern8( value < "11-Jan-2007" )
+	then
+		# No gap
+end
+
+rule "Date gap rule 8b"
+	when
+		DatePattern8( value == "11-Jan-2007" )
+	then
+		# No gap
+end
+
+rule "Date gap rule 8c"
+	when
+		DatePattern8( value > "11-Jan-2007" )
+	then
+		# No gap
+end
+
+rule "Date gap rule 9a"
+	when
+		DatePattern9( value <= "14-Jan-2007" )
+	then
+		# No gap
+end
+
+rule "Date gap rule 9b"
+	when
+		DatePattern9( value == "15-Jan-2007" )
+	then
+		# No gap
+end
+
+rule "Date gap rule 9c"
+	when
+		DatePattern9( value >= "16-Jan-2007" )
+	then
+		# No gap
+end
+
+/*
+#
+# These rules have gaps
+#
+rule "Date range 1a, has gap"
+	when
+		    Foo1( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 2a, has gap"
+	when
+		    Foo2( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 3a, has gap"
+	when
+		    Foo3( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 4a, has gap"
+	when
+		    Foo4( value <= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 5a, has gap"
+	when
+		    Foo5( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 5b, has gap"
+	when
+		    Foo5( value == "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 6a, has gap"
+	when
+		    Foo6( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 6b, has gap"
+	when
+		    Foo6( value == "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 7a, has gap"
+	when
+		    Foo7( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 7b, has gap"
+	when
+		    Foo7( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 8a, has gap"
+	when
+		    Foo8( value < "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 8b, has gap"
+	when
+		    Foo8( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 9a, has gap"
+	when
+		    Foo9( value <= "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 9b, has gap"
+	when
+		    Foo9( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 10a, has gap"
+	when
+		    Foo10( value < "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 10b, has gap"
+	when
+		    Foo10( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 11a, has gap"
+	when
+		    Foo11( value <= "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 11b, has gap"
+	when
+		    Foo11( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+#
+# Not rules that have gaps.
+#
+
+rule "Date range 12a, has gap"
+	when
+		    not Foo12( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 13a, has gap"
+	when
+		    not Foo13( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 14a, has gap"
+	when
+		    not Foo14( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 15a, has gap"
+	when
+		    not Foo15( value <= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 16a, has gap"
+	when
+		    not Foo16( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 16b, has gap"
+	when
+		    not Foo16( value == "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 17a, has gap"
+	when
+		    not Foo17( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 17b, has gap"
+	when
+		    not Foo17( value == "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 18a, has gap"
+	when
+		    not Foo18( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 18b, has gap"
+	when
+		    not Foo18( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 19a, has gap"
+	when
+		    not Foo19( value < "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 19b, has gap"
+	when
+		    not Foo19( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 20a, has gap"
+	when
+		    not Foo20( value <= "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 20b, has gap"
+	when
+		    not Foo20( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 21a, has gap"
+	when
+		    not Foo21( value < "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 21b, has gap"
+	when
+		    not Foo21( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 22a, has gap"
+	when
+		    not Foo22( value <= "03-Oct-2002" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 22b, has gap"
+	when
+		    not Foo22( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+#
+# No gaps
+#
+
+rule "Date range 23a, no gap"
+	when
+		    Foo23( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 23b, no gap"
+	when
+		    Foo23( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 24a, no gap"
+	when
+		    Foo24( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 24b, no gap"
+	when
+		    Foo24( value <= 27-Oct-2007 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 25a, no gap"
+	when
+		    Foo25( value >= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 25b, no gap"
+	when
+		    Foo25( value <= "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 25a, no gap"
+	when
+		    Foo25( value > "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 25b, no gap"
+	when
+		    Foo25( value == "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Date range 25c, no gap"
+	when
+		    Foo25( value < "27-Oct-2007" )
+	then
+		System.out.println( "Test" );
+end
+*/
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDoubles.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDoubles.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDoubles.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,464 +0,0 @@
-package com.sample
-
-import com.sample.DroolsTest.Message;
-
-rule "Double gap rule 1"
-	when
-		DoublePattern1( value == 10.0 )
-	then
-		# gap > 10 <.
-end
-
-rule "Double gap rule 2"
-	when
-		DoublePattern2( value >= 15.0 )
-	then
-		# gap < 15.
-end
-
-rule "Double gap rule 3"
-	when
-		DoublePattern3( value <= 15.0 )
-	then
-		# gap > 15.
-end
-
-rule "Double gap rule 4a"
-	when
-		DoublePattern4( value > 25.0 )
-	then
-		# gap == 25.
-end
-
-rule "Double gap rule 4b"
-	when
-		DoublePattern4( value < 25.0 )
-	then
-		# gap == 25.
-end
-
-rule "Double gap rule 5a"
-	when
-		DoublePattern5( value > 100.0 )
-	then
-		# gap 100 > x > 50.
-end
-
-rule "Double gap rule 5b"
-	when
-		DoublePattern5( value < 50.0 )
-	then
-		# gap 100 > x > 50.
-end
-
-rule "Double gap rule 6a"
-	when
-		DoublePattern6( value > 350.0 )
-	then
-		# gap < 350.
-end
-
-rule "Double gap rule 6b"
-	when
-		DoublePattern6( value == 350.0 )
-	then
-		# gap < 350.
-end
-
-rule "Double gap rule 7a"
-	when
-		DoublePattern7( value < 55.0 )
-	then
-		# gap > 55.
-end
-
-rule "Double gap rule 7b"
-	when
-		DoublePattern7( value == 55.0 )
-	then
-		# gap > 55.
-end
-
-rule "Double gap rule 8a"
-	when
-		DoublePattern8( value < 333.0 )
-	then
-		# No gap
-end
-
-rule "Double gap rule 8b"
-	when
-		DoublePattern8( value == 333.0 )
-	then
-		# No gap
-end
-
-rule "Double gap rule 8c"
-	when
-		DoublePattern8( value > 333.0 )
-	then
-		# No gap
-end
-
-rule "Double gap rule 9a"
-	when
-		DoublePattern9( value >= 400.0 )
-	then
-		# gap 400 > x > 399 
-end
-
-rule "Double gap rule 9b"
-	when
-		DoublePattern9( value <= 399.0 )
-	then
-		# gap 400 > x > 399 
-end
-
-/*
-#
-# These rules have gaps
-#
-rule "Double range 1a, has gap"
-	when
-		    Foo1( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 2a, has gap"
-	when
-		    Foo2( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 3a, has gap"
-	when
-		    Foo3( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 4a, has gap"
-	when
-		    Foo4( value <= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 5a, has gap"
-	when
-		    Foo5( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 5b, has gap"
-	when
-		    Foo5( value == 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 6a, has gap"
-	when
-		    Foo6( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 6b, has gap"
-	when
-		    Foo6( value == 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 7a, has gap"
-	when
-		    Foo7( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 7b, has gap"
-	when
-		    Foo7( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 8a, has gap"
-	when
-		    Foo8( value < 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 8b, has gap"
-	when
-		    Foo8( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 9a, has gap"
-	when
-		    Foo9( value <= 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 9b, has gap"
-	when
-		    Foo9( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 10a, has gap"
-	when
-		    Foo10( value < 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 10b, has gap"
-	when
-		    Foo10( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 11a, has gap"
-	when
-		    Foo11( value <= 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 11b, has gap"
-	when
-		    Foo11( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-#
-# Not rules that have gaps.
-#
-
-rule "Double range 12a, has gap"
-	when
-		    not Foo12( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 13a, has gap"
-	when
-		    not Foo13( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 14a, has gap"
-	when
-		    not Foo14( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 15a, has gap"
-	when
-		    not Foo15( value <= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 16a, has gap"
-	when
-		    not Foo16( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 16b, has gap"
-	when
-		    not Foo16( value == 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 17a, has gap"
-	when
-		    not Foo17( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 17b, has gap"
-	when
-		    not Foo17( value == 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 18a, has gap"
-	when
-		    not Foo18( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 18b, has gap"
-	when
-		    not Foo18( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 19a, has gap"
-	when
-		    not Foo19( value < 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 19b, has gap"
-	when
-		    not Foo19( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 20a, has gap"
-	when
-		    not Foo20( value <= 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 20b, has gap"
-	when
-		    not Foo20( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 21a, has gap"
-	when
-		    not Foo21( value < 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 21b, has gap"
-	when
-		    not Foo21( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 22a, has gap"
-	when
-		    not Foo22( value <= 40.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 22b, has gap"
-	when
-		    not Foo22( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-#
-# No gaps
-#
-
-rule "Double range 23a, no gap"
-	when
-		    Foo23( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 23b, no gap"
-	when
-		    Foo23( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 24a, no gap"
-	when
-		    Foo24( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 24b, no gap"
-	when
-		    Foo24( value <= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 25a, no gap"
-	when
-		    Foo25( value >= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 25b, no gap"
-	when
-		    Foo25( value <= 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 25a, no gap"
-	when
-		    Foo25( value > 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 25b, no gap"
-	when
-		    Foo25( value == 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 25c, no gap"
-	when
-		    Foo25( value < 42.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 27a, no gap"
-	when
-		    Foo27( value > 0.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 27b, no gap"
-	when
-		    Foo27( value == 0.0 )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Double range 27c, no gap"
-	when
-		    Foo27( value < 0.0 )
-	then
-		System.out.println( "Test" );
-end
-*/

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDoubles.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDoubles.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDoubles.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForDoubles.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,464 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Double gap rule 1"
+	when
+		DoublePattern1( value == 10.0 )
+	then
+		# gap > 10 <.
+end
+
+rule "Double gap rule 2"
+	when
+		DoublePattern2( value >= 15.0 )
+	then
+		# gap < 15.
+end
+
+rule "Double gap rule 3"
+	when
+		DoublePattern3( value <= 15.0 )
+	then
+		# gap > 15.
+end
+
+rule "Double gap rule 4a"
+	when
+		DoublePattern4( value > 25.0 )
+	then
+		# gap == 25.
+end
+
+rule "Double gap rule 4b"
+	when
+		DoublePattern4( value < 25.0 )
+	then
+		# gap == 25.
+end
+
+rule "Double gap rule 5a"
+	when
+		DoublePattern5( value > 100.0 )
+	then
+		# gap 100 > x > 50.
+end
+
+rule "Double gap rule 5b"
+	when
+		DoublePattern5( value < 50.0 )
+	then
+		# gap 100 > x > 50.
+end
+
+rule "Double gap rule 6a"
+	when
+		DoublePattern6( value > 350.0 )
+	then
+		# gap < 350.
+end
+
+rule "Double gap rule 6b"
+	when
+		DoublePattern6( value == 350.0 )
+	then
+		# gap < 350.
+end
+
+rule "Double gap rule 7a"
+	when
+		DoublePattern7( value < 55.0 )
+	then
+		# gap > 55.
+end
+
+rule "Double gap rule 7b"
+	when
+		DoublePattern7( value == 55.0 )
+	then
+		# gap > 55.
+end
+
+rule "Double gap rule 8a"
+	when
+		DoublePattern8( value < 333.0 )
+	then
+		# No gap
+end
+
+rule "Double gap rule 8b"
+	when
+		DoublePattern8( value == 333.0 )
+	then
+		# No gap
+end
+
+rule "Double gap rule 8c"
+	when
+		DoublePattern8( value > 333.0 )
+	then
+		# No gap
+end
+
+rule "Double gap rule 9a"
+	when
+		DoublePattern9( value >= 400.0 )
+	then
+		# gap 400 > x > 399 
+end
+
+rule "Double gap rule 9b"
+	when
+		DoublePattern9( value <= 399.0 )
+	then
+		# gap 400 > x > 399 
+end
+
+/*
+#
+# These rules have gaps
+#
+rule "Double range 1a, has gap"
+	when
+		    Foo1( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 2a, has gap"
+	when
+		    Foo2( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 3a, has gap"
+	when
+		    Foo3( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 4a, has gap"
+	when
+		    Foo4( value <= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 5a, has gap"
+	when
+		    Foo5( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 5b, has gap"
+	when
+		    Foo5( value == 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 6a, has gap"
+	when
+		    Foo6( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 6b, has gap"
+	when
+		    Foo6( value == 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 7a, has gap"
+	when
+		    Foo7( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 7b, has gap"
+	when
+		    Foo7( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 8a, has gap"
+	when
+		    Foo8( value < 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 8b, has gap"
+	when
+		    Foo8( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 9a, has gap"
+	when
+		    Foo9( value <= 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 9b, has gap"
+	when
+		    Foo9( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 10a, has gap"
+	when
+		    Foo10( value < 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 10b, has gap"
+	when
+		    Foo10( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 11a, has gap"
+	when
+		    Foo11( value <= 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 11b, has gap"
+	when
+		    Foo11( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+#
+# Not rules that have gaps.
+#
+
+rule "Double range 12a, has gap"
+	when
+		    not Foo12( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 13a, has gap"
+	when
+		    not Foo13( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 14a, has gap"
+	when
+		    not Foo14( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 15a, has gap"
+	when
+		    not Foo15( value <= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 16a, has gap"
+	when
+		    not Foo16( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 16b, has gap"
+	when
+		    not Foo16( value == 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 17a, has gap"
+	when
+		    not Foo17( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 17b, has gap"
+	when
+		    not Foo17( value == 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 18a, has gap"
+	when
+		    not Foo18( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 18b, has gap"
+	when
+		    not Foo18( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 19a, has gap"
+	when
+		    not Foo19( value < 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 19b, has gap"
+	when
+		    not Foo19( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 20a, has gap"
+	when
+		    not Foo20( value <= 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 20b, has gap"
+	when
+		    not Foo20( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 21a, has gap"
+	when
+		    not Foo21( value < 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 21b, has gap"
+	when
+		    not Foo21( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 22a, has gap"
+	when
+		    not Foo22( value <= 40.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 22b, has gap"
+	when
+		    not Foo22( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+#
+# No gaps
+#
+
+rule "Double range 23a, no gap"
+	when
+		    Foo23( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 23b, no gap"
+	when
+		    Foo23( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 24a, no gap"
+	when
+		    Foo24( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 24b, no gap"
+	when
+		    Foo24( value <= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 25a, no gap"
+	when
+		    Foo25( value >= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 25b, no gap"
+	when
+		    Foo25( value <= 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 25a, no gap"
+	when
+		    Foo25( value > 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 25b, no gap"
+	when
+		    Foo25( value == 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 25c, no gap"
+	when
+		    Foo25( value < 42.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 27a, no gap"
+	when
+		    Foo27( value > 0.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 27b, no gap"
+	when
+		    Foo27( value == 0.0 )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Double range 27c, no gap"
+	when
+		    Foo27( value < 0.0 )
+	then
+		System.out.println( "Test" );
+end
+*/

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForInts.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForInts.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForInts.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,122 +0,0 @@
-package com.sample
-
-import com.sample.DroolsTest.Message;
-
-rule "Integer gap rule 1"
-	when
-		IntegerPattern1( value == 10 )
-	then
-		# gap > 10 <.
-end
-
-rule "Integer gap rule 2"
-	when
-		IntegerPattern2( value >= 15 )
-	then
-		# gap < 15.
-end
-
-rule "Integer gap rule 3"
-	when
-		IntegerPattern3( value <= 15 )
-	then
-		# gap > 15.
-end
-
-rule "Integer gap rule 4a"
-	when
-		IntegerPattern4( value > 25 )
-	then
-		# gap == 25.
-end
-
-rule "Integer gap rule 4b"
-	when
-		IntegerPattern4( value < 25 )
-	then
-		# gap == 25.
-end
-
-rule "Integer gap rule 5a"
-	when
-		IntegerPattern5( value > 100 )
-	then
-		# gap 100 > x > 50.
-end
-
-rule "Integer gap rule 5b"
-	when
-		IntegerPattern5( value < 50 )
-	then
-		# gap 100 > x > 50.
-end
-
-rule "Integer gap rule 6a"
-	when
-		IntegerPattern6( value > 350 )
-	then
-		# gap < 350.
-end
-
-rule "Integer gap rule 6b"
-	when
-		IntegerPattern6( value == 350 )
-	then
-		# gap < 350.
-end
-
-rule "Integer gap rule 7a"
-	when
-		IntegerPattern7( value < 55 )
-	then
-		# gap > 55.
-end
-
-rule "Integer gap rule 7b"
-	when
-		IntegerPattern7( value == 55 )
-	then
-		# gap > 55.
-end
-
-rule "Integer gap rule 8a"
-	when
-		IntegerPattern8( value < 333 )
-	then
-		# No gap
-end
-
-rule "Integer gap rule 8b"
-	when
-		IntegerPattern8( value == 333 )
-	then
-		# No gap
-end
-
-rule "Integer gap rule 8c"
-	when
-		IntegerPattern8( value > 333 )
-	then
-		# No gap
-end
-
-rule "Integer gap rule 9a"
-	when
-		IntegerPattern9( value <= 122 )
-	then
-		# No gap
-end
-
-rule "Integer gap rule 9b"
-	when
-		IntegerPattern9( value == 123 )
-	then
-		# No gap
-end
-
-rule "Integer gap rule 9c"
-	when
-		IntegerPattern9( value >= 124 )
-	then
-		# No gap
-end
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForInts.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForInts.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForInts.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForInts.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,122 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Integer gap rule 1"
+	when
+		IntegerPattern1( value == 10 )
+	then
+		# gap > 10 <.
+end
+
+rule "Integer gap rule 2"
+	when
+		IntegerPattern2( value >= 15 )
+	then
+		# gap < 15.
+end
+
+rule "Integer gap rule 3"
+	when
+		IntegerPattern3( value <= 15 )
+	then
+		# gap > 15.
+end
+
+rule "Integer gap rule 4a"
+	when
+		IntegerPattern4( value > 25 )
+	then
+		# gap == 25.
+end
+
+rule "Integer gap rule 4b"
+	when
+		IntegerPattern4( value < 25 )
+	then
+		# gap == 25.
+end
+
+rule "Integer gap rule 5a"
+	when
+		IntegerPattern5( value > 100 )
+	then
+		# gap 100 > x > 50.
+end
+
+rule "Integer gap rule 5b"
+	when
+		IntegerPattern5( value < 50 )
+	then
+		# gap 100 > x > 50.
+end
+
+rule "Integer gap rule 6a"
+	when
+		IntegerPattern6( value > 350 )
+	then
+		# gap < 350.
+end
+
+rule "Integer gap rule 6b"
+	when
+		IntegerPattern6( value == 350 )
+	then
+		# gap < 350.
+end
+
+rule "Integer gap rule 7a"
+	when
+		IntegerPattern7( value < 55 )
+	then
+		# gap > 55.
+end
+
+rule "Integer gap rule 7b"
+	when
+		IntegerPattern7( value == 55 )
+	then
+		# gap > 55.
+end
+
+rule "Integer gap rule 8a"
+	when
+		IntegerPattern8( value < 333 )
+	then
+		# No gap
+end
+
+rule "Integer gap rule 8b"
+	when
+		IntegerPattern8( value == 333 )
+	then
+		# No gap
+end
+
+rule "Integer gap rule 8c"
+	when
+		IntegerPattern8( value > 333 )
+	then
+		# No gap
+end
+
+rule "Integer gap rule 9a"
+	when
+		IntegerPattern9( value <= 122 )
+	then
+		# No gap
+end
+
+rule "Integer gap rule 9b"
+	when
+		IntegerPattern9( value == 123 )
+	then
+		# No gap
+end
+
+rule "Integer gap rule 9c"
+	when
+		IntegerPattern9( value >= 124 )
+	then
+		# No gap
+end
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForVariables.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForVariables.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForVariables.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,145 +0,0 @@
-package com.sample
-
-import com.sample.DroolsTest.Message;
-/*
-#
-# These rules have gaps
-#
-rule "Missing variable range 1a, warning"
-	when
-		    $s :Something( )
-		    Foo1w( value > $s.a.b.c.d )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 1b, warning"
-	when
-		    $s :Something( )
-		    Foo1w( value < $s.a.b.c.d )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 2a, warning"
-	when
-		    $s :Something( )
-		    Foo2w( value > $s.bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 2b, warning"
-	when
-		    $s :Something( )
-		    Foo2w( value < $s.bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 3a, warning"
-	when
-		    Something( $bar :bar)
-		    Foo3w( value > $bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 3b, warning"
-	when
-		    Something( $bar :bar)
-		    Foo3w( value < $bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 4a, warning"
-	when
-		    Something( $bar :bar)
-		    Foo4w( value > $bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 4b, warning"
-	when
-		    Something( $bar :bar)
-		    Foo4w( value == $bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 5a, warning"
-	when
-		    Something( $bar :bar)
-		    Foo5w( value < $bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 5b, warning"
-	when
-		    Something( $bar :bar)
-		    Foo5w( value == $bar )
-	then
-		System.out.println( "Test" );
-end
-*/
-#
-# These rules have no gaps
-#
-rule "Missing variable range 1a, covers all"
-	when
-		    $s :Something( )
-		    Foo1a( value >= $s.a.b.c.d )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 1b, covers all"
-	when
-		    $s :Something()
-		    Foo1a( value < $s.a.b.c.d )
-	then
-		System.out.println( "Test" );
-end
-/*
-rule "Missing variable range 2a, covers all"
-	when
-		    $s :Something()
-		    Foo2a( value > $s.bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 2b, covers all"
-	when
-		    $s :Something( )
-		    Foo2a( value =< $s.bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 3a, covers all"
-	when
-		    Something( $bar :bar)
-		    Foo3a( value > $bar )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Missing variable range 3b, covers all"
-	when
-		    Something( $bar :bar)
-		    Foo3a( value == $bar )
-	then
-		System.out.println( "Test" );
-end
-rule "Missing variable range 3c, covers all"
-	when
-		    Something( $bar :bar)
-		    Foo3a( value < $bar )
-	then
-		System.out.println( "Test" );
-end
-*/
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForVariables.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForVariables.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForVariables.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/MissingRangesForVariables.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,145 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+/*
+#
+# These rules have gaps
+#
+rule "Missing variable range 1a, warning"
+	when
+		    $s :Something( )
+		    Foo1w( value > $s.a.b.c.d )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 1b, warning"
+	when
+		    $s :Something( )
+		    Foo1w( value < $s.a.b.c.d )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 2a, warning"
+	when
+		    $s :Something( )
+		    Foo2w( value > $s.bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 2b, warning"
+	when
+		    $s :Something( )
+		    Foo2w( value < $s.bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 3a, warning"
+	when
+		    Something( $bar :bar)
+		    Foo3w( value > $bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 3b, warning"
+	when
+		    Something( $bar :bar)
+		    Foo3w( value < $bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 4a, warning"
+	when
+		    Something( $bar :bar)
+		    Foo4w( value > $bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 4b, warning"
+	when
+		    Something( $bar :bar)
+		    Foo4w( value == $bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 5a, warning"
+	when
+		    Something( $bar :bar)
+		    Foo5w( value < $bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 5b, warning"
+	when
+		    Something( $bar :bar)
+		    Foo5w( value == $bar )
+	then
+		System.out.println( "Test" );
+end
+*/
+#
+# These rules have no gaps
+#
+rule "Missing variable range 1a, covers all"
+	when
+		    $s :Something( )
+		    Foo1a( value >= $s.a.b.c.d )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 1b, covers all"
+	when
+		    $s :Something()
+		    Foo1a( value < $s.a.b.c.d )
+	then
+		System.out.println( "Test" );
+end
+/*
+rule "Missing variable range 2a, covers all"
+	when
+		    $s :Something()
+		    Foo2a( value > $s.bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 2b, covers all"
+	when
+		    $s :Something( )
+		    Foo2a( value =< $s.bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 3a, covers all"
+	when
+		    Something( $bar :bar)
+		    Foo3a( value > $bar )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Missing variable range 3b, covers all"
+	when
+		    Something( $bar :bar)
+		    Foo3a( value == $bar )
+	then
+		System.out.println( "Test" );
+end
+rule "Missing variable range 3c, covers all"
+	when
+		    Something( $bar :bar)
+		    Foo3a( value < $bar )
+	then
+		System.out.println( "Test" );
+end
+*/
\ No newline at end of file

Deleted: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Overlap.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Overlap.drl	2008-02-22 18:52:27 UTC (rev 18566)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Overlap.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,27 +0,0 @@
-package com.sample
-
-import com.sample.DroolsTest.Message;
-
-/*
-rule "Overlap 1a"
-	when
-		    $s :Something(   )
-		    Foo1w( value > $s )
-	then
-		System.out.println( "Test" );
-end
-
-rule "Overlap 1b"
-	when
-		    $s :Something(  )
-		    Foo1w( value < $s )
-	then
-		System.out.println( "Test" );
-end
-*/
-rule "new rule"
-	when
-		    Something( a == "1" )
-	then
-		System.out.println( "Test" );
-end
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Overlap.drl (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/Overlap.drl)
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Overlap.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/Overlap.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -0,0 +1,27 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+/*
+rule "Overlap 1a"
+	when
+		    $s :Something(   )
+		    Foo1w( value > $s )
+	then
+		System.out.println( "Test" );
+end
+
+rule "Overlap 1b"
+	when
+		    $s :Something(  )
+		    Foo1w( value < $s )
+	then
+		System.out.println( "Test" );
+end
+*/
+rule "new rule"
+	when
+		    Something( a == "1" )
+	then
+		System.out.println( "Test" );
+end
\ No newline at end of file

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/incoherence)

Modified: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/PatternsTest.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/incoherence/PatternsTest.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/PatternsTest.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,5 +1,5 @@
 #created on: 18.10.2007
-package org.drools.analytics.consequence
+package org.drools.verifier.consequence
 
 #list any import classes here.
 

Modified: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/RestrictionsTest.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/incoherence/RestrictionsTest.drl	2008-04-11 11:56:28 UTC (rev 19520)
+++ labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/incoherence/RestrictionsTest.drl	2008-04-11 12:06:11 UTC (rev 19521)
@@ -1,5 +1,5 @@
 #created on: 18.10.2007
-package org.drools.analytics.consequence
+package org.drools.verifier.consequence
 
 #list any import classes here.
 

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/missingEquality (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/missingEquality)

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/optimisation (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/optimisation)

Copied: labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/verifier/redundancy (from rev 19520, labs/jbossrules/trunk/drools-analytics/src/test/resources/org/drools/analytics/redundancy)




More information about the jboss-svn-commits mailing list