001    /*
002     * $Id: Dimension.java 3058 2010-03-27 11:05:23Z kredel $
003     */
004    
005    package edu.jas.application;
006    
007    
008    import java.io.Serializable;
009    import java.util.Arrays;
010    import java.util.Set;
011    
012    
013    /**
014     * Container for dimension parameters.
015     * @author Heinz Kredel
016     */
017    public 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 = v;
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    }