Skip to content

Package: StatNode

StatNode

nameinstructionbranchcomplexitylinemethod
StatNode(AbstractNode, AbstractNode)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
equals(Object)
M: 0 C: 11
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
hashCode()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
interpret(CommunicationManager)
M: 0 C: 102
100%
M: 0 C: 6
100%
M: 0 C: 4
100%
M: 0 C: 13
100%
M: 0 C: 1
100%
toString()
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%

Coverage

1: package pruefskript.parser.nodes;
2:
3: import java.io.File;
4:
5: import basic.PruefskriptConstants;
6: import pruefskript.CommunicationManager;
7: import pruefskript.parser.exceptions.CheckScriptException;
8: import pruefskript.parser.exceptions.WrongNodeException;
9: import pruefskript.parser.values.AbstractReturnValue;
10: import pruefskript.parser.values.StringValue;
11: import pruefskript.parser.values.VoidValue;
12:
13: /**
14: * Mit StatNode koennen Eigenschaften einer Datei abgefragt werden. Momentan steht lediglich die
15: * Abfrage der Dateigroesse zur Verfuegung.
16: *
17: * @author group B5
18: *
19: */
20: public class StatNode extends AbstractBinaryOperationNode {
21:         /**
22:          *
23:          * @param operand1
24:          * AbstractNode
25:          * @param operand2
26:          * AbstractNode
27:          */
28:         public StatNode(final AbstractNode operand1, final AbstractNode operand2) {
29:                 super(operand1, operand2);
30:         }
31:
32:         @Override
33:         public String toString() {
34:                 return PruefskriptConstants.STATTITLE + PruefskriptConstants.BRACKET_OPEN
35:                                 + super.toString() + PruefskriptConstants.BRACKET_CLOSE;
36:         }
37:
38:         @Override
39:         public boolean equals(final Object obj) {
40:•                return super.equals(obj) && obj instanceof StatNode;
41:
42:         }
43:
44:         @Override
45:         public int hashCode() {
46:                 return super.hashCode() + PruefskriptConstants.STATNODE_HASHCODE;
47:         }
48:
49:         @Override
50:         public VoidValue interpret(final CommunicationManager mgr) throws CheckScriptException {
51:                 final AbstractReturnValue op1 = getOperand1().interpret(mgr);
52:•                if (op1.isStringValue() && this.getOperand2().isIDNode()) {
53:                         final String id = this.getOperand2().toIDNode().getName();
54:                         final File file = new File(op1.toStringValue().getValue());
55:
56:•                        if (file.exists()) {
57:                                 mgr.addValue(basic.PruefskriptConstants.STATTITLE,
58:                                                 id + PruefskriptConstants.STATSIZE,
59:                                                 new StringValue(String.valueOf(file.length())));
60:
61:                                 mgr.addValue(basic.PruefskriptConstants.STATTITLE,
62:                                                 id + PruefskriptConstants.STATRES,
63:                                                 new StringValue(PruefskriptConstants.STATRESMESSAGE));
64:                         } else {
65:                                 mgr.addValue(basic.PruefskriptConstants.STATTITLE,
66:                                                 id + PruefskriptConstants.STATSIZE, new StringValue("0"));
67:
68:                                 mgr.addValue(basic.PruefskriptConstants.STATTITLE,
69:                                                 id + PruefskriptConstants.STATRES,
70:                                                 new StringValue(PruefskriptConstants.STATRESMESSAGE_NOTOK));
71:                         }
72:
73:                 } else {
74:                         throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_STRING);
75:                 }
76:                 return new VoidValue();
77:         }
78: }