Skip to content

Package: SettingToControlExpandHelper

SettingToControlExpandHelper

nameinstructionbranchcomplexitylinemethod
expandAndInitDMR(EObject, EMFFormsDomainExpander, EObject, EMFFormsViewContext)
M: 0 C: 39
100%
M: 0 C: 6
100%
M: 0 C: 4
100%
M: 0 C: 10
100%
M: 0 C: 1
100%
resolveDomainReferences(EObject, EObject, EMFFormsViewContext)
M: 0 C: 30
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 10
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2016 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: * Eugen Neufeld - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.core.services.controlmapper;
15:
16: import org.eclipse.emf.common.util.TreeIterator;
17: import org.eclipse.emf.ecore.EObject;
18: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
19: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReferenceSegment;
20: import org.eclipse.emfforms.spi.common.report.AbstractReport;
21: import org.eclipse.emfforms.spi.common.report.ReportService;
22: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsDomainExpander;
23: import org.eclipse.emfforms.spi.core.services.domainexpander.EMFFormsExpandingFailedException;
24: import org.eclipse.emfforms.spi.core.services.view.EMFFormsViewContext;
25:
26: /**
27: * Helper class to expand eobjects.
28: *
29: * @author Eugen Neufeld
30: *
31: */
32: public final class SettingToControlExpandHelper {
33:
34:         private SettingToControlExpandHelper() {
35:         }
36:
37:         /**
38:          * Resolve all domain model references for a given resolvable and a given domain model root.
39:          *
40:          * @param resolvable The EObject to resolve all {@link VDomainModelReference domain model references} of.
41:          * @param domainModelRoot the domain model used for the resolving.
42:          * @param viewModelContext The {@link EMFFormsViewContext}
43:          */
44:         public static void resolveDomainReferences(EObject resolvable, EObject domainModelRoot,
45:                 EMFFormsViewContext viewModelContext) {
46:                 // Get domain expander service
47:                 final EMFFormsDomainExpander domainExpander = viewModelContext
48:                         .getService(EMFFormsDomainExpander.class);
49:•                if (domainExpander == null) {
50:                         return;
51:                 }
52:                 expandAndInitDMR(domainModelRoot, domainExpander, resolvable, viewModelContext);
53:                 // Iterate over all domain model references of the given EObject.
54:                 final TreeIterator<EObject> eAllContents = resolvable.eAllContents();
55:•                while (eAllContents.hasNext()) {
56:                         final EObject eObject = eAllContents.next();
57:                         expandAndInitDMR(domainModelRoot, domainExpander, eObject, viewModelContext);
58:                 }
59:         }
60:
61:         @SuppressWarnings("deprecation")
62:         private static void expandAndInitDMR(EObject domainModelRoot, final EMFFormsDomainExpander domainExpander,
63:                 final EObject eObject, EMFFormsViewContext viewModelContext) {
64:•                if (VDomainModelReference.class.isInstance(eObject)
65:•                        && !VDomainModelReference.class.isInstance(eObject.eContainer())
66:•                        && !VDomainModelReferenceSegment.class.isInstance(eObject.eContainer())) {
67:                         final VDomainModelReference domainModelReference = VDomainModelReference.class.cast(eObject);
68:                         // FIXME remove as soon as all users have moved
69:                         domainModelReference.init(domainModelRoot);
70:                         try {
71:                                 domainExpander.prepareDomainObject(domainModelReference, domainModelRoot);
72:                         } catch (final EMFFormsExpandingFailedException ex) {
73:                                 viewModelContext.getService(ReportService.class)
74:                                         .report(new AbstractReport(ex));
75:                         }
76:                 }
77:         }
78: }