PlayerKey.java :  » Game » FFGenie-2010.3-src » ffg » gui » table » filter » Java Open Source

Java Open Source » Game » FFGenie 2010.3 src 
FFGenie 2010.3 src » ffg » gui » table » filter » PlayerKey.java
package ffg.gui.table.filter;

import ffg.entity.AFLPlayer;
import ffg.game.GameStats;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

/**
 * Responsible for extracting the AFLPlayer out of a GameStats object.
 * @author eugeneh
 * @param <S>
 */
public class PlayerKey<S extends GameStats> implements FilterKey<S, AFLPlayer> {
    private static final FilterOperator<AFLPlayer, ?> IN_FILTER = new PlayerInFilterOperator();
    private static final FilterOperator<AFLPlayer, ?> OUT_FILTER = new PlayerOutFilterOperator();
    
    private final List<FilterOperator<AFLPlayer, ?>> operators;
    
    /**
     * Creates a new instance of {@link PlayerKey}
     */
    public PlayerKey() {
        super();
        
        List<FilterOperator<AFLPlayer, ?>> localOperators = new ArrayList<FilterOperator<AFLPlayer, ?>>();
        localOperators.add(IN_FILTER);
        localOperators.add(OUT_FILTER);
        operators = Collections.unmodifiableList(localOperators);
    }
    
//    @Override
    public List<FilterOperator<AFLPlayer, ?>> getFilterOperators() {
        return operators;
    }
    
//    @Override
    public AFLPlayer getFilterObjectValue(S item) {
        return item.getPlayer();
    }
    
//    @Override
    public FilterOperator<AFLPlayer, ?> getDefaultFilterOperator() {
        return operators.get(0);
    }
    
//    @Override
    public AFLPlayer getDefaultValue() {
        return null;
    }
    
    @Override
    public String toString() {
        return "Player";
    }
    
    /**
     * Given a list of {@link AFLPlayer}s, create a filter operator that includes those in the list.
     */
    private static class PlayerInFilterOperator extends FilterOperator<AFLPlayer, List<AFLPlayer>> {
        public PlayerInFilterOperator() {
            super("contains", null);
        }
        @Override
        public boolean matches(AFLPlayer value1, List<AFLPlayer> value2) {
            return value2 != null && value2.contains(value1);
        }
        
        @Override
        public boolean isValueValid(Object value) {
            if (value instanceof List) {
                List listValue = (List) value;
                for (Iterator it = listValue.iterator(); it.hasNext();) {
                    Object elem = it.next();
                    if (!(elem instanceof AFLPlayer)) {
                        return false;
                    }
                }
                return true;
            } else {
                return false;
            }
        }
    }
    
    /**
     * Given a list of {@link AFLPlayer}s, create a filter operator that excludes those in the list.
     */
    private static class PlayerOutFilterOperator extends FilterOperator<AFLPlayer, List<AFLPlayer>> {
        public PlayerOutFilterOperator() {
            super("doesn't contain", null);
        }
        @Override
        public boolean matches(AFLPlayer value1, List<AFLPlayer> value2) {
            return value2 != null && !value2.contains(value1);
        }
        
        @Override
        public boolean isValueValid(Object value) {
            if (value instanceof List) {
                List listValue = (List) value;
                for (Iterator it = listValue.iterator(); it.hasNext();) {
                    Object elem = it.next();
                    if (!(elem instanceof AFLPlayer)) {
                        return false;
                    }
                }
                return true;
            } else {
                return false;
            }
        }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.