diff options
author | Ed Willink | 2016-05-03 17:49:58 +0000 |
---|---|---|
committer | Ed Willink | 2016-05-03 17:49:58 +0000 |
commit | e79b195bc9cc47c2142d46588229b40201e4b05c (patch) | |
tree | b13ee7c78ec3900674ac6eb5c7576e3051f0a27c | |
parent | 21384023fecccdcc9c8705aa49cf6588e618e9a5 (diff) | |
download | org.eclipse.ocl-ewillink/492430.tar.gz org.eclipse.ocl-ewillink/492430.tar.xz org.eclipse.ocl-ewillink/492430.zip |
[492430] wipewillink/492430
5 files changed, 117 insertions, 26 deletions
diff --git a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/PackageImpl.java b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/PackageImpl.java index a0421e72b7..b191c56898 100644 --- a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/PackageImpl.java +++ b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/internal/PackageImpl.java @@ -799,4 +799,11 @@ public class PackageImpl public String toString() { return super.toString(); } + + @Override + protected void eBasicSetContainer(InternalEObject newContainer, + int newContainerFeatureID) { + // TODO Auto-generated method stub + super.eBasicSetContainer(newContainer, newContainerFeatureID); + } } //PackageImpl diff --git a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/model/OCLmetamodel.java b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/model/OCLmetamodel.java index caee158926..469747a7ab 100644 --- a/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/model/OCLmetamodel.java +++ b/plugins/org.eclipse.ocl.pivot/emf-gen/org/eclipse/ocl/pivot/model/OCLmetamodel.java @@ -17,30 +17,41 @@ *******************************************************************************/ package org.eclipse.ocl.pivot.model; -import java.math.BigInteger; import java.util.List; import org.eclipse.emf.common.util.URI; -import org.eclipse.emf.ecore.resource.Resource; -import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.eclipse.ocl.pivot.*; +import org.eclipse.ocl.pivot.AnyType; +import org.eclipse.ocl.pivot.AssociativityKind; +import org.eclipse.ocl.pivot.BagType; import org.eclipse.ocl.pivot.Class; +import org.eclipse.ocl.pivot.CollectionKind; +import org.eclipse.ocl.pivot.CollectionType; +import org.eclipse.ocl.pivot.DataType; +import org.eclipse.ocl.pivot.Enumeration; +import org.eclipse.ocl.pivot.EnumerationLiteral; +import org.eclipse.ocl.pivot.Model; +import org.eclipse.ocl.pivot.Operation; +import org.eclipse.ocl.pivot.OrderedSetType; import org.eclipse.ocl.pivot.Package; +import org.eclipse.ocl.pivot.Parameter; +import org.eclipse.ocl.pivot.PivotPackage; +import org.eclipse.ocl.pivot.PrimitiveType; +import org.eclipse.ocl.pivot.Property; +import org.eclipse.ocl.pivot.PseudostateKind; +import org.eclipse.ocl.pivot.SequenceType; +import org.eclipse.ocl.pivot.SetType; +import org.eclipse.ocl.pivot.TemplateParameter; +import org.eclipse.ocl.pivot.TransitionKind; import org.eclipse.ocl.pivot.ids.IdManager; import org.eclipse.ocl.pivot.internal.complete.StandardLibraryInternal; import org.eclipse.ocl.pivot.internal.resource.ASResourceImpl; import org.eclipse.ocl.pivot.internal.resource.OCLASResourceFactory; import org.eclipse.ocl.pivot.internal.utilities.AbstractContents; -import org.eclipse.ocl.pivot.library.LibraryFeature; -import org.eclipse.ocl.pivot.model.OCLstdlib; +import org.eclipse.ocl.pivot.internal.utilities.PivotObjectImpl; import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.PivotConstants; -import org.eclipse.ocl.pivot.utilities.PivotUtil; - -import org.eclipse.ocl.pivot.oclstdlib.OCLstdlibPackage; -import org.eclipse.ocl.pivot.PivotPackage; /** * This is the pivot representation of the http://www.eclipse.org/ocl/2015/Pivot metamodel @@ -533,6 +544,9 @@ public class OCLmetamodel extends ASResourceImpl private final @NonNull CollectionType _UniqueCollection_Vertex = createCollectionType(_UniqueCollection, _Vertex); private void installClassTypes() { + + ((PivotObjectImpl)_Boolean).setESObject(PivotPackage.Literals.BOOLEAN); + List<Class> ownedClasses; List<Class> superClasses; Class type; diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/es2as/Ecore2AS.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/es2as/Ecore2AS.java index 6d3681f9bb..36a8a96e9a 100644 --- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/es2as/Ecore2AS.java +++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/es2as/Ecore2AS.java @@ -68,6 +68,7 @@ import org.eclipse.ocl.pivot.resource.ProjectManager.IProjectDescriptor; import org.eclipse.ocl.pivot.resource.ProjectManager.IProjectDescriptor.IProjectDescriptorExtension; import org.eclipse.ocl.pivot.resource.ProjectManager.IResourceDescriptor; import org.eclipse.ocl.pivot.utilities.ClassUtil; +import org.eclipse.ocl.pivot.utilities.LabelUtil; import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.ParserException; import org.eclipse.ocl.pivot.utilities.PivotConstants; @@ -231,6 +232,7 @@ public class Ecore2AS extends AbstractExternal2AS public Ecore2AS(@NonNull Resource ecoreResource, @NonNull EnvironmentFactoryInternal environmentFactory) { super(environmentFactory); + PivotUtilInternal.debugPrintln("Create " + NameUtil.debugSimpleName(this) + " " + NameUtil.debugSimpleName(ecoreResource) + " " + ecoreResource.getURI()); this.ecoreResource = ecoreResource; this.environmentFactory.addExternal2AS(this); } @@ -331,22 +333,31 @@ public class Ecore2AS extends AbstractExternal2AS public @NonNull Model getASModel() { Model pivotModel2 = pivotModel; if (pivotModel2 == null) { - loadImports(ecoreResource); - pivotModel2 = pivotModel = importObjects(ClassUtil.nonNullEMF(ecoreResource.getContents()), createPivotURI()); - @SuppressWarnings("null") @NonNull Resource asResource = pivotModel2.eResource(); - AliasAdapter ecoreAdapter = AliasAdapter.findAdapter(ecoreResource); - if (ecoreAdapter != null) { - Map<EObject, String> ecoreAliasMap = ecoreAdapter.getAliasMap(); - AliasAdapter pivotAdapter = AliasAdapter.getAdapter(asResource); - Map<EObject, String> pivotAliasMap = pivotAdapter.getAliasMap(); - for (EObject eObject : ecoreAliasMap.keySet()) { - String alias = ecoreAliasMap.get(eObject); - Element element = newCreateMap.get(eObject); - pivotAliasMap.put(element, alias); + URI asURI = createPivotURI(); + Resource asResource = metamodelManager.getASResourceSet().getResource(asURI, false); + if (asResource != null) { + pivotModel2 = pivotModel = loadEcore(asResource); +//rredundant metamodelManager.installResource(asResource); + installImports(); + } + else { + loadImports(ecoreResource); + pivotModel2 = pivotModel = importObjects(ClassUtil.nonNullEMF(ecoreResource.getContents()), asURI); + asResource = pivotModel2.eResource(); + AliasAdapter ecoreAdapter = AliasAdapter.findAdapter(ecoreResource); + if (ecoreAdapter != null) { + Map<EObject, String> ecoreAliasMap = ecoreAdapter.getAliasMap(); + AliasAdapter pivotAdapter = AliasAdapter.getAdapter(asResource); + Map<EObject, String> pivotAliasMap = pivotAdapter.getAliasMap(); + for (EObject eObject : ecoreAliasMap.keySet()) { + String alias = ecoreAliasMap.get(eObject); + Element element = newCreateMap.get(eObject); + pivotAliasMap.put(element, alias); + } } + metamodelManager.installResource(asResource); + installImports(); } - metamodelManager.installResource(asResource); - installImports(); } return pivotModel2; } @@ -593,6 +604,63 @@ public class Ecore2AS extends AbstractExternal2AS return true; } + private @NonNull Model loadEcore(@NonNull Resource asResource) { + newCreateMap = new HashMap<@NonNull EObject, @NonNull Element>(); + Model asModel = null; + for (@NonNull TreeIterator<EObject> tit = asResource.getAllContents(); tit.hasNext(); ) { + EObject eObject = tit.next(); + if (eObject instanceof Model) { + assert asModel == null; + asModel = (Model)eObject; + } + if ((eObject instanceof Element) && (eObject instanceof PivotObjectImpl)) { + PivotObjectImpl asElement = (PivotObjectImpl)eObject; + EObject esObject = asElement.getESObject(); + if (esObject != null) { + newCreateMap.put(esObject, (Element)asElement); + } + } + } +// loadEcoreEPackages(ClassUtil.nullFree(asModel.getOwnedPackages()), (List<@NonNull EPackage>)(Object)ClassUtil.nullFree(ecoreResource.getContents())); + assert asModel != null; + return asModel; + } + +/* private void loadEcoreEClassifiers(@NonNull List<org.eclipse.ocl.pivot.@NonNull Class> asClasses, @NonNull List<@NonNull EClassifier> eClassifiers) { + for (@NonNull EClassifier eClassifier : eClassifiers) { + org.eclipse.ocl.pivot.Class asClass = NameUtil.getNameable(asClasses, eClassifier.getName()); + if (asClass == null) { + + } + if (asClass != null) { + newCreateMap.put(eClassifier, asClass); + if (asClass instanceof PivotObjectImpl) { + ((PivotObjectImpl)asClass).setESObject(eClassifier); + } + } + else { + System.out.println("Missing AS Class for " + LabelUtil.getLabel(eClassifier)); + } + } + } + + private void loadEcoreEPackages(@NonNull List<org.eclipse.ocl.pivot.@NonNull Package> asPackages, @NonNull List<@NonNull EPackage> ePackages) { + for (@NonNull EPackage ePackage : ePackages) { + org.eclipse.ocl.pivot.Package asPackage = NameUtil.getNameable(asPackages, ePackage.getName()); + if (asPackage != null) { + newCreateMap.put(ePackage, asPackage); + if (asPackage instanceof PivotObjectImpl) { + ((PivotObjectImpl)asPackage).setESObject(ePackage); + } + loadEcoreEPackages(ClassUtil.nullFree(asPackage.getOwnedPackages()), ClassUtil.nullFree(ePackage.getESubpackages())); + loadEcoreEClassifiers(ClassUtil.nullFree(asPackage.getOwnedClasses()), ClassUtil.nullFree(ePackage.getEClassifiers())); + } + else { + System.out.println("Missing AS Package for " + LabelUtil.getLabel(ePackage)); + } + } + } */ + /** * Load all transitively referenced *.ecore files and identify any EPackages identified * as OCL AS Metamodels. diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASResourceImpl.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASResourceImpl.java index 64eae6e2cc..514f4aaf5a 100644 --- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASResourceImpl.java +++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ASResourceImpl.java @@ -23,7 +23,9 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.ocl.pivot.Model; import org.eclipse.ocl.pivot.internal.utilities.AS2XMIid; import org.eclipse.ocl.pivot.internal.utilities.PivotObjectImpl; +import org.eclipse.ocl.pivot.internal.utilities.PivotUtilInternal; import org.eclipse.ocl.pivot.resource.ASResource; +import org.eclipse.ocl.pivot.utilities.NameUtil; import org.eclipse.ocl.pivot.utilities.XMIUtil; public class ASResourceImpl extends XMIResourceImpl implements ASResource @@ -36,7 +38,7 @@ public class ASResourceImpl extends XMIResourceImpl implements ASResource public ASResourceImpl(@NonNull URI uri, @NonNull ASResourceFactory asResourceFactory) { super(uri); this.asResourceFactory = asResourceFactory; -// PivotUtilInternal.debugPrintln("Create " + NameUtil.debugSimpleName(this)); + PivotUtilInternal.debugPrintln("Create " + NameUtil.debugSimpleName(this) + " " + uri); } @Override diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java index 988758527e..74004ecb8c 100644 --- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java +++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/utilities/PivotUtilInternal.java @@ -66,7 +66,7 @@ import org.eclipse.ocl.pivot.utilities.Pivotable; public class PivotUtilInternal //extends PivotUtil { private static final Logger logger = Logger.getLogger(PivotUtilInternal.class); - public static boolean noDebug = true; + public static boolean noDebug = false; private static long startTime = System.currentTimeMillis(); public static void debugPrintln(@Nullable Object string) { |