Skip to content

Method: hashCode()

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.VoidValue;
9:
10: /**
11: * Mit ProvidesNode kann man ein Paket deklarieren, dass es beispielsweise ein Server bereitstellt
12: * oder einen Druckdienst unterscheiden.
13: *
14: * @author Phil
15: *
16: *
17: */
18: public class ProvidesNode extends AbstractBinaryOperationNode {
19:         /**
20:          *
21:          * @param operand1
22:          * AbstractNode
23:          * @param operand2
24:          * AbstractNode
25:          */
26:         public ProvidesNode(final AbstractNode operand1, final AbstractNode operand2) {
27:                 super(operand1, operand2);
28:         }
29:
30:         @Override
31:         public String toString() {
32:                 return PruefskriptConstants.PROVIDESTITLE + 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 ProvidesNode;
39:
40:         }
41:
42:         @Override
43:         public int hashCode() {
44:                 return super.hashCode() + PruefskriptConstants.PROVIDESNODE_HASHCODE;
45:         }
46:
47:         @Override
48:         public VoidValue interpret(final CommunicationManager mgr) throws CheckScriptException {
49:                 final AbstractReturnValue op2 = this.getOperand2().interpret(mgr);
50:                 if (this.getOperand1().isIDNode() && op2.isVersionValue()) {
51:                         final String id = this.getOperand1().toIDNode().getName();
52:                         final String version = op2.toVersionValue().getValue();
53:                         mgr.addProvidesList(id, version);
54:                 } else {
55:                         throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_STRING_OPERATION);
56:                 }
57:
58:                 return new VoidValue();
59:
60:         }
61: }