public Set<PBody> getBodies(Pattern pattern, PQuery query) throws QueryInitializationException { PatternBodyTransformer transformer = new PatternBodyTransformer(pattern); Set<PBody> pBodies = Sets.newLinkedHashSet(); for (PatternBody body : pattern.getBodies()) { EPMToPBody acceptor = new EPMToPBody(pattern, query, patternMap); PBody pBody = transformer.transform(body, acceptor); pBodies.add(pBody); } return pBodies; }
private static String getExpressionPostfix(final XExpression xExpression) { final Pattern pattern = EcoreUtil2.<Pattern>getContainerOfType(xExpression, Pattern.class); boolean _notEquals = (!Objects.equal(pattern, null)); Preconditions.checkArgument(_notEquals, "Expression is not inside a pattern"); int bodyNo = 0; EList<PatternBody> _bodies = pattern.getBodies(); for (final PatternBody patternBody : _bodies) { { bodyNo = (bodyNo + 1); int exNo = 0; Collection<XExpression> _allTopLevelXBaseExpressions = CorePatternLanguageHelper.getAllTopLevelXBaseExpressions(patternBody); for (final XExpression xExpression2 : _allTopLevelXBaseExpressions) { { exNo = (exNo + 1); boolean _equals = xExpression.equals(xExpression2); if (_equals) { String _plus = (Integer.valueOf(bodyNo) + "_"); return (_plus + Integer.valueOf(exNo)); } } } } } throw new RuntimeException("Expression not found in pattern"); } }
private EClassifier getClassifierForVariableWithPattern(Pattern pattern, Variable variable, int recursionCallingLevel) { Set<EClassifier> intermediateResultList = new HashSet<EClassifier>(); for (PatternBody body : pattern.getBodies()) { EClassifier classifier = getClassifierForVariableWithPatternBody(body, variable, recursionCallingLevel, null);
private String getPatternBodyName(PatternBody patternBody) { return (patternBody.getName() != null) ? patternBody.getName() : String.format("#%d", ((Pattern) patternBody.eContainer()).getBodies().indexOf(patternBody) + 1); }
public void inferExpressions(final JvmDeclaredType querySpecificationClass, final Pattern pattern) { EList<PatternBody> _bodies = pattern.getBodies(); final Function1<PatternBody, Collection<XExpression>> _function = new Function1<PatternBody, Collection<XExpression>>() { @Override
@Check public void checkMissingParameterTypes(Variable variable) { if (variable.eContainer() instanceof Pattern && variable.getType() == null) { Pattern pattern = (Pattern) variable.eContainer(); Set<EClassifier> possibleTypes = Sets.newHashSet(); for (PatternBody body : pattern.getBodies()) { possibleTypes.addAll(emfTypeProvider.getIrreducibleClassifiersForVariableInBody(body, variable)); } Iterable<String> typeNames = Iterables.transform(Iterables.filter(possibleTypes, EClass.class), new Function<EClassifier, String>() { @Override public String apply(EClassifier input) { final String name = input.getName(); return (Strings.isEmpty(name)) ? "" : name; } }); String[] issueData = Iterables.toArray(typeNames, String.class); if (issueData.length > 0) { warning("Type not defined for variable " + variable.getName(), PatternLanguagePackage.Literals.VARIABLE__NAME, EMFIssueCodes.MISSING_PARAMETER_TYPE, issueData); } } }
@Override public QualifiedName getFullyQualifiedName(EObject obj) { if (obj instanceof Pattern) { Pattern pattern = (Pattern) obj; return nameConverter.toQualifiedName(CorePatternLanguageHelper.getFullyQualifiedName(pattern)); } else if (obj instanceof PatternBody) { PatternBody patternBody = (PatternBody) obj; Pattern pattern = (Pattern) patternBody.eContainer(); return getFullyQualifiedName(pattern).append(Integer.toString(pattern.getBodies().indexOf(patternBody))); } return super.getFullyQualifiedName(obj); }
for (PatternBody patternBody : pattern.getBodies()) { for (Variable variable : patternBody.getVariables()) { Set<EClassifier> possibleClassifiers = emfTypeProvider.getIrreducibleClassifiersForVariableInBody(
@Override protected void appendTo(StringConcatenationClient.TargetStringConcatenation _builder) { { EList<PatternBody> _bodies = pattern.getBodies(); for(final PatternBody body : _bodies) { _builder.newLineIfNotEmpty(); _builder.append("{"); _builder.newLine(); _builder.append("\t"); _builder.append("PBody body = new PBody(this);"); _builder.newLine(); _builder.append("\t"); BodyCodeGenerator _bodyCodeGenerator = new BodyCodeGenerator(pattern, body, PatternQuerySpecificationClassInferrer.this.util, PatternQuerySpecificationClassInferrer.this.feedback, PatternQuerySpecificationClassInferrer.this.serializer); _builder.append(_bodyCodeGenerator, "\t"); _builder.newLineIfNotEmpty(); _builder.append("\t"); _builder.append("bodies.add(body);"); _builder.newLine(); _builder.append("}"); _builder.newLine(); _builder.append("\t\t"); } } } };