Skip to content

Method: hashCode()

1: package pruefskript.parser.nodes;
2:
3: import java.util.ArrayList;
4: import java.util.Iterator;
5: import java.util.List;
6:
7: import basic.PruefskriptConstants;
8: import pruefskript.CommunicationManager;
9: import pruefskript.parser.exceptions.CheckScriptException;
10: import pruefskript.parser.exceptions.WrongNodeException;
11: import pruefskript.parser.values.AbstractReturnValue;
12: import pruefskript.parser.values.ArrayValue;
13:
14: /**
15: * An Array of IdSetNodes.
16: *
17: * @author Phil
18: *
19: */
20: public class IdSetArrayNode extends AbstractNode {
21:         /**
22:         *
23:         */
24:         private final List<IdSetNode> idSets;
25:
26:         /**
27:          *
28:          * @param yylval
29:          * .
30:          */
31:         public IdSetArrayNode(final IdSetNode yylval) {
32:                 super();
33:                 this.idSets = new ArrayList<IdSetNode>();
34:                 this.idSets.add(yylval);
35:         }
36:
37:         @Override
38:         public boolean equals(final Object obj) {
39:                 return obj instanceof IdSetArrayNode
40:                                 && ((IdSetArrayNode) obj).getIdSets().equals(this.idSets);
41:         }
42:
43:         @Override
44:         public int hashCode() {
45:                 return this.idSets.hashCode() + PruefskriptConstants.IDSETARRAYNODE_HASHCODE;
46:         }
47:
48:         @Override
49:         public AbstractReturnValue interpret(final CommunicationManager mgr)
50:                         throws CheckScriptException {
51:                 if (this.isIDSetNode()) {
52:                         return this.getIdSets().get(0).interpret(mgr);
53:                 } else {
54:                         final List<AbstractReturnValue> values = new ArrayList<AbstractReturnValue>();
55:                         for (final Iterator<IdSetNode> iterator = this.getIdSets().iterator(); iterator
56:                                         .hasNext();) {
57:                                 values.add(iterator.next().interpret(mgr));
58:                         }
59:                         return new ArrayValue(values);
60:                 }
61:         }
62:
63:         /**
64:          * Adds an IdSetNode to the array. Is needed by the Parser.
65:          *
66:          * @param yylval
67:          * .
68:          */
69:         public void add(final IdSetNode yylval) {
70:                 this.idSets.add(yylval);
71:         }
72:
73:         /**
74:          * @return the idSets
75:          */
76:         public List<IdSetNode> getIdSets() {
77:                 return this.idSets;
78:         }
79:
80:         @Override
81:         public String toString() {
82:                 final StringBuffer returnString = new StringBuffer();
83:                 returnString.append(basic.PruefskriptConstants.IDSETARRAYNODETITLE);
84:                 returnString.append(PruefskriptConstants.BRACKET_OPEN);
85:                 final Iterator<IdSetNode> it = this.idSets.iterator();
86:                 while (it.hasNext()) {
87:                         returnString.append(it.next().toString());
88:                 }
89:                 returnString.append(PruefskriptConstants.BRACKET_CLOSE);
90:                 return returnString.toString();
91:         }
92:
93:         @Override
94:         public Boolean isIDSetNode() {
95:                 if (this.getIdSets().size() == 1) {
96:                         return Boolean.TRUE;
97:                 } else {
98:                         return Boolean.FALSE;
99:                 }
100:         }
101:
102:         @Override
103:         public IdSetNode toIDSetNode() throws WrongNodeException {
104:                 if (this.isIDSetNode()) {
105:                         return this.getIdSets().get(0);
106:                 } else {
107:                         throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_IDSET);
108:                 }
109:         }
110:
111:         @Override
112:         public Boolean isIdSetArrayNode() {
113:                 return Boolean.TRUE;
114:         }
115:
116:         @Override
117:         public IdSetArrayNode toIdSetArrayNode() throws WrongNodeException {
118:                 return this;
119:         }
120:
121: }