package com.sample
dialect "mvel"

//list any import classes here.
import com.sample.DroolsTest.Message; 
import com.sample.DroolsTest.DataItemPrice;

//declare any global variables here


rule "remove empty item, keep only one empty"
no-loop
dialect "java" // doesn't work with MVEL dialect
when
    $emptyItems : java.util.ArrayList(size>1)
        from collect(Message(id=="item", answered==false))
then
    System.out.println("removing empty item");
    for (int i=1; i < $emptyItems.size(); i++) {
        retract($emptyItems.get(i));
    }
end

rule "new item"
//salience 10
no-loop
when
    not Message(id=="item", answered==false)
then
    System.out.println("empty item missing, add new one");
    Message m = new Message();
    m.id = "item";
    m.answered = false;    
    insert(m);
end

rule "calculate totalPrice per item"
salience -10
no-loop
when
    $q:Message(id=="item", answered==true,
        value instanceof DataItemPrice, $v:value
    )
then
	System.out.println("setting totalPrice on item: " + ((DataItemPrice)$v).getName());
	
	System.out.println("qty*unitPrice=" + ((DataItemPrice)$v).getQty()*((DataItemPrice)$v).getUnitPrice());
	
	Double d = ((DataItemPrice)$v).getQty()*((DataItemPrice)$v).getUnitPrice();
	((DataItemPrice)$v).setTotalPrice(d);
	System.out.println("setting via temporary variable worked");
	 
	// THIS IS DOESN'T WORK
	((DataItemPrice)$v).setTotalPrice(((DataItemPrice)$v).getQty()*((DataItemPrice)$v).getUnitPrice());
	System.out.println("setting directly works ???");

    update($q);
end

