blob: fc7c08a6be5562f9eb125ab7fff3fb0b6ae73e70 [file] [log] [blame]
/**
* 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);
}
}