package org.openedit.data; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.openedit.users.User; public class CompositeFilteredTracker extends FilteredTracker { protected List fieldFilteredTrackers; public List getFilteredTrackers() { if (fieldFilteredTrackers == null) { fieldFilteredTrackers = new ArrayList(); } return fieldFilteredTrackers; } public void filter(String inExternalId, String inExternalValue) { fieldFilteredTrackers = new ArrayList(); if (inExternalValue != null) { String[] externalValues = inExternalValue.split(":"); for (int i = 0; i < externalValues.length; i++) { FilteredTracker tracker = new FilteredTracker(); tracker.setSearcher(getSearcher()); tracker.setListId(getListId()); tracker.filter(inExternalId, externalValues[i]); fieldFilteredTrackers.add(tracker); } } } public List filteredValues() { List intersection = null; for (Iterator iterator = getFilteredTrackers().iterator(); iterator.hasNext();) { FilteredTracker tracker = (FilteredTracker) iterator.next(); List values = tracker.filteredValues(); if (intersection == null) { intersection = values; } intersection.retainAll(values); } return intersection; } public void deleteValues(List inListValues, User inUser) { for (Iterator iterator = getFilteredTrackers().iterator(); iterator.hasNext();) { FilteredTracker tracker = (FilteredTracker) iterator.next(); tracker.deleteValues(inListValues, inUser); } } public void saveRows(List inListValues, User inUser) { for (Iterator iterator = getFilteredTrackers().iterator(); iterator.hasNext();) { FilteredTracker tracker = (FilteredTracker) iterator.next(); tracker.saveRows(inListValues, inUser); } } }