Skip to content

Method: equals(Object)

1: package pruefskript.parser.nodes;
2:
3: import basic.PruefskriptConstants;
4: import pruefskript.CommunicationManager;
5: import pruefskript.parser.exceptions.CheckScriptException;
6: import pruefskript.parser.exceptions.WrongNodeException;
7: import pruefskript.parser.values.AbstractReturnValue;
8: import pruefskript.parser.values.NumericValue;
9:
10: /**
11: * SubNode.
12: *
13: * @author Phil
14: *
15: */
16: public class SubNode extends AbstractBinaryOperationNode {
17:
18:         /**
19:          * SubNode.
20:          *
21:          * @param operand1
22:          * AbstractNode
23:          * @param operand2
24:          * AbstractNode
25:          */
26:         public SubNode(final AbstractNode operand1, final AbstractNode operand2) {
27:                 super(operand1, operand2);
28:         }
29:
30:         @Override
31:         public String toString() {
32:                 return PruefskriptConstants.SUBNODETITLE + PruefskriptConstants.BRACKET_OPEN
33:                                 + super.toString() + PruefskriptConstants.BRACKET_CLOSE;
34:         }
35:
36:         @Override
37:         public boolean equals(final Object obj) {
38:•                return super.equals(obj) && obj instanceof SubNode;
39:
40:         }
41:
42:         @Override
43:         public int hashCode() {
44:                 return super.hashCode() + PruefskriptConstants.SUBNODE_HASHCODE;
45:         }
46:
47:         /**
48:          * Die Operanten 1 und 2 werden ausgewertet und haben sie numerische Werte, wird der von Operant
49:          * 2 von Operant 1 abezogen und das Ergebnis wird zurueckgegeben. Ansonsten wird eine Exception
50:          * geworfen.
51:          */
52:         @Override
53:         public NumericValue interpret(final CommunicationManager mgr) throws CheckScriptException {
54:                 final AbstractReturnValue op1 = this.getOperand1().interpret(mgr);
55:                 final AbstractReturnValue op2 = this.getOperand2().interpret(mgr);
56:                 if (op1.isNumericValue() && op2.isNumericValue()) {
57:                         return new NumericValue(
58:                                         op1.toNumericValue().getValue() - op2.toNumericValue().getValue());
59:                 } else {
60:                         throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_NUM_OPERATION);
61:
62:                 }
63:
64:         }
65: }