Skip to content

Package: FeaturePathDmrSegmentGenerator

FeaturePathDmrSegmentGenerator

nameinstructionbranchcomplexitylinemethod
FeaturePathDmrSegmentGenerator()
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%
generateSegments(VDomainModelReference)
M: 0 C: 67
100%
M: 0 C: 6
100%
M: 0 C: 4
100%
M: 0 C: 17
100%
M: 0 C: 1
100%
isApplicable(VDomainModelReference)
M: 0 C: 12
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2018 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 Koehler - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emfforms.internal.core.services.segments.featurepath;
15:
16: import java.util.LinkedList;
17: import java.util.List;
18:
19: import org.eclipse.emf.ecore.EReference;
20: import org.eclipse.emf.ecp.common.spi.asserts.Assert;
21: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReference;
22: import org.eclipse.emf.ecp.view.spi.model.VDomainModelReferenceSegment;
23: import org.eclipse.emf.ecp.view.spi.model.VFeatureDomainModelReferenceSegment;
24: import org.eclipse.emf.ecp.view.spi.model.VFeaturePathDomainModelReference;
25: import org.eclipse.emf.ecp.view.spi.model.VViewFactory;
26: import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
27: import org.eclipse.emfforms.spi.core.services.segments.DmrSegmentGenerator;
28: import org.osgi.service.component.annotations.Component;
29:
30: /**
31: * {@link DmrSegmentGenerator} that generates {@link VDomainModelReferenceSegment segments} for a
32: * {@link VFeaturePathDomainModelReference}.
33: *
34: * @author Lucas Koehler
35: *
36: */
37: @Component(name = "FeaturePathDmrSegmentGenerator")
38: public class FeaturePathDmrSegmentGenerator implements DmrSegmentGenerator {
39:
40:         @Override
41:         public double isApplicable(VDomainModelReference reference) {
42:                 Assert.create(reference).notNull();
43:•                if (reference.eClass() == VViewPackage.Literals.FEATURE_PATH_DOMAIN_MODEL_REFERENCE) {
44:                         return 1d;
45:                 }
46:                 return NOT_APPLICABLE;
47:         }
48:
49:         @Override
50:         public List<VDomainModelReferenceSegment> generateSegments(VDomainModelReference reference) {
51:                 Assert.create(reference).notNull();
52:•                if (reference.eClass() != VViewPackage.Literals.FEATURE_PATH_DOMAIN_MODEL_REFERENCE) {
53:                         throw new IllegalArgumentException(
54:                                 String.format("The given DMR was no feature path domain model reference. The DMR was: %s", reference)); //$NON-NLS-1$
55:                 }
56:                 final VFeaturePathDomainModelReference featureDmr = (VFeaturePathDomainModelReference) reference;
57:                 final List<VDomainModelReferenceSegment> result = new LinkedList<>();
58:
59:                 // Create segments for reference path
60:•                for (final EReference eReference : featureDmr.getDomainModelEReferencePath()) {
61:                         final VFeatureDomainModelReferenceSegment segment = VViewFactory.eINSTANCE
62:                                 .createFeatureDomainModelReferenceSegment();
63:                         segment.setDomainModelFeature(eReference.getName());
64:                         result.add(segment);
65:                 }
66:
67:                 // Create segment for the domain model e feature
68:•                if (featureDmr.getDomainModelEFeature() != null) {
69:                         final VFeatureDomainModelReferenceSegment segment = VViewFactory.eINSTANCE
70:                                 .createFeatureDomainModelReferenceSegment();
71:                         segment.setDomainModelFeature(featureDmr.getDomainModelEFeature().getName());
72:                         result.add(segment);
73:                 }
74:
75:                 return result;
76:         }
77:
78: }