// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.platform.lang;

import java.util.Collections;
import java.util.HashSet;

/**
 * This is a validator that it's valid values are a set of values
 *
 * @author Azin Azadi
 */
public class SetValidator<t> implements Validator<t> {
    HashSet<t> vals = new HashSet<>();

    public void addValidValues(t[] o) {
        Collections.addAll(vals, o);
    }

    public void addValidValue(t x) {
        vals.add(x);
    }

    public void removeValidValue(t x) {
        vals.remove(x);
    }

    public boolean isValid(t o) {
        return vals.contains(o);
    }

    public Object[] getValidValues() {
        return vals.toArray();
    }

    public String toString() {
        String ret = "";
        if (vals.isEmpty())
            return " #$%# ";
        Object[] valar = vals.toArray();
        ret = ret + valar[0].getClass().getName() + " #$%# " + valar[0];
        for (int i = 1; i < valar.length; i++) {
            ret = ret + " #$%# " + valar[i].getClass().getName() + " #$%# " + valar[i].toString();
        }
        return ret;
    }
}
