Skip to content

Package: EMFFormsMappingProviderManagerImpl$1

EMFFormsMappingProviderManagerImpl$1

nameinstructionbranchcomplexitylinemethod
getRank(EMFFormsMappingProvider)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
{...}
M: 0 C: 12
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-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: * Eugen - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.core.services.mappingprovider;
15:
16: import java.util.Collections;
17: import java.util.LinkedHashSet;
18: import java.util.Set;
19:
20: import org.eclipse.emf.ecore.EObject;
21: import org.eclipse.emf.ecp.common.spi.UniqueSetting;
22: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
23: import org.eclipse.emfforms.common.RankingHelper;
24: import org.eclipse.emfforms.spi.common.report.AbstractReport;
25: import org.eclipse.emfforms.spi.common.report.ReportService;
26: import org.eclipse.emfforms.spi.core.services.mappingprovider.EMFFormsMappingProvider;
27: import org.eclipse.emfforms.spi.core.services.mappingprovider.EMFFormsMappingProviderManager;
28: import org.osgi.service.component.annotations.Component;
29: import org.osgi.service.component.annotations.Reference;
30: import org.osgi.service.component.annotations.ReferenceCardinality;
31: import org.osgi.service.component.annotations.ReferencePolicy;
32:
33: /**
34: * @author Eugen
35: *
36: */
37: @Component
38: public class EMFFormsMappingProviderManagerImpl implements EMFFormsMappingProviderManager {
39:
40:         private final Set<EMFFormsMappingProvider> mappingProviders = new LinkedHashSet<EMFFormsMappingProvider>();
41:         private ReportService reportService;
42:
43:         private static final RankingHelper<EMFFormsMappingProvider> RANKING_HELPER = //
44:                 new RankingHelper<EMFFormsMappingProvider>(
45:                         EMFFormsMappingProvider.class,
46:                         EMFFormsMappingProvider.NOT_APPLICABLE,
47:                         EMFFormsMappingProvider.NOT_APPLICABLE);
48:
49:         /**
50:          * Called by the framework to add an {@link EMFFormsMappingProvider}.
51:          *
52:          * @param emfFormsMappingProvider The {@link EMFFormsMappingProvider}
53:          */
54:
55:         @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
56:         protected void addEMFFormsMappingProvider(EMFFormsMappingProvider emfFormsMappingProvider) {
57:                 mappingProviders.add(emfFormsMappingProvider);
58:         }
59:
60:         /**
61:          * Called by the framework to remove an {@link EMFFormsMappingProvider}.
62:          *
63:          * @param emfFormsMappingProvider The {@link EMFFormsMappingProvider}
64:          */
65:         protected void removeEMFFormsMappingProvider(EMFFormsMappingProvider emfFormsMappingProvider) {
66:                 mappingProviders.remove(emfFormsMappingProvider);
67:         }
68:
69:         /**
70:          * Sets the {@link ReportService}.
71:          *
72:          * @param reportService The {@link ReportService}
73:          */
74:         @Reference(unbind = "-")
75:         protected void setReportService(ReportService reportService) {
76:                 this.reportService = reportService;
77:         }
78:
79:         /**
80:          * {@inheritDoc}
81:          *
82:          * @see org.eclipse.emfforms.spi.core.services.mappingprovider.EMFFormsMappingProviderManager#getAllSettingsFor(org.eclipse.emf.ecp.view.spi.model.VDomainModelReference,
83:          * org.eclipse.emf.ecore.EObject)
84:          */
85:         @Override
86:         public Set<UniqueSetting> getAllSettingsFor(
87:                 final VDomainModelReference domainModelReference, final EObject domainObject) {
88:
89:                 final EMFFormsMappingProvider bestMappingProvider = RANKING_HELPER.getHighestRankingElement(
90:                         mappingProviders,
91:                         new RankingHelper.RankTester<EMFFormsMappingProvider>() {
92:
93:                                 @Override
94:                                 public double getRank(final EMFFormsMappingProvider mappingProvider) {
95:                                         return mappingProvider.isApplicable(domainModelReference, domainObject);
96:                                 }
97:
98:                         });
99:
100:                 if (bestMappingProvider == null) {
101:                         reportService.report(new AbstractReport("Warning: No applicable EMFFormsMappingProvider was found.")); //$NON-NLS-1$
102:                         return Collections.emptySet();
103:                 }
104:                 return bestMappingProvider.getMappingFor(domainModelReference, domainObject);
105:         }
106: }