Skip to content

Package: EMFFormsMappingProviderTable

EMFFormsMappingProviderTable

nameinstructionbranchcomplexitylinemethod
EMFFormsMappingProviderTable()
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%
getMappingFor(VDomainModelReference, EObject)
M: 0 C: 78
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 15
100%
M: 0 C: 1
100%
isApplicable(VDomainModelReference, EObject)
M: 18 C: 12
40%
M: 2 C: 4
67%
M: 2 C: 2
50%
M: 4 C: 5
56%
M: 0 C: 1
100%
setEMFFormsDatabinding(EMFFormsDatabindingEMF)
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%
setReportService(ReportService)
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%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2015 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: * Lucas - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.core.services.mappingprovider.table;
15:
16: import java.util.Collections;
17: import java.util.LinkedHashSet;
18: import java.util.List;
19: import java.util.Set;
20:
21: import org.eclipse.emf.ecore.EObject;
22: import org.eclipse.emf.ecore.EStructuralFeature.Setting;
23: import org.eclipse.emf.ecp.common.spi.UniqueSetting;
24: import org.eclipse.emf.ecp.common.spi.asserts.Assert;
25: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
26: import org.eclipse.emf.ecp.view.spi.table.model.VTableDomainModelReference;
27: import org.eclipse.emfforms.spi.common.report.AbstractReport;
28: import org.eclipse.emfforms.spi.common.report.ReportService;
29: import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
30: import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
31: import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
32: import org.eclipse.emfforms.spi.core.services.mappingprovider.EMFFormsMappingProvider;
33: import org.osgi.service.component.annotations.Component;
34: import org.osgi.service.component.annotations.Reference;
35:
36: /**
37: * An {@link EMFFormsMappingProvider} implementation for {@link VTableDomainModelReference}.
38: *
39: * @author Lucas Koehler
40: *
41: */
42: @Component(name = "EMFFormsMappingProviderTable")
43: public class EMFFormsMappingProviderTable implements EMFFormsMappingProvider {
44:
45:         private EMFFormsDatabindingEMF emfFormsDatabinding;
46:         private ReportService reportService;
47:
48:         /**
49:          * Sets the {@link EMFFormsDatabindingEMF} service.
50:          *
51:          * @param emfFormsDatabinding The databinding service
52:          */
53:         @Reference(unbind = "-")
54:         protected void setEMFFormsDatabinding(EMFFormsDatabindingEMF emfFormsDatabinding) {
55:                 this.emfFormsDatabinding = emfFormsDatabinding;
56:         }
57:
58:         /**
59:          * Sets the {@link ReportService}.
60:          *
61:          * @param reportService The {@link ReportService}
62:          */
63:         @Reference(unbind = "-")
64:         protected void setReportService(ReportService reportService) {
65:                 this.reportService = reportService;
66:         }
67:
68:         /**
69:          * {@inheritDoc}
70:          *
71:          * @see org.eclipse.emfforms.spi.core.services.mappingprovider.EMFFormsMappingProvider#getMappingFor(org.eclipse.emf.ecp.view.spi.model.VDomainModelReference,
72:          * org.eclipse.emf.ecore.EObject)
73:          */
74:         @SuppressWarnings("unchecked")
75:         @Override
76:         public Set<UniqueSetting> getMappingFor(VDomainModelReference domainModelReference, EObject domainObject) {
77:                 Assert.create(domainModelReference).notNull();
78:                 Assert.create(domainObject).notNull();
79:
80:                 final VTableDomainModelReference tableDMR = (VTableDomainModelReference) domainModelReference;
81:                 Setting tableSetting;
82:                 try {
83:                         tableSetting = emfFormsDatabinding.getSetting(tableDMR, domainObject);
84:                 } catch (final DatabindingFailedException ex) {
85:                         reportService.report(new DatabindingFailedReport(ex));
86:                         return Collections.<UniqueSetting> emptySet();
87:                 }
88:
89:                 final Set<UniqueSetting> settingsMap = new LinkedHashSet<UniqueSetting>();
90:                 settingsMap.add(UniqueSetting.createSetting(tableSetting));
91:
92:•                for (final EObject eObject : (List<EObject>) tableSetting.get(true)) {
93:
94:•                        for (final VDomainModelReference columnDMR : tableDMR.getColumnDomainModelReferences()) {
95:                                 try {
96:                                         final Setting columnSetting = emfFormsDatabinding.getSetting(columnDMR, eObject);
97:                                         settingsMap.add(UniqueSetting.createSetting(columnSetting));
98:                                 } catch (final DatabindingFailedException ex) {
99:                                         // ignoring this for now, as we explicitly allow abstract types (i.e. within tables)
100:                                         // reportService.report(new DatabindingFailedReport(ex));
101:                                 }
102:                         }
103:                 }
104:                 return settingsMap;
105:         }
106:
107:         /**
108:          * {@inheritDoc}
109:          *
110:          * @see org.eclipse.emfforms.spi.core.services.mappingprovider.EMFFormsMappingProvider#isApplicable(org.eclipse.emf.ecp.view.spi.model.VDomainModelReference,
111:          * org.eclipse.emf.ecore.EObject)
112:          */
113:         @Override
114:         public double isApplicable(VDomainModelReference domainModelReference, EObject domainObject) {
115:•                if (domainModelReference == null) {
116:                         reportService.report(new AbstractReport("Warning: The given VDomainModelReference was null.")); //$NON-NLS-1$
117:                         return NOT_APPLICABLE;
118:                 }
119:•                if (domainObject == null) {
120:                         reportService.report(new AbstractReport("Warning: The given domain object was null.")); //$NON-NLS-1$
121:                         return NOT_APPLICABLE;
122:                 }
123:
124:•                if (VTableDomainModelReference.class.isInstance(domainModelReference)) {
125:                         return 5d;
126:                 }
127:
128:                 return NOT_APPLICABLE;
129:         }
130: }