MoneyOperationObjectSourceListener.java


/*
 * MoneyOperationObjectSourceListener.java
 */

package budget.listeners;

import budget.domain.MoneyOperation;
import budget.domain.OperationType;
import org.weda.common.ChangeType;
import org.weda.store.ObjectSourceListener;
import org.weda.store.RowsChangeEvent;

/**Делает отрицательной сумму дебетовой операции 
 * и положительной сумму кредитовой операции.
 *
 * @author Mikhail 
 */
public class MoneyOperationObjectSourceListener implements ObjectSourceListener {
    
    public void rowsChanging(RowsChangeEvent event) {
        if (   event.getChangeType() == ChangeType.ADD
            || event.getChangeType() == ChangeType.UPDATE)
        {
            for (Object[] objects: event.getRows()) {
                MoneyOperation money = (MoneyOperation)objects[0];
                OperationType opType = money.getOperationItem().getOperationType();
                if (opType!=null && money.getAmount()!=null){
                    if (   (   opType == OperationType.Кредитовая
                            && money.getAmount()<0
                            )
                        || (   opType == OperationType.Дебетовая
                            && money.getAmount()>0)
                       )
                    {
                        money.setAmount(-1*money.getAmount());
                    }
                }   
            }
        }
    }

    public void rowsChanged(RowsChangeEvent event) {
    }
    
}