package org.drools.integrationtests; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import org.drools.runtime.rule.Row; import org.drools.runtime.rule.ViewChangedEventListener; import ca.odell.glazedlists.AbstractEventList; public class DroolsEventList extends AbstractEventList<Row> implements ViewChangedEventListener { List<Row> data = new ArrayList<Row>(); public Row get(int index) { return this.data.get( index ); } public int size() { return this.data.size(); } public void dispose() { } public void rowAdded(Row row) { int index = size(); // create the change event updates.beginEvent(); updates.elementInserted(index, row); // do the actual add boolean result = data.add(row); // fire the event updates.commitEvent(); } public void rowRemoved(Row row) { int index = this.data.indexOf( row ); // create the change event updates.beginEvent(); // do the actual remove Row removed = data.remove( index ); updates.elementDeleted(index, removed); updates.commitEvent(); } public void rowUpdated(Row row) { int index = this.data.indexOf( row ); // create the change event updates.beginEvent(); // fire the event updates.elementUpdated(index, row, row); updates.commitEvent(); } }