| /** |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| * |
| * This copyright notice shows up in the generated Java code |
| */ |
| package org.eclipse.osbp.xtext.topologydsl.ui.contentassist; |
| |
| import com.google.common.base.Objects; |
| import java.util.HashMap; |
| import java.util.Set; |
| import javax.inject.Inject; |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.jface.text.contentassist.ICompletionProposal; |
| import org.eclipse.jface.viewers.StyledString; |
| import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator; |
| import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper; |
| import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition; |
| import org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart; |
| import org.eclipse.osbp.xtext.datamartdsl.util.EventBrokerDatamartUtils; |
| import org.eclipse.osbp.xtext.topologydsl.Topology; |
| import org.eclipse.osbp.xtext.topologydsl.TopologyKind; |
| import org.eclipse.osbp.xtext.topologydsl.ui.TopologyDSLDocumentationTranslator; |
| import org.eclipse.osbp.xtext.topologydsl.ui.contentassist.AbstractTopologyDSLProposalProvider; |
| import org.eclipse.xtext.Assignment; |
| import org.eclipse.xtext.Keyword; |
| import org.eclipse.xtext.RuleCall; |
| import org.eclipse.xtext.common.ui.contentassist.TerminalsProposalProvider; |
| import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext; |
| import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor; |
| import org.eclipse.xtext.xbase.lib.Extension; |
| |
| /** |
| * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant |
| */ |
| @SuppressWarnings("all") |
| public class TopologyDSLProposalProvider extends AbstractTopologyDSLProposalProvider { |
| @Inject |
| @Extension |
| private EventBrokerDatamartUtils _eventBrokerDatamartUtils; |
| |
| @Inject |
| private TerminalsProposalProvider provider; |
| |
| @Inject |
| private BasicDSLProposalProviderHelper providerHelper; |
| |
| protected StyledString getKeywordDisplayString(final Keyword keyword) { |
| BasicDSLDocumentationTranslator _instance = TopologyDSLDocumentationTranslator.instance(); |
| return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, _instance); |
| } |
| |
| /** |
| * This override will enable 1 length non letter characters as keyword. |
| */ |
| protected boolean isKeywordWorthyToPropose(final Keyword keyword) { |
| return true; |
| } |
| |
| /** |
| * This method decided which proposals will be valid. |
| */ |
| protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) { |
| boolean result = super.isValidProposal(proposal, prefix, context); |
| boolean _equals = "partition".equals(proposal); |
| if (_equals) { |
| return this.isTopologyStatesValidProposal(context, result); |
| } |
| return result; |
| } |
| |
| public void completeTopologyDataMart_Filter(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { |
| EObject _currentModel = context.getCurrentModel(); |
| EventBrokerDataMart datamart = ((EventBrokerDataMart) _currentModel); |
| HashMap<String, String> filterIdMap = this._eventBrokerDatamartUtils.getFilterMap(datamart); |
| Set<String> _keySet = filterIdMap.keySet(); |
| for (final String filter : _keySet) { |
| String _get = filterIdMap.get(filter); |
| String _concat = "\"".concat(_get); |
| String _concat_1 = _concat.concat("\""); |
| String _string = filter.toString(); |
| ICompletionProposal _createCompletionProposal = this.createCompletionProposal(_concat_1, _string, null, context); |
| acceptor.accept(_createCompletionProposal); |
| } |
| } |
| |
| private boolean isTopologyStatesValidProposal(final ContentAssistContext context, final boolean result) { |
| EObject eObj = context.getCurrentModel(); |
| while ((!(eObj instanceof Topology))) { |
| EObject _eContainer = eObj.eContainer(); |
| eObj = _eContainer; |
| } |
| boolean _notEquals = (!Objects.equal(eObj, null)); |
| if (_notEquals) { |
| if ((eObj instanceof Topology)) { |
| Topology ccTopology = ((Topology) eObj); |
| String _name = TopologyKind.WORLD.name(); |
| String _name_1 = ccTopology.getName(); |
| boolean _equals = _name.equals(_name_1); |
| if (_equals) { |
| return false; |
| } |
| } |
| } |
| return result; |
| } |
| |
| public boolean isDatamartValidProposal(final Topology topology, final String proposal, final boolean result) { |
| EList<EventBrokerDataMart> _datamarts = topology.getDatamarts(); |
| for (final EventBrokerDataMart topologyDataMart : _datamarts) { |
| DatamartDefinition _datamartDef = topologyDataMart.getDatamartDef(); |
| boolean _notEquals = (!Objects.equal(_datamartDef, null)); |
| if (_notEquals) { |
| DatamartDefinition _datamartDef_1 = topologyDataMart.getDatamartDef(); |
| String _name = _datamartDef_1.getName(); |
| boolean _equals = proposal.equals(_name); |
| if (_equals) { |
| return false; |
| } |
| } |
| } |
| return result; |
| } |
| |
| public void complete_QualifiedName(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { |
| this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this); |
| } |
| |
| public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { |
| this.provider.complete_STRING(model, ruleCall, context, acceptor); |
| } |
| |
| public void complete_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) { |
| this.provider.complete_ID(model, ruleCall, context, acceptor); |
| } |
| } |