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 5633daf969db8251bbf77fd7418a1c19bf30868a..e5635e1fa010d51fb11a54185fa471b1bc69a75b 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 a3f2b3cbcd39f85e15bc998650f899f55d9f563e..83d2f324d0d1346e4cbcbc9006ad8df3babc6fd2 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 f1bdb4733d5b9c6003a2b7fee59b89240a0a3b61..929e5541de79b6e50e0fad0e21e389265b1528b4 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 29c29f2bb7515cad1de45a30ffc185001b47a016..9e8a02f1cfcdf5138fdeb53cb968cacd1ba3b703 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 0a98fb5c57e6ec70b3853c8145ec72ebe32eb99e..fcb76b1356220c49d17dc12cb2a3ae7d5c58639c 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 4a1b676223b7ec53259a26d1a671b11ff2f911e2..0000000000000000000000000000000000000000 --- 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); - } -}