diff options
Diffstat (limited to 'tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/rel2core/PivotNormalizer.java')
-rw-r--r-- | tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/rel2core/PivotNormalizer.java | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/rel2core/PivotNormalizer.java b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/rel2core/PivotNormalizer.java index 482b9f8ee..ca8e3ba96 100644 --- a/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/rel2core/PivotNormalizer.java +++ b/tests/org.eclipse.qvtd.xtext.qvtrelation.tests/src/org/eclipse/qvtd/xtext/qvtrelation/tests/rel2core/PivotNormalizer.java @@ -11,6 +11,7 @@ package org.eclipse.qvtd.xtext.qvtrelation.tests.rel2core; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; import org.eclipse.emf.common.util.ECollections; @@ -20,14 +21,30 @@ import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.ocl.examples.xtext.tests.XtextTestCase.Normalizer; +import org.eclipse.ocl.pivot.Model; import org.eclipse.ocl.pivot.NamedElement; +import org.eclipse.ocl.pivot.utilities.ClassUtil; import org.eclipse.ocl.pivot.utilities.NameUtil; +import org.eclipse.ocl.pivot.utilities.Nameable; +import org.eclipse.ocl.pivot.utilities.NameUtil.NameableComparator; import org.eclipse.qvtd.xtext.qvtimperative.tests.ModelNormalizer; public class PivotNormalizer implements ModelNormalizer { public static final @NonNull PivotNormalizer INSTANCE = new PivotNormalizer(); + public static final class ToStringComparator implements Comparator<Nameable> + { + public static final @NonNull ToStringComparator INSTANCE = new ToStringComparator(); + + @Override + public int compare(Nameable o1, Nameable o2) { + String n1 = String.valueOf(o1); + String n2 = String.valueOf(o2); + return ClassUtil.safeCompareTo(n1, n2); + } + } + protected class ClassNormalizer implements Normalizer { protected final org.eclipse.ocl.pivot.@NonNull Class asClass; @@ -48,6 +65,25 @@ public class PivotNormalizer implements ModelNormalizer } } + protected class ModelNormalizer implements Normalizer + { + protected final @NonNull Model asModel; + + public ModelNormalizer(@NonNull Model asModel) { + this.asModel = asModel; + } + + @Override + public void denormalize() { + throw new UnsupportedOperationException(); + } + + @Override + public void normalize() { + ECollections.sort((EList<NamedElement>)(Object)asModel.getOwnedPackages(), NameUtil.NAMEABLE_COMPARATOR); + } + } + protected class PackageNormalizer implements Normalizer { protected final org.eclipse.ocl.pivot.@NonNull Package asPackage; @@ -63,7 +99,7 @@ public class PivotNormalizer implements ModelNormalizer @Override public void normalize() { - ECollections.sort((EList<NamedElement>)(Object)asPackage.getOwnedClasses(), NameUtil.NAMEABLE_COMPARATOR); + ECollections.sort((EList<NamedElement>)(Object)asPackage.getOwnedClasses(), ToStringComparator.INSTANCE); ECollections.sort((EList<NamedElement>)(Object)asPackage.getOwnedPackages(), NameUtil.NAMEABLE_COMPARATOR); } } @@ -72,15 +108,19 @@ public class PivotNormalizer implements ModelNormalizer List<Normalizer> normalizers = new ArrayList<Normalizer>(); for (TreeIterator<EObject> tit = resource.getAllContents(); tit.hasNext(); ) { EObject eObject = tit.next(); - if (eObject instanceof org.eclipse.ocl.pivot.Package) { + if (eObject instanceof Model) { + normalizers.add(new ModelNormalizer((Model)eObject)); + } + else if (eObject instanceof org.eclipse.ocl.pivot.Package) { normalizers.add(new PackageNormalizer((org.eclipse.ocl.pivot.Package)eObject)); } else if (eObject instanceof org.eclipse.ocl.pivot.Class) { + ((org.eclipse.ocl.pivot.Class)eObject).setUnspecializedElement(null); // Suppress transient value normalizers.add(new ClassNormalizer((org.eclipse.ocl.pivot.Class)eObject)); } } - EList<NamedElement> contents = (EList<NamedElement>)(Object)resource.getContents(); - ECollections.sort(contents, NameUtil.NAMEABLE_COMPARATOR); +// EList<NamedElement> contents = (EList<NamedElement>)(Object)resource.getContents(); +// ECollections.sort(contents, ToStringComparator.INSTANCE); for (Normalizer normalizer : normalizers) { normalizer.normalize(); } |