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 }