Skip to content

Package: CryptNode

CryptNode

nameinstructionbranchcomplexitylinemethod
CryptNode(AbstractNode)
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
cryptArrayElements(CommunicationManager, String, List)
M: 5 C: 36
88%
M: 1 C: 7
88%
M: 1 C: 4
80%
M: 1 C: 5
83%
M: 0 C: 1
100%
cryptString(String)
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%
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: 5 C: 64
93%
M: 1 C: 9
90%
M: 1 C: 5
83%
M: 1 C: 12
92%
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.util.List;
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 CryptNode wird der Wert, der angegebene Variable verschluesselt.
15: *
16: * @author group B5
17: *
18: */
19: public class CryptNode extends AbstractUnaryOperationNode {
20:         /**
21:          * CryptNode.
22:          *
23:          * @param operand
24:          * AbstractNode
25:          */
26:         public CryptNode(final AbstractNode operand) {
27:                 super(operand);
28:         }
29:
30:         @Override
31:         public String toString() {
32:                 return PruefskriptConstants.CRYPTNODETITLE + 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 CryptNode;
39:
40:         }
41:
42:         @Override
43:         public int hashCode() {
44:                 return super.hashCode() + PruefskriptConstants.CRYPTNODE_HASHCODE;
45:         }
46:
47:         @Override
48:         public VoidValue interpret(final CommunicationManager mgr) throws CheckScriptException {
49:                 final String variableName;
50:                 final AbstractReturnValue op = this.getOperand().interpret(mgr);
51:•                if (op.isArrayValue()) {
52:                         variableName = this.getOperand().toIDSetNode().getName();
53:                         final List<AbstractReturnValue> array = op.toArrayValue().getValues();
54:                         cryptArrayElements(mgr, variableName, array);
55:•                } else if (this.getOperand().isIDNode()) {
56:                         variableName = this.getOperand().toIDNode().getName();
57:•                        if (op.isStringValue() || op.isNumericValue() || op.isVersionValue()) {
58:                                 mgr.addValue("crypt", variableName,
59:                                                 this.cryptString(op.getStringRepresentation()));
60:                         } else {
61:                                 throw new WrongNodeException(PruefskriptConstants.NO_NUM_VER_STRING_TYP);
62:                         }
63:                 } else {
64:                         throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_ID);
65:                 }
66:                 return new VoidValue();
67:         }
68:
69:         /**
70:          * @param mgr
71:          * The {@link CommunicationManager} to use.
72:          * @param variableName
73:          * String
74:          * @param array
75:          * AbstractReturnValue
76:          * @throws WrongNodeException
77:          * WrongNodeException
78:          */
79:         private void cryptArrayElements(final CommunicationManager mgr, final String variableName,
80:                         final List<AbstractReturnValue> array) throws WrongNodeException {
81:•                for (int i = 0; i < array.size(); i++) {
82:                         final AbstractReturnValue value = array.get(i);
83:•                        if (value.isStringValue() || value.isNumericValue() || value.isVersionValue()) {
84:                                 mgr.addValue(variableName, i, this.cryptString(value.getStringRepresentation()));
85:                         } else {
86:                                 throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_VOID_VALUE);
87:                         }
88:                 }
89:         }
90:
91:         /**
92:          * cryptString.
93:          *
94:          * @param value
95:          * AbstractReturnValue
96:          * @return StringValue
97:          */
98:         private StringValue cryptString(final String value) {
99:                 return new StringValue(org.apache.commons.codec.digest.UnixCrypt.crypt(value));
100:         }
101: }