package templates.viewmodels;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.applause.lang.applauseDsl.ComplexProviderConstruction;
import org.applause.lang.applauseDsl.ContentProvider;
import org.applause.lang.applauseDsl.View;
import org.applause.lang.applauseDsl.ViewCall;
import org.eclipse.xtext.util.Pair;
import org.eclipse.xtext.util.Tuples;
import com.google.common.collect.Iterables;
public class Extensions {
private static Pair<View, ContentProvider> key(ViewCall call) {
ContentProvider cp = null;
if (call.getProvider() instanceof ComplexProviderConstruction) {
ComplexProviderConstruction construction = (ComplexProviderConstruction) call.getProvider();
cp = construction.getProvider();
}
return Tuples.create(call.getView(), cp);
}
public static List<ViewCall> withoutConceptionalDuplicates(@SuppressWarnings("rawtypes") List calls) {
Set<Pair<View, ContentProvider>> keys = new HashSet<Pair<View,ContentProvider>>();
List<ViewCall> result = new ArrayList<ViewCall>();
for(ViewCall vc : Iterables.filter(calls, ViewCall.class))
if(keys.add(key(vc)))
result.add(vc);
return result;
}
}