package tefkat.engine.runtime.functions; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import tefkat.engine.runtime.Binding; import tefkat.engine.runtime.Context; import tefkat.engine.runtime.Function; import tefkat.engine.runtime.ResolutionException; /** * Takes a collection and a feature and returns a collection of the results * of fetching the feature from each of the input objects. * * @author michaellawley */ public class MapFeature implements Function { public Object call(Context context, Binding unifier, Object[] params) throws ResolutionException { final Collection list = (Collection) params[0]; final String feature = (String) params[1]; final List items = new ArrayList(); for (final Iterator itr = list.iterator(); itr.hasNext(); ) { Object obj = itr.next(); items.add(context.fetchFeature(feature, obj)); } final ArrayList result = new ArrayList(); result.add(items); return result; } }