blob: e2aac25bff828512913abbf6830122f183a02d21 [file] [log] [blame]
/**
* <copyright>
* OCL2AC is developed by Nebras Nassar based on an initial version developed by Thorsten Arendt and Jan Steffen Becker.
* </copyright>
*/
package org.eclipse.emf.henshin.ocl2ac.ocl2gc.util;
import java.util.Set;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import graph.Graph;
import morphisms.Pair;
import nestedcondition.Morphism;
import nestedcondition.NestedconditionFactory;
import nestedcondition.NodeMapping;
public class MorphismHelper {
public static EList<MorphismPair> getCompleteMorphisms(Graph p, Graph c) {
EList<MorphismPair> morphismPairs = new BasicEList<MorphismPair>();
Set<Pair> pairs = JointPairs.getJointInclusions(p, c);
for (Pair pair : pairs) {
MorphismPair morphismPair = new MorphismPair(p, c);
morphismPair.setResultGraph(pair.getA().getCodomain());
morphismPair.setMorphismP(convertMorphism(pair.getA()));
morphismPair.setMorphismC(convertMorphism(pair.getB()));
morphismPairs.add(morphismPair);
}
return morphismPairs;
}
private static Morphism convertMorphism(morphisms.Morphism graphmorphism) {
NestedconditionFactory factory = NestedconditionFactory.eINSTANCE;
Morphism ecoremorphism = factory.createMorphism();
ecoremorphism.setFrom(graphmorphism.getDomain());
ecoremorphism.setTo(graphmorphism.getCodomain());
for (morphisms.Mapping m : graphmorphism.getMappings()) {
NodeMapping nm = factory.createNodeMapping();
nm.setOrigin(m.getOrigin());
nm.setImage(m.getImage());
ecoremorphism.getNodeMappings().add(nm);
}
return ecoremorphism;
}
}