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}