001package io.konik.util; 002 003import com.google.common.base.Predicate; 004import com.google.common.collect.Collections2; 005import io.konik.zugferd.entity.trade.item.Item; 006 007import javax.annotation.Nullable; 008import java.util.LinkedList; 009import java.util.List; 010 011/** 012 * Helper functions for {@link Item} class. 013 */ 014public final class Items { 015 016 /** 017 * Filters list of {@link Item} using given {@link Predicate} 018 * @param items 019 * @param predicate 020 * @return 021 */ 022 public static List<Item> filter(List<Item> items, Predicate<Item> predicate) { 023 return new LinkedList<Item>(Collections2.filter(items, predicate)); 024 } 025 026 /** 027 * Removes all non-purchasable items (e.g. text information only item etc.) 028 * @param items 029 * @return 030 */ 031 public static List<Item> purchasableItemsOnly(List<Item> items) { 032 return filter(items, new Predicate<Item>() { 033 @Override 034 public boolean apply(@Nullable Item item) { 035 return item != null && 036 item.getDelivery() != null && 037 item.getAgreement() != null && 038 item.getSettlement() != null; 039 } 040 }); 041 } 042}