001/*
002 * $Id$
003 */
004
005package edu.jas.application;
006
007
008import java.io.Serializable;
009import java.util.Arrays;
010import java.util.Set;
011
012
013/**
014 * Container for dimension parameters.
015 * @author Heinz Kredel
016 */
017public class Dimension implements Serializable {
018
019
020    /**
021     * Ideal dimension.
022     */
023    public final int d;
024
025
026    /**
027     * Indices of a maximal independent set (of variables).
028     */
029    public final Set<Integer> S;
030
031
032    /**
033     * Set of indices of all maximal independent sets (of variables).
034     */
035    public final Set<Set<Integer>> M;
036
037
038    /**
039     * Names of all variables.
040     */
041    public final String[] v;
042
043
044    /**
045     * Constructor.
046     * @param d ideal dimension.
047     * @param S indices of a maximal independent set (of variables)
048     * @param M set of indices of all maximal independent sets (of variables)
049     * @param v names of all variables
050     */
051    public Dimension(int d, Set<Integer> S, Set<Set<Integer>> M, String[] v) {
052        this.d = d;
053        this.S = S;
054        this.M = M;
055        this.v = Arrays.copyOf(v,v.length); // > Java-5
056    }
057
058
059    /**
060     * String representation of the ideal.
061     * @see java.lang.Object#toString()
062     */
063    @Override
064    public String toString() {
065        StringBuffer sb = new StringBuffer("Dimension( " + d + ", ");
066        if (v == null) {
067            sb.append("" + S + ", " + M + " )");
068            return sb.toString();
069        }
070        String[] s = new String[S.size()];
071        int j = 0;
072        for (Integer i : S) {
073            s[j] = v[i];
074            j++;
075        }
076        sb.append(Arrays.toString(s) + ", ");
077        sb.append("[ ");
078        boolean first = true;
079        for (Set<Integer> m : M) {
080            if (first) {
081                first = false;
082            } else {
083                sb.append(", ");
084            }
085            s = new String[m.size()];
086            j = 0;
087            for (Integer i : m) {
088                s[j] = v[i];
089                j++;
090            }
091            sb.append(Arrays.toString(s));
092        }
093        sb.append(" ] )");
094        return sb.toString();
095    }
096}