001    // GraphLab Project: http://graphlab.sharif.edu
002    // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
003    // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
004    package graphlab.platform.lang;
005    
006    import java.util.HashSet;
007    
008    /**
009     * This is a validator that it's valid values are a set of values
010     *
011     * @author Azin Azadi
012     */
013    public class SetValidator<t> implements Validator<t> {
014        HashSet<t> vals = new HashSet<t>();
015    
016        public void addValidValues(t[] o) {
017            for (t _ : o) {
018                vals.add(_);
019            }
020        }
021    
022        public void addValidValue(t x) {
023            vals.add(x);
024        }
025    
026        public void removeValidValue(t x) {
027            vals.remove(x);
028        }
029    
030        public boolean isValid(t o) {
031            return vals.contains(o);
032        }
033    
034        public Object[] getValidValues() {
035            return vals.toArray();
036        }
037    
038        public String toString() {
039            String ret = "";
040            if (vals.isEmpty())
041                return " #$%# ";
042            Object[] valar = vals.toArray();
043            ret = ret + valar[0].getClass().getName() + " #$%# " + valar[0];
044            for (int i = 1; i < valar.length; i++) {
045                ret = ret + " #$%# " + valar[i].getClass().getName() + " #$%# " + valar[i].toString();
046            }
047            return ret;
048        }
049    }