From 754fe33f129e83dc23347ce454b024a9307cc7cc Mon Sep 17 00:00:00 2001 From: Simon Barner <barner@fortiss.org> Date: Thu, 19 Dec 2019 17:11:40 +0100 Subject: [PATCH] Improve error message: Print types of elements to be removed * Not: names of features that contained the unknown types Issue-Ref: 3865 Issue-Url: https://af3-developer.fortiss.org/issues/3865 Signed-off-by: Simon Barner <barner@fortiss.org> --- .../fortiss/tooling/kernel/internal/.ratings | 2 +- .../kernel/internal/MigrationService.java | 31 ++++++++----------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings index cc7456cfe..1198c9379 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/.ratings @@ -7,7 +7,7 @@ ElementCompositorService.java 98c5d27e09881e60aa4f87c1ac0c7787cdec9f7c GREEN LibraryPrototypeProvider.java b77eddbdca78f561ffb1233e98817be361c690ae GREEN LibraryService.java d22671ba820466062852c15873698adf28960d94 GREEN LoggingService.java da784259f7b456b54bf75c41ec268f64919ce78d GREEN -MigrationService.java b0f05859e33a85bc285a05056d5c16448a4cb4f0 YELLOW +MigrationService.java 22713e178a9648e858d6cd77f73fe77918ce5d4f YELLOW PersistencyService.java 103eef642c038ef63fa49b743d803aaa3fea2724 GREEN PrototypeService.java 18c3db05ab11f189a9711bf241c3c7f35c954a9e GREEN ToolingKernelInternal.java d624a5f6b237ce993e150e2b8d1b4390e3fc8f7a GREEN diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java index 9786e3974..22713e178 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/internal/MigrationService.java @@ -16,19 +16,21 @@ package org.fortiss.tooling.kernel.internal; import static java.util.Collections.emptyList; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toSet; import static org.fortiss.tooling.kernel.utils.EcoreUtils.getFirstChildWithType; import static org.fortiss.tooling.kernel.utils.LoggingUtils.error; +import static org.fortiss.tooling.kernel.utils.LoggingUtils.warning; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.stream.Stream; import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.util.FeatureMap; import org.eclipse.emf.ecore.xml.type.AnyType; import org.fortiss.tooling.kernel.ToolingKernelActivator; import org.fortiss.tooling.kernel.extension.IMigrationProvider; @@ -98,19 +100,6 @@ public class MigrationService extends ObjectAwareServiceBase<IMigrationProvider> return false; } - /** Extracts the list of feature names from a map of features. */ - private List<String> featuresToStrings(Map<EObject, AnyType> features) { - List<String> res = new BasicEList<String>(); - for(AnyType featuresPerKey : features.values()) { - FeatureMap actualFeatures = featuresPerKey.getMixed(); - actualFeatures.addAll(featuresPerKey.getAnyAttribute()); - for(FeatureMap.Entry feature : actualFeatures) { - res.add(feature.getEStructuralFeature().getName()); - } - } - return res; - } - /** {@inheritDoc} */ @Override public void migrate(final ITopLevelElement input, final Map<EObject, AnyType> unknownFeatures) { @@ -134,9 +123,15 @@ public class MigrationService extends ObjectAwareServiceBase<IMigrationProvider> } unknownFeatures.entrySet().removeAll(migratedFeatures.entrySet()); if(!unknownFeatures.isEmpty()) { - error(ToolingKernelActivator.getDefault(), input.getSaveableName() + - " contains one or more unknown feature(s) which will be deleted: " + - featuresToStrings(unknownFeatures)); + Stream<AnyType> anyTypes = unknownFeatures.values().stream() + .map(v -> v.getMixed()).flatMap(f -> f.stream()).map(e -> e.getValue()) + .filter(AnyType.class::isInstance).map(AnyType.class::cast); + String removedTypes = anyTypes.map(a -> a.eClass().getName()).collect(toSet()) + .stream().collect(joining(", ")); + warning(ToolingKernelActivator.getDefault(), input.getSaveableName() + + " contains one or more feature(s) of the following unkown types that will be deleted: " + + removedTypes + "."); + unknownFeatures.clear(); } } -- GitLab