public static UnaryFunctor<Individual, Boolean> getFilterForTab(
      final Tab tab, final Portal portalThatTabIsIn, final boolean isFlag1Filtering) {

    DateTime now = new DateTime();
    UnaryFunctor<Individual, Boolean> entFilter = getTimeFilter(tab, now);
    UnaryFunctor<Individual, Boolean> tabPortalFilter = getPortalFilter(tab);

    if (isFlag1Filtering
        && tabPortalFilter != null
        && portalThatTabIsIn != null
        && portalThatTabIsIn.isFlag1Filtering())
      entFilter = AdaptorFunctors.and(entFilter, tabPortalFilter);

    String flag2set = tab.getFlag2Set();
    if (flag2set != null && flag2set.trim().length() > 0) {
      String[] flags = flag2set.split(",");
      if ("OMIT".equalsIgnoreCase(tab.getFlag2Mode())) {
        UnaryFunctor<Individual, Boolean> negate =
            LogicalFunctors.unaryNegate(getCollegeFilter(flags));
        entFilter = AdaptorFunctors.and(entFilter, negate);
      } else {
        entFilter = AdaptorFunctors.and(entFilter, getCollegeFilter(flags));
      }
    }

    /* need more?
    entFilter = AdaptorFunctors.and( getSomeFilter(tab), entFilter);
    entFilter = AdaptorFunctors.and( getOtherFilter(tab), entFilter);
     */
    return entFilter;
  }