Skip to content

Package: UniversityValidator

UniversityValidator

nameinstructionbranchcomplexitylinemethod
UniversityValidator()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
createDiagnostics(Course, DiagnosticChain, Map, List)
M: 43 C: 0
0%
M: 6 C: 0
0%
M: 4 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
getEPackage()
M: 0 C: 2
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getResourceLocator()
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%
static {...}
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%
validate(int, Object, DiagnosticChain, Map)
M: 37 C: 16
30%
M: 6 C: 2
25%
M: 6 C: 2
25%
M: 6 C: 3
33%
M: 0 C: 1
100%
validateAddress(Address, DiagnosticChain, Map)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
validateAssistant(Assistant, DiagnosticChain, Map)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
validateCourse(Course, DiagnosticChain, Map)
M: 124 C: 0
0%
M: 38 C: 0
0%
M: 20 C: 0
0%
M: 22 C: 0
0%
M: 1 C: 0
0%
validateCourseCatalog(CourseCatalog, DiagnosticChain, Map)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
validateCourse_NameNotEmpty(Course, DiagnosticChain, Map)
M: 48 C: 0
0%
M: 10 C: 0
0%
M: 6 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
validateCourse_UniqueItemById(Course, DiagnosticChain, Map)
M: 116 C: 0
0%
M: 18 C: 0
0%
M: 10 C: 0
0%
M: 22 C: 0
0%
M: 1 C: 0
0%
validatePerson(Person, DiagnosticChain, Map)
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
validateProfessor(Professor, DiagnosticChain, Map)
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%
validateStaff(Staff, DiagnosticChain, Map)
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%

Coverage

1: /**
2: * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH and others.
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License 2.0
6: * which accompanies this distribution, and is available at
7: * https://www.eclipse.org/legal/epl-2.0/
8: *
9: * SPDX-License-Identifier: EPL-2.0
10: *
11: * Contributors:
12: * EclipseSource - Generated code
13: */
14: package org.eclipse.emf.ecp.test.university.util;
15:
16: import java.util.ArrayList;
17: import java.util.LinkedHashMap;
18: import java.util.LinkedHashSet;
19: import java.util.List;
20: import java.util.Map;
21: import java.util.Set;
22:
23: import org.eclipse.emf.common.util.Diagnostic;
24: import org.eclipse.emf.common.util.DiagnosticChain;
25: import org.eclipse.emf.common.util.EList;
26: import org.eclipse.emf.common.util.ResourceLocator;
27: import org.eclipse.emf.ecore.EPackage;
28: import org.eclipse.emf.ecore.util.EObjectValidator;
29: import org.eclipse.emf.ecp.test.university.Address;
30: import org.eclipse.emf.ecp.test.university.Assistant;
31: import org.eclipse.emf.ecp.test.university.Course;
32: import org.eclipse.emf.ecp.test.university.CourseCatalog;
33: import org.eclipse.emf.ecp.test.university.Person;
34: import org.eclipse.emf.ecp.test.university.Professor;
35: import org.eclipse.emf.ecp.test.university.Staff;
36: import org.eclipse.emf.ecp.test.university.UniversityPackage;
37: import org.eclipse.emf.ecp.view.internal.validation.ValidationNotification;
38:
39: /**
40: * <!-- begin-user-doc -->
41: * The <b>Validator</b> for the model.
42: * <!-- end-user-doc -->
43: *
44: * @see org.eclipse.emf.ecp.test.university.UniversityPackage
45: * @generated
46: */
47: public class UniversityValidator extends EObjectValidator {
48:         /**
49:          * The cached model package
50:          * <!-- begin-user-doc -->
51:          * <!-- end-user-doc -->
52:          *
53:          * @generated
54:          */
55:         public static final UniversityValidator INSTANCE = new UniversityValidator();
56:
57:         /**
58:          * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic
59:          * {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
60:          * <!-- begin-user-doc -->
61:          * <!-- end-user-doc -->
62:          *
63:          * @see org.eclipse.emf.common.util.Diagnostic#getSource()
64:          * @see org.eclipse.emf.common.util.Diagnostic#getCode()
65:          * @generated
66:          */
67:         public static final String DIAGNOSTIC_SOURCE = "org.eclipse.emf.ecp.test.university"; //$NON-NLS-1$
68:
69:         /**
70:          * A constant with a fixed name that can be used as the base value for additional hand written constants.
71:          * <!-- begin-user-doc -->
72:          * <!-- end-user-doc -->
73:          *
74:          * @generated
75:          */
76:         private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;
77:
78:         /**
79:          * A constant with a fixed name that can be used as the base value for additional hand written constants in a
80:          * derived class.
81:          * <!-- begin-user-doc -->
82:          * <!-- end-user-doc -->
83:          *
84:          * @generated
85:          */
86:         protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
87:
88:         /**
89:          * Creates an instance of the switch.
90:          * <!-- begin-user-doc -->
91:          * <!-- end-user-doc -->
92:          *
93:          * @generated
94:          */
95:         public UniversityValidator() {
96:                 super();
97:         }
98:
99:         /**
100:          * Returns the package of this validator switch.
101:          * <!-- begin-user-doc -->
102:          * <!-- end-user-doc -->
103:          *
104:          * @generated
105:          */
106:         @Override
107:         protected EPackage getEPackage() {
108:                 return UniversityPackage.eINSTANCE;
109:         }
110:
111:         /**
112:          * Calls <code>validateXXX</code> for the corresponding classifier of the model.
113:          * <!-- begin-user-doc -->
114:          * <!-- end-user-doc -->
115:          *
116:          * @generated
117:          */
118:         @Override
119:         protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics,
120:                 Map<Object, Object> context) {
121:•                switch (classifierID) {
122:                 case UniversityPackage.COURSE_CATALOG:
123:                         return validateCourseCatalog((CourseCatalog) value, diagnostics, context);
124:                 case UniversityPackage.COURSE:
125:                         return validateCourse((Course) value, diagnostics, context);
126:                 case UniversityPackage.STAFF:
127:                         return validateStaff((Staff) value, diagnostics, context);
128:                 case UniversityPackage.PROFESSOR:
129:                         return validateProfessor((Professor) value, diagnostics, context);
130:                 case UniversityPackage.ASSISTANT:
131:                         return validateAssistant((Assistant) value, diagnostics, context);
132:                 case UniversityPackage.PERSON:
133:                         return validatePerson((Person) value, diagnostics, context);
134:                 case UniversityPackage.ADDRESS:
135:                         return validateAddress((Address) value, diagnostics, context);
136:                 default:
137:                         return true;
138:                 }
139:         }
140:
141:         /**
142:          * <!-- begin-user-doc -->
143:          * <!-- end-user-doc -->
144:          *
145:          * @generated
146:          */
147:         public boolean validateCourseCatalog(CourseCatalog courseCatalog, DiagnosticChain diagnostics,
148:                 Map<Object, Object> context) {
149:                 return validate_EveryDefaultConstraint(courseCatalog, diagnostics, context);
150:         }
151:
152:         /**
153:          * <!-- begin-user-doc -->
154:          * <!-- end-user-doc -->
155:          *
156:          * @generated
157:          */
158:         public boolean validateCourse(Course course, DiagnosticChain diagnostics, Map<Object, Object> context) {
159:•                if (!validate_NoCircularContainment(course, diagnostics, context)) {
160:                         return false;
161:                 }
162:                 boolean result = validate_EveryMultiplicityConforms(course, diagnostics, context);
163:•                if (result || diagnostics != null) {
164:                         result &= validate_EveryDataValueConforms(course, diagnostics, context);
165:                 }
166:•                if (result || diagnostics != null) {
167:                         result &= validate_EveryReferenceIsContained(course, diagnostics, context);
168:                 }
169:•                if (result || diagnostics != null) {
170:                         result &= validate_EveryBidirectionalReferenceIsPaired(course, diagnostics, context);
171:                 }
172:•                if (result || diagnostics != null) {
173:                         result &= validate_EveryProxyResolves(course, diagnostics, context);
174:                 }
175:•                if (result || diagnostics != null) {
176:                         result &= validate_UniqueID(course, diagnostics, context);
177:                 }
178:•                if (result || diagnostics != null) {
179:                         result &= validate_EveryKeyUnique(course, diagnostics, context);
180:                 }
181:•                if (result || diagnostics != null) {
182:                         result &= validate_EveryMapEntryUnique(course, diagnostics, context);
183:                 }
184:•                if (result || diagnostics != null) {
185:                         result &= validateCourse_UniqueItemById(course, diagnostics, context);
186:                 }
187:•                if (result || diagnostics != null) {
188:                         result &= validateCourse_NameNotEmpty(course, diagnostics, context);
189:                 }
190:                 return result;
191:         }
192:
193:         /**
194:          * Validates the UniqueItemById constraint of '<em>Course</em>'.
195:          * <!-- begin-user-doc -->
196:          * <!-- end-user-doc -->
197:          *
198:          * @generated NOT
199:          */
200:         // BEGIN COMPLEX CODE
201:         public boolean validateCourse_UniqueItemById(Course course, DiagnosticChain diagnostics,
202:                 Map<Object, Object> context) {
203:                 // method name is generated
204:                 boolean validationResult = true;
205:                 final CourseCatalog courseCatalog = (CourseCatalog) course.eContainer();
206:•                if (courseCatalog == null) {
207:                         return true;
208:                 }
209:
210:                 final EList<Course> existingCourses = courseCatalog.getCourses();
211:                 final Map<String, Set<Course>> contentMap = new LinkedHashMap<>();
212:                 final List<Course> duplicates = new ArrayList<>();
213:
214:•                for (final Course courseToCheck : existingCourses) {
215:                         final String id = courseToCheck.getId();
216:•                        if (!contentMap.containsKey(id)) {
217:                                 contentMap.put(id, new LinkedHashSet<Course>());
218:                         }
219:                         contentMap.get(id).add(courseToCheck);
220:                 }
221:
222:•                for (final String id : contentMap.keySet()) {
223:•                        if (id != null) {
224:•                                if (contentMap.get(id).size() > 1 && id.equals(course.getId())) {
225:                                         duplicates.addAll(contentMap.get(id));
226:                                 }
227:                         }
228:                 }
229:
230:•                if (!duplicates.isEmpty()) {
231:                         validationResult = false;
232:                 }
233:
234:                 createDiagnostics(course, diagnostics, context, duplicates);
235:
236:•                for (final Course courseToNotify : existingCourses) {
237:                         courseToNotify.eNotify(new ValidationNotification(courseToNotify));
238:                 }
239:
240:                 return validationResult;
241:         }
242:
243:         // END COMPLEX CODE
244:
245:         /**
246:          * @param course
247:          * @param diagnostics
248:          * @param context
249:          * @param duplicates
250:          */
251:         private void createDiagnostics(Course course, DiagnosticChain diagnostics, Map<Object, Object> context,
252:                 final List<Course> duplicates) {
253:•                for (final Course courseWithDuplicatedId : duplicates) {
254:•                        if (diagnostics != null) {
255:•                                if (courseWithDuplicatedId != course) {
256:                                         diagnostics
257:                                                 .add(createDiagnostic(Diagnostic.WARNING,
258:                                                         DIAGNOSTIC_SOURCE,
259:                                                         0, "_UI_GenericConstraint_diagnostic", //$NON-NLS-1$
260:                                                         new Object[] { "The id of a course must be unique" }, //$NON-NLS-1$
261:                                                         new Object[] { courseWithDuplicatedId, UniversityPackage.eINSTANCE.getCourse_Id() },
262:                                                         context));
263:                                 }
264:                         }
265:                 }
266:         }
267:
268:         /**
269:          * Validates the NameNotEmpty constraint of '<em>Course</em>'.
270:          * <!-- begin-user-doc -->
271:          * <!-- end-user-doc -->
272:          *
273:          * @generated NOT
274:          */
275:         // BEGIN COMPLEX CODE
276:         public boolean validateCourse_NameNotEmpty(Course course, DiagnosticChain diagnostics,
277:                 Map<Object, Object> context) {
278:                 // method name is generated
279:•                if (course.getName() != null && course.getName().length() < 1 || course.getId() != null
280:•                        && course.getId().length() < 1) {
281:•                        if (diagnostics != null) {
282:                                 diagnostics.add(createDiagnostic(Diagnostic.ERROR,
283:                                         DIAGNOSTIC_SOURCE,
284:                                         0, "_UI_GenericConstraint_diagnostic", //$NON-NLS-1$
285:                                         new Object[] { "A course needs a name and an id." }, //$NON-NLS-1$
286:                                         new Object[] { course, UniversityPackage.eINSTANCE.getCourse_Name() },
287:                                         context));
288:                         }
289:                         return false;
290:                 }
291:                 return true;
292:         }
293:
294:         // END COMPLEX CODE
295:
296:         /**
297:          * <!-- begin-user-doc -->
298:          * <!-- end-user-doc -->
299:          *
300:          * @generated
301:          */
302:         public boolean validateStaff(Staff staff, DiagnosticChain diagnostics, Map<Object, Object> context) {
303:                 return validate_EveryDefaultConstraint(staff, diagnostics, context);
304:         }
305:
306:         /**
307:          * <!-- begin-user-doc -->
308:          * <!-- end-user-doc -->
309:          *
310:          * @generated
311:          */
312:         public boolean validateProfessor(Professor professor, DiagnosticChain diagnostics, Map<Object, Object> context) {
313:                 return validate_EveryDefaultConstraint(professor, diagnostics, context);
314:         }
315:
316:         /**
317:          * <!-- begin-user-doc -->
318:          * <!-- end-user-doc -->
319:          *
320:          * @generated
321:          */
322:         public boolean validateAssistant(Assistant assistant, DiagnosticChain diagnostics, Map<Object, Object> context) {
323:                 return validate_EveryDefaultConstraint(assistant, diagnostics, context);
324:         }
325:
326:         /**
327:          * <!-- begin-user-doc -->
328:          * <!-- end-user-doc -->
329:          *
330:          * @generated
331:          */
332:         public boolean validatePerson(Person person, DiagnosticChain diagnostics, Map<Object, Object> context) {
333:                 return validate_EveryDefaultConstraint(person, diagnostics, context);
334:         }
335:
336:         /**
337:          * <!-- begin-user-doc -->
338:          * <!-- end-user-doc -->
339:          *
340:          * @generated
341:          */
342:         public boolean validateAddress(Address address, DiagnosticChain diagnostics, Map<Object, Object> context) {
343:                 return validate_EveryDefaultConstraint(address, diagnostics, context);
344:         }
345:
346:         /**
347:          * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.
348:          * <!-- begin-user-doc -->
349:          * <!-- end-user-doc -->
350:          *
351:          * @generated
352:          */
353:         @Override
354:         public ResourceLocator getResourceLocator() {
355:                 // TODO
356:                 // Specialize this to return a resource locator for messages specific to this validator.
357:                 // Ensure that you remove @generated or mark it @generated NOT
358:                 return super.getResourceLocator();
359:         }
360:
361: } // UniversityValidator