Skip to content

Commit

Permalink
[1426] Add support for completion proposals in AQLInterpreter
Browse files Browse the repository at this point in the history
Bug: #1426
Signed-off-by: Pierre-Charles David <pierre-charles.david@obeo.fr>
  • Loading branch information
pcdavid committed Nov 9, 2022
1 parent 717b466 commit 0f072d9
Showing 1 changed file with 17 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,29 @@
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;

import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ExecutionException;

import org.eclipse.acceleo.query.runtime.EvaluationResult;
import org.eclipse.acceleo.query.runtime.ICompletionResult;
import org.eclipse.acceleo.query.runtime.IQueryBuilderEngine;
import org.eclipse.acceleo.query.runtime.IQueryBuilderEngine.AstResult;
import org.eclipse.acceleo.query.runtime.IQueryCompletionEngine;
import org.eclipse.acceleo.query.runtime.IQueryEnvironment;
import org.eclipse.acceleo.query.runtime.IQueryEvaluationEngine;
import org.eclipse.acceleo.query.runtime.IService;
import org.eclipse.acceleo.query.runtime.Query;
import org.eclipse.acceleo.query.runtime.QueryCompletion;
import org.eclipse.acceleo.query.runtime.QueryEvaluation;
import org.eclipse.acceleo.query.runtime.QueryParsing;
import org.eclipse.acceleo.query.runtime.ServiceUtils;
import org.eclipse.acceleo.query.validation.type.EClassifierType;
import org.eclipse.acceleo.query.validation.type.IType;
import org.eclipse.emf.common.util.BasicDiagnostic;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.EPackage;
Expand Down Expand Up @@ -161,4 +168,14 @@ private void log(String expression, Diagnostic diagnostic) {

diagnostic.getChildren().forEach(childDiagnostic -> this.log(expression, childDiagnostic));
}

public ICompletionResult getProposals(String expression, int offset) {
IQueryCompletionEngine engine = QueryCompletion.newEngine(this.queryEnvironment);
Map<String, Set<IType>> variableTypes = new LinkedHashMap<>();
final Set<IType> potentialTypes = new LinkedHashSet<>(1);
potentialTypes.add(new EClassifierType(this.queryEnvironment, EcorePackage.Literals.EOBJECT));
variableTypes.put("self", potentialTypes); //$NON-NLS-1$

return engine.getCompletion(expression, offset, variableTypes);
}
}

0 comments on commit 0f072d9

Please sign in to comment.