From c493f896fb855950f7a97b63e48bcf257a78ee97 Mon Sep 17 00:00:00 2001 From: Johannes Eder <eder@fortiss.org> Date: Mon, 9 Dec 2019 14:36:08 +0100 Subject: [PATCH] Adapted migrators Issue-Ref: 3865 Issue-Url: https://af3-developer.fortiss.org/issues/3865 Signed-off-by: Johannes Eder <eder@fortiss.org> --- .../fortiss/tooling/base/migration/.ratings | 6 +- ...ddMissingAnnotationsMigrationProvider.java | 5 +- ...uplicatedAnnotationsMigrationProvider.java | 5 +- ...edAnnotationInstanceMigrationProvider.java | 5 +- .../fortiss/tooling/kernel/extension/.ratings | 2 +- ...recatedArtifactsMigrationProviderBase.java | 95 ------------------- 6 files changed, 16 insertions(+), 102 deletions(-) delete mode 100644 org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/base/RemoveDeprecatedArtifactsMigrationProviderBase.java diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/.ratings b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/.ratings index 5633daf96..e5635e1fa 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/.ratings +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/.ratings @@ -1,3 +1,3 @@ -AddMissingAnnotationsMigrationProvider.java a3f2b3cbcd39f85e15bc998650f899f55d9f563e GREEN -RemoveDuplicatedAnnotationsMigrationProvider.java f1bdb4733d5b9c6003a2b7fee59b89240a0a3b61 GREEN -RemoveOutdatedAnnotationInstanceMigrationProvider.java 29c29f2bb7515cad1de45a30ffc185001b47a016 GREEN +AddMissingAnnotationsMigrationProvider.java 83d2f324d0d1346e4cbcbc9006ad8df3babc6fd2 YELLOW +RemoveDuplicatedAnnotationsMigrationProvider.java 929e5541de79b6e50e0fad0e21e389265b1528b4 YELLOW +RemoveOutdatedAnnotationInstanceMigrationProvider.java 9e8a02f1cfcdf5138fdeb53cb968cacd1ba3b703 YELLOW diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/AddMissingAnnotationsMigrationProvider.java b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/AddMissingAnnotationsMigrationProvider.java index a3f2b3cbc..83d2f324d 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/AddMissingAnnotationsMigrationProvider.java +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/AddMissingAnnotationsMigrationProvider.java @@ -19,6 +19,7 @@ import static org.fortiss.tooling.base.utils.AnnotationUtils.instantiateAnnotati import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.Map; import org.eclipse.emf.ecore.EObject; @@ -49,9 +50,11 @@ public class AddMissingAnnotationsMigrationProvider implements IMigrationProvide /** {@inheritDoc} */ @Override - public void migrate(ITopLevelElement modelElement, Map<EObject, AnyType> unknownFeatures) { + public Map<EObject, AnyType> migrate(ITopLevelElement modelElement, + Map<EObject, AnyType> unknownFeatures) { EObject rootElement = modelElement.getRootModelElement(); instantiateAnnotationsRecursive(rootElement); migratedProjects.add(modelElement); + return Collections.emptyMap(); } } diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveDuplicatedAnnotationsMigrationProvider.java b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveDuplicatedAnnotationsMigrationProvider.java index f1bdb4733..929e5541d 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveDuplicatedAnnotationsMigrationProvider.java +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveDuplicatedAnnotationsMigrationProvider.java @@ -19,6 +19,7 @@ import static org.fortiss.tooling.kernel.utils.EcoreUtils.getChildrenWithType; import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickInstanceOf; import static org.fortiss.tooling.kernel.utils.LoggingUtils.error; +import java.util.Collections; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -87,7 +88,8 @@ public class RemoveDuplicatedAnnotationsMigrationProvider implements IMigrationP /** {@inheritDoc} */ @Override - public void migrate(ITopLevelElement topLevelElement, Map<EObject, AnyType> unknownFeatures) { + public Map<EObject, AnyType> migrate(ITopLevelElement topLevelElement, + Map<EObject, AnyType> unknownFeatures) { doInternal(topLevelElement, true); @@ -95,5 +97,6 @@ public class RemoveDuplicatedAnnotationsMigrationProvider implements IMigrationP error(ToolingBaseActivator.getDefault(), "Duplicate annotations have been removed from \"" + uri.lastSegment() + "\". Please report this incident since it indicates an internal problem."); + return Collections.emptyMap(); } } diff --git a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveOutdatedAnnotationInstanceMigrationProvider.java b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveOutdatedAnnotationInstanceMigrationProvider.java index 29c29f2bb..9e8a02f1c 100644 --- a/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveOutdatedAnnotationInstanceMigrationProvider.java +++ b/org.fortiss.tooling.base/src/org/fortiss/tooling/base/migration/RemoveOutdatedAnnotationInstanceMigrationProvider.java @@ -19,6 +19,7 @@ import static org.eclipse.emf.ecore.util.EcoreUtil.delete; import static org.fortiss.tooling.common.util.LambdaUtils.isAssignableFromAny; import static org.fortiss.tooling.kernel.utils.EcoreUtils.getChildrenWithType; +import java.util.Collections; import java.util.List; import java.util.Map; @@ -67,12 +68,14 @@ public abstract class RemoveOutdatedAnnotationInstanceMigrationProvider<T extend /** {@inheritDoc} */ @Override - public void migrate(ITopLevelElement modelElement, Map<EObject, AnyType> unknownFeatures) { + public Map<EObject, AnyType> migrate(ITopLevelElement modelElement, + Map<EObject, AnyType> unknownFeatures) { EObject rootModelElement = modelElement.getRootModelElement(); for(T annotation : getChildrenWithType(rootModelElement, annotationType)) { if(!isAssignableFromAny(modelElementTypes, annotation.getSpecificationOf())) { delete(annotation); } } + return Collections.emptyMap(); } } diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings index 0a98fb5c5..fcb76b135 100644 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings +++ b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/.ratings @@ -6,7 +6,7 @@ IEclipseResourceStorageLocationProvider.java 0ab7f304d52a9d86f01f66e308e9a7ca420 IElementCompositor.java 5b0ab1732f71b3f8467e0276c844f0dd549e191f GREEN ILibraryElementHandler.java 00ef5b25c63b8570006e6f6748aed0da1f33a5f1 GREEN ILogMessageHandler.java 9ab53e836a095ef00fd84ecc0375167edf593b46 GREEN -IMigrationProvider.java fdb1078dfca10a82a18f79b862d7b8644e80e14e GREEN +IMigrationProvider.java cbf0d03c7b89ecdba79a67ae60a547fe058dd5d8 YELLOW IPrototypeProvider.java d5e3dbae19b5654caf28b81da6b1609d3c12be12 GREEN IStorageProvider.java d9b14cdd254d0c956dc5715c1c4d4d955a705dd5 GREEN ITransformationProvider.java a4ee2ea08720bb2fce29806062eb01499bb5071e GREEN diff --git a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/base/RemoveDeprecatedArtifactsMigrationProviderBase.java b/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/base/RemoveDeprecatedArtifactsMigrationProviderBase.java deleted file mode 100644 index 4a1b67622..000000000 --- a/org.fortiss.tooling.kernel/src/org/fortiss/tooling/kernel/extension/base/RemoveDeprecatedArtifactsMigrationProviderBase.java +++ /dev/null @@ -1,95 +0,0 @@ -/*-------------------------------------------------------------------------+ -| Copyright 2018 fortiss GmbH | -| | -| Licensed under the Apache License, Version 2.0 (the "License"); | -| you may not use this file except in compliance with the License. | -| You may obtain a copy of the License at | -| | -| http://www.apache.org/licenses/LICENSE-2.0 | -| | -| Unless required by applicable law or agreed to in writing, software | -| distributed under the License is distributed on an "AS IS" BASIS, | -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | -| See the License for the specific language governing permissions and | -| limitations under the License. | -+--------------------------------------------------------------------------*/ -package org.fortiss.tooling.kernel.extension.base; - -import static org.conqat.lib.commons.reflect.ReflectionUtils.isInstanceOfAny; -import static org.eclipse.emf.ecore.util.EcoreUtil.delete; -import static org.fortiss.tooling.common.util.LambdaUtils.asStream; - -import java.util.Collection; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Stream; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.xml.type.AnyType; -import org.fortiss.tooling.kernel.extension.IMigrationProvider; -import org.fortiss.tooling.kernel.extension.data.ITopLevelElement; -import org.fortiss.tooling.kernel.model.INamedCommentedElement; - -/** - * Remove artificats related to deprecated use case model. - * - * @author barner - */ -public abstract class RemoveDeprecatedArtifactsMigrationProviderBase implements IMigrationProvider { // NO_UCD - // Migrators are retired after a release, but this base class should be available when needed. - // See https://af3-developer.fortiss.org/projects/autofocus3/wiki/Model_Migration - - /** Returns the {@link Collection} of deprecated artifact types to be removed from the model. */ - protected abstract Collection<Class<? extends EObject>> getDeprecatedArtifacts(); - - /** - * Returns the {@link Collection} of deprecated root artifact types (possibly empty subset of - * {@link #getDeprecatedArtifacts()}) for which a comment is added to the migrated model that - * deprecated artifacts have been removed. - */ - protected abstract Collection<Class<? extends EObject>> getDeprecatedRootArtifacts(); - - /** Returns the {@link Stream} of deprecated model elements to be removed. */ - private Stream<EObject> getDeprecatedModelElements(ITopLevelElement modelElement) { - Stream<EObject> root = asStream(modelElement.getRootModelElement().eAllContents()); - Collection<Class<? extends EObject>> deprArtifacts = getDeprecatedArtifacts(); - return root.filter( - e -> isInstanceOfAny(e, deprArtifacts.toArray(new Class[deprArtifacts.size()]))); - } - - /** {@inheritDoc} */ - - @Override - public boolean needMigration(ITopLevelElement modelElement, - Map<EObject, AnyType> unknownFeatures) { - - return getDeprecatedModelElements(modelElement).findAny().isPresent(); - } - - /** {@inheritDoc} */ - @Override - public void migrate(ITopLevelElement modelElement, Map<EObject, AnyType> unknownFeatures) { - EObject object; - do { - object = null; - Stream<EObject> deprecatedModelElements = getDeprecatedModelElements(modelElement); - Optional<EObject> anyObject = deprecatedModelElements.findAny(); - if(anyObject.isPresent()) { - object = anyObject.get(); - if(object.eContainer() instanceof INamedCommentedElement) { - INamedCommentedElement parent = (INamedCommentedElement)object.eContainer(); - if(parent.getComment() == null || parent.getComment().isEmpty()) { - for(Class<? extends EObject> rootType : getDeprecatedRootArtifacts()) { - if(rootType.isAssignableFrom(object.getClass())) { - parent.setComment(rootType.getSimpleName() + - " models are no longer supported. This sub-model has been removed automatically!"); - break; - } - } - } - } - delete(object); - } - } while(object != null); - } -} -- GitLab