package org.genedb.web.tags.db; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.jstl.core.LoopTagSupport; import org.gmod.schema.utils.propinterface.PropertyI; public class FilteredPropertyLoopTag extends LoopTagSupport { private String cvName; private String cvTermName; private Collection<PropertyI> items; private Iterator<PropertyI> filteredItemsIterator; @Override protected boolean hasNext() throws JspTagException { return filteredItemsIterator.hasNext(); } @Override protected PropertyI next() throws JspTagException { return filteredItemsIterator.next(); } @Override protected void prepare() throws JspTagException { // Filter the values list based on the cv and possibly the cvterm List<PropertyI> filteredItems = new ArrayList<PropertyI>(); for (PropertyI propertyI : items) if ((cvName == null || propertyI.getType().getCv().getName().equals(cvName)) && (cvTermName == null || propertyI.getType().getName().equals(cvTermName))) filteredItems.add(propertyI); filteredItemsIterator = filteredItems.iterator(); } public void setCv(String cvName) { this.cvName = cvName; } public void setCvTerm(String cvTermName) { this.cvTermName = cvTermName; } public void setItems(Collection<PropertyI> items) { this.items = items; } }