| /** |
| * 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); |
| } |
| } |