package ca.mcgill.ecse.dslreasoner.vampire.icse; import com.google.common.base.Objects; import com.google.common.collect.Iterables; import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic; import hu.bme.mit.inf.dslreasoner.ecore2logic.Ecore2Logic_Trace; import hu.bme.mit.inf.dslreasoner.ecore2logic.EcoreMetamodelDescriptor; import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Type; import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor; import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EEnum; import org.eclipse.emf.ecore.EEnumLiteral; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.eclipse.viatra.query.runtime.api.IQueryGroup; import org.eclipse.viatra.query.runtime.api.IQuerySpecification; import org.eclipse.viatra.query.runtime.matchers.psystem.annotations.PAnnotation; import org.eclipse.xtext.xbase.lib.CollectionLiterals; import org.eclipse.xtext.xbase.lib.Functions.Function1; import org.eclipse.xtext.xbase.lib.IterableExtensions; import org.eclipse.xtext.xbase.lib.ListExtensions; @SuppressWarnings("all") public class GeneralTest { public static Map getTypeMap(final Map classMap, final EcoreMetamodelDescriptor metamodel, final Ecore2Logic e2l, final Ecore2Logic_Trace trace) { final HashMap typeMap = new HashMap(); final Function1 _function = (EClass s) -> { return s.getName(); }; final Map listMap = IterableExtensions.toMap(metamodel.getClasses(), _function); Set _keySet = classMap.keySet(); for (final Class elem : _keySet) { typeMap.put( e2l.TypeofEClass(trace, listMap.get(elem.getSimpleName())), classMap.get(elem)); } return typeMap; } public static EcoreMetamodelDescriptor loadMetamodel(final EPackage pckg) { final List classes = IterableExtensions.toList(Iterables.filter(pckg.getEClassifiers(), EClass.class)); final List enums = IterableExtensions.toList(Iterables.filter(pckg.getEClassifiers(), EEnum.class)); final Function1> _function = (EEnum it) -> { return it.getELiterals(); }; final List literals = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(enums, _function))); final Function1> _function_1 = (EClass it) -> { return it.getEReferences(); }; final List references = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(classes, _function_1))); final Function1> _function_2 = (EClass it) -> { return it.getEAttributes(); }; final List attributes = IterableExtensions.toList(Iterables.concat(ListExtensions.>map(classes, _function_2))); return new EcoreMetamodelDescriptor(classes, Collections.unmodifiableSet(CollectionLiterals.newHashSet()), false, enums, literals, references, attributes); } public static EList loadPartialModel(final ReasonerWorkspace inputs, final String path) { EList _xblockexpression = null; { Map _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap(); XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); _extensionToFactoryMap.put("*", _xMIResourceFactoryImpl); _xblockexpression = inputs.readModel(EObject.class, path).eResource().getContents(); } return _xblockexpression; } public static ViatraQuerySetDescriptor loadQueries(final EcoreMetamodelDescriptor metamodel, final IQueryGroup i) { final List> patterns = IterableExtensions.>toList(i.getSpecifications()); final Function1, Boolean> _function = (IQuerySpecification it) -> { final Function1 _function_1 = (PAnnotation it_1) -> { String _name = it_1.getName(); return Boolean.valueOf(Objects.equal(_name, "Constraint")); }; return Boolean.valueOf(IterableExtensions.exists(it.getAllAnnotations(), _function_1)); }; final Set> wfPatterns = IterableExtensions.>toSet(IterableExtensions.>filter(patterns, _function)); final Map, EStructuralFeature> derivedFeatures = CollectionLiterals., EStructuralFeature>emptyMap(); final ViatraQuerySetDescriptor res = new ViatraQuerySetDescriptor(patterns, wfPatterns, derivedFeatures); return res; } }