service.impl/src/main/resources/com/hack23/cia/service/impl/rules/politician/PoliticianPartyRebel.drl

Summary

Maintainability
Test Coverage
package com.hack23.cia.service.impl.rules.politician

import org.kie.api.runtime.KieRuntime

import com.hack23.cia.model.internal.application.data.politician.impl.ViewRiksdagenPolitician
import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenVoteDataBallotPoliticianSummaryAnnual
import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenVoteDataBallotPoliticianSummaryDaily
import com.hack23.cia.model.internal.application.data.committee.impl.ViewRiksdagenVoteDataBallotPoliticianSummaryMonthly

import com.hack23.cia.model.internal.application.data.rules.impl.Status
import com.hack23.cia.service.impl.rules.PoliticianComplianceCheckImpl

rule "We have a party rebel politician, voted against party majority at least once last day of ballots in parliament"
    dialect "java"
    salience 10
    when
        $p : PoliticianComplianceCheckImpl(politician.activeParliament && politician.party != "-" && dailySummary != null && dailySummary.rebelTotal > 0)
    then
        $p.addViolation( Status.MINOR, "PoliticianPartyRebel","Behavior", kcontext.getRule().getName(),"CanIgnorePartyMajority");
end

rule "We have a party rebel politician, voted against party majority at least 1% of ballots last month"
    dialect "java"
    salience 50
    when
        $p : PoliticianComplianceCheckImpl( politician.activeParliament && politician.party != "-" && monthlySummary != null && monthlySummary.rebelPercentage > 1)
    then
        $p.addViolation( Status.MAJOR, "PoliticianPartyRebel","Behavior", kcontext.getRule().getName(),"CanIgnorePartyMajority");
end

rule "We have a party rebel politician, voted against party majority at least 1% of ballots last year"
    dialect "java"
    salience 100
    when
        $p : PoliticianComplianceCheckImpl( politician.activeParliament && politician.party != "-" && annualSummary != null && annualSummary.rebelPercentage >= 1)
    then
        $p.addViolation( Status.CRITICAL, "PoliticianPartyRebel","Behavior", kcontext.getRule().getName(),"CanIgnorePartyMajority");
end