package hudson.plugins.favorite.filter;
import hudson.model.Hudson;
import hudson.model.TopLevelItem;
import hudson.model.User;
import hudson.model.View;
import hudson.plugins.favorite.user.FavoriteUserProperty;
import hudson.views.ViewJobFilter;
import org.acegisecurity.Authentication;
import org.kohsuke.stapler.DataBoundConstructor;
import java.util.ArrayList;
import java.util.List;
public class FavoriteFilter extends ViewJobFilter {
@DataBoundConstructor
public FavoriteFilter() {
}
@Override
public List<TopLevelItem> filter(List<TopLevelItem> added, List<TopLevelItem> all, View filteringView) {
List<TopLevelItem> filtered = new ArrayList<TopLevelItem>(added);
Authentication authentication = Hudson.getAuthentication();
String name = authentication.getName();
if (authentication.isAuthenticated()) {
User user = Hudson.getInstance().getUser(name);
FavoriteUserProperty fup = user.getProperty(FavoriteUserProperty.class);
for (TopLevelItem item : all) {
if (!fup.isJobFavorite(item.getName())) {
filtered.remove(item);
}
}
}
return filtered;
}
}