blob: df7c9a16db2c4c465ff47cbd5846218780e0f52a [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 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*
* This copyright notice shows up in the generated Java code
*/
package org.eclipse.osbp.xtext.authorizationdsl.ui.contentassist;
import com.google.inject.Inject;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
import org.eclipse.osbp.xtext.authorizationdsl.AuthorizationLazyResolver;
import org.eclipse.osbp.xtext.authorizationdsl.RoleBlipProcess;
import org.eclipse.osbp.xtext.authorizationdsl.RoleBlipUserTask;
import org.eclipse.osbp.xtext.authorizationdsl.RoleEntity;
import org.eclipse.osbp.xtext.authorizationdsl.RoleEntityAttribute;
import org.eclipse.osbp.xtext.authorizationdsl.RoleEntityReference;
import org.eclipse.osbp.xtext.authorizationdsl.common.AuthorizationDSLLiterals;
import org.eclipse.osbp.xtext.authorizationdsl.ui.contentassist.AbstractAuthorizationDSLProposalProvider;
import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
import org.eclipse.osbp.xtext.blip.BlipItem;
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;
/**
* see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
*/
@SuppressWarnings("all")
public class AuthorizationDSLProposalProvider extends AbstractAuthorizationDSLProposalProvider {
@Inject
private TerminalsProposalProvider provider;
@Inject
private BasicDSLProposalProviderHelper providerHelper;
/**
* This override will enable 1 length non letter characters as keyword.
*/
@Override
protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
return true;
}
@Override
protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
boolean result = super.isValidProposal(proposal, prefix, context);
EObject _currentModel = context.getCurrentModel();
if ((_currentModel instanceof RoleEntityAttribute)) {
EObject _currentModel_1 = context.getCurrentModel();
return this.isEntityAttributeValidProposal(((RoleEntityAttribute) _currentModel_1), proposal, result);
} else {
EObject _currentModel_2 = context.getCurrentModel();
if ((_currentModel_2 instanceof RoleEntityReference)) {
EObject _currentModel_3 = context.getCurrentModel();
return this.isEntityReferenceValidProposal(((RoleEntityReference) _currentModel_3), proposal, result);
} else {
EObject _currentModel_4 = context.getCurrentModel();
if ((_currentModel_4 instanceof RoleBlipUserTask)) {
EObject _currentModel_5 = context.getCurrentModel();
return this.isBlipUserTaskValidProposal(((RoleBlipUserTask) _currentModel_5), proposal, result);
} else {
return result;
}
}
}
}
@Override
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 boolean isEntityAttributeValidProposal(final RoleEntityAttribute currentAttribute, final String proposal, final boolean result) {
boolean _isPropertyEnum = AuthorizationDSLLiterals.isPropertyEnum(proposal);
if (_isPropertyEnum) {
return true;
}
EObject eObj = currentAttribute.eContainer();
if ((eObj instanceof RoleEntity)) {
List<LEntityAttribute> _allAttributes = ((RoleEntity) eObj).getEntityRef().getAllAttributes();
for (final LEntityAttribute attribute : _allAttributes) {
if (((attribute.getName().equals(proposal) && (!attribute.isId())) && (!attribute.isUuid()))) {
return true;
}
}
}
return false;
}
public boolean isEntityReferenceValidProposal(final AuthorizationLazyResolver currentReference, final String proposal, final boolean result) {
boolean _isPropertyEnum = AuthorizationDSLLiterals.isPropertyEnum(proposal);
if (_isPropertyEnum) {
return true;
}
EObject eObj = currentReference.eContainer();
if ((eObj instanceof RoleEntity)) {
List<LEntityReference> _allReferences = ((RoleEntity) eObj).getEntityRef().getAllReferences();
for (final LEntityReference reference : _allReferences) {
boolean _equals = reference.getName().equals(proposal);
if (_equals) {
return true;
}
}
}
return false;
}
public boolean isBlipUserTaskValidProposal(final RoleBlipUserTask currentUserTask, final String proposal, final boolean result) {
boolean _isUserTaskEnum = AuthorizationDSLLiterals.isUserTaskEnum(proposal);
if (_isUserTaskEnum) {
return true;
}
EObject eObj = currentUserTask.eContainer();
if ((eObj instanceof RoleBlipProcess)) {
EList<BlipItem> _items = ((RoleBlipProcess) eObj).getProcess().getItems();
for (final BlipItem item : _items) {
boolean _equals = item.getName().equals(proposal);
if (_equals) {
return true;
}
}
}
return false;
}
@Override
public void complete_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
this.provider.complete_ID(model, ruleCall, context, acceptor);
}
}