Skip to content

Package: AbstractVariableDefinition

AbstractVariableDefinition

nameinstructionbranchcomplexitylinemethod
AbstractVariableDefinition(String, AbstractVariableType, boolean, boolean, DefaultValue, VariableOptReference, Position)
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
AbstractVariableDefinition(String, AbstractVariableType, boolean, boolean, DefaultValue, VariableOptReference, Position, VariableContext)
M: 0 C: 27
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
getContext()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getDefaultValue()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getName()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getPosition()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getReference()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getType()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
isOptional()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
isReallyOptional()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
isVariableActive(RouterConfiguration, AbstractVariableDefinition)
M: 38 C: 13
25%
M: 9 C: 1
10%
M: 5 C: 1
17%
M: 12 C: 6
33%
M: 0 C: 1
100%

Coverage

1: package model.definition;
2:
3: import model.Position;
4: import model.RouterConfiguration;
5: import model.assignment.VariableAssignment;
6: import model.type.AbstractVariableType;
7:
8: /**
9: * VariableDefinition represents an entry in the "\check\<package>.txt" files.
10: *
11: * @author HFW410RA - Philipp Rammos
12: *
13: */
14: public abstract class AbstractVariableDefinition {
15:         /**
16:          * Represents the name of the definition.
17:          */
18:         private final String name;
19:         /**
20:          * Represents the type of the definition.
21:          */
22:         private final AbstractVariableType type;
23:         /**
24:          * Represents if the definition is optional.
25:          */
26:         private final boolean isOptionalField;
27:         /**
28:          * Represents if the definition is really optional (for Arrays).
29:          */
30:         private final boolean isReallyOptionalField;
31:         /**
32:          * Represents the default value of the definition.
33:          */
34:         private final DefaultValue defaultValue;
35:         /**
36:          * Represents if the definition has an opt or not.
37:          */
38:         private final VariableOptReference reference;
39:         /**
40:          * position where the entry is written.
41:          */
42:         private final Position position;
43:         /**
44:          * The range/context of the definition. Configuration or Ext-Skript.
45:          */
46:         private final VariableContext context;
47:         /**
48:          * This attribute represents the String "no".
49:          */
50:         private static final String NO = "no";
51:
52:         /**
53:          * Constructor, just sets the fields.
54:          *
55:          * @param name
56:          * The name of the definition
57:          * @param type
58:          * The type of the definition
59:          * @param isOptional
60:          * Represents if the definition is optional
61:          * @param isReallyOptional
62:          * A parameter showing the ++ in arrays
63:          * @param defaultValue
64:          * The default value of the definition.
65:          * @param reference
66:          * Represents if the definition has an opt or not.
67:          * @param position
68:          * The row to set.
69:          */
70:         public AbstractVariableDefinition(final String name, final AbstractVariableType type,
71:                         final boolean isOptional, final boolean isReallyOptional,
72:                         final DefaultValue defaultValue, final VariableOptReference reference,
73:                         final Position position) {
74:                 this(name, type, isOptional, isReallyOptional, defaultValue, reference, position,
75:                                 new ConfigurationContext());
76:         }
77:
78:         /**
79:          * Constructor, just sets the fields.
80:          *
81:          * @param name
82:          * The name of the definition
83:          * @param type
84:          * The type of the definition
85:          * @param isOptional
86:          * Represents if the definition is optional
87:          * @param isReallyOptional
88:          * A parameter showing the ++ in arrays
89:          * @param defaultValue
90:          * The default value of the definition.
91:          * @param reference
92:          * Represents if the definition has an opt or not.
93:          * @param position
94:          * The row to set.
95:          * @param context
96:          * The range/context of the definition (config or ext-skript).
97:          */
98:         public AbstractVariableDefinition(final String name, final AbstractVariableType type,
99:                         final boolean isOptional, final boolean isReallyOptional,
100:                         final DefaultValue defaultValue, final VariableOptReference reference,
101:                         final Position position, final VariableContext context) {
102:                 this.name = name;
103:                 this.type = type;
104:                 this.isOptionalField = isOptional;
105:                 this.defaultValue = defaultValue;
106:                 this.reference = reference;
107:                 this.position = position;
108:                 this.isReallyOptionalField = isReallyOptional;
109:                 this.context = context;
110:         }
111:
112:         /**
113:          * Returns the field name. No side effects.
114:          *
115:          * @return this.name
116:          */
117:         public String getName() {
118:                 return this.name;
119:         }
120:
121:         /**
122:          * Returns the field row. No side effects.
123:          *
124:          * @return this.row
125:          */
126:         public Position getPosition() {
127:                 return this.position;
128:         }
129:
130:         /**
131:          * Returns the field type. No side effects.
132:          *
133:          * @return this.type
134:          */
135:         public AbstractVariableType getType() {
136:                 return this.type;
137:         }
138:
139:         /**
140:          * Returns the field isOptional. No side effects.
141:          *
142:          * @return this.isOptional
143:          */
144:         public boolean isOptional() {
145:                 return this.isOptionalField;
146:         }
147:
148:         /**
149:          * Returns the field isOptional (Array). No side effects.
150:          *
151:          * @return this.isOptional
152:          */
153:         public boolean isReallyOptional() {
154:                 return this.isReallyOptionalField;
155:         }
156:
157:         /**
158:          * Returns the field defaultValue. No side effects.
159:          *
160:          * @return this.defaultValue
161:          */
162:         public DefaultValue getDefaultValue() {
163:                 return this.defaultValue;
164:         }
165:
166:         /**
167:          * Returns the field reference. No side effects.
168:          *
169:          * @return this.reference
170:          */
171:         public VariableOptReference getReference() {
172:                 return this.reference;
173:         }
174:
175:         /**
176:          * Returns the line to print.
177:          *
178:          * @return Returns a string value, representing a line to print.
179:          */
180:         public abstract String print();
181:
182:         /**
183:          * This method checks, if the variable active or not.
184:          *
185:          * @param rc
186:          * The router configuration.
187:          * @param absVarDef
188:          * Represents the received variable.
189:          * @return result, so true or false.
190:          */
191:         public boolean isVariableActive(final RouterConfiguration rc,
192:                         final AbstractVariableDefinition absVarDef) {
193:
194:                 AbstractVariableDefinition localAbsVarDef = absVarDef;
195:                 final boolean result = true;
196:
197:                 while (result) {
198:                         final VariableOptReference ref = localAbsVarDef.getReference();
199:•                        if (ref instanceof HasnotOpt) {
200:                                 break;
201:                         }
202:                         final Opt opt = ((HasOpt) ref).getOpt();
203:                         final AbstractVariableDefinition var = opt.getOptVariable();
204:                         final VariableAssignment ass = rc.getAllAssignments().get(var.getName());
205:                         String value = null;
206:•                        if (ass != null) {
207:                                 value = ass.getValue();
208:                         }
209:•                        if (value == null) {
210:                                 value = var.getDefaultValue().getDefaultValue();
211:                         }
212:•                        if (value == null || value.equals(NO)) {
213:                                 return false;
214:                         } else {
215:                                 localAbsVarDef = var;
216:                         }
217:                 }
218:
219:                 return result;
220:         }
221:
222:         /**
223:          * @return the context
224:          */
225:         public VariableContext getContext() {
226:                 return this.context;
227:         }
228: }