blob: dde6b71ca6564c9de23d4602260dc84ef18b4875 [file] [log] [blame]
/**
* Copyright (c) 2017 CEA.
* 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:
* CEA - initial API and implementation and/or initial documentation
*/
package org.eclipse.sensinact.studio.language.ui.contentassist;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.sensinact.studio.language.sensinact.DSL_Resource;
import org.eclipse.sensinact.studio.language.ui.contentassist.AbstractSensinactProposalProvider;
import org.eclipse.sensinact.studio.model.manager.modelupdater.ModelEditor;
import org.eclipse.sensinact.studio.model.manager.modelupdater.ModelUpdater;
import org.eclipse.xtext.Assignment;
import org.eclipse.xtext.RuleCall;
import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
import org.eclipse.xtext.xbase.lib.Exceptions;
/**
* @author Etienne Gandrille
*/
@SuppressWarnings("all")
public class SensinactProposalProvider extends AbstractSensinactProposalProvider {
@Override
public void complete_EXTENDED_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
try {
DSL_Resource rsrc = ((DSL_Resource) model);
String gatewayID = rsrc.getGatewayID();
String deviceID = rsrc.getDeviceID();
String serviceID = rsrc.getServiceID();
EObject _eContainer = ruleCall.eContainer();
Assignment container = ((Assignment) _eContainer);
String feature = container.getFeature();
boolean _equals = "gatewayID".equals(feature);
if (_equals) {
ModelEditor _instance = ModelEditor.getInstance();
List<String> candidates = _instance.getGatewaysId();
for (final String candidate : candidates) {
ICompletionProposal _createCompletionProposal = this.createCompletionProposal((candidate + "/"), context);
acceptor.accept(_createCompletionProposal);
}
}
boolean _equals_1 = "deviceID".equals(feature);
if (_equals_1) {
ModelEditor _instance_1 = ModelEditor.getInstance();
List<String> candidates_1 = _instance_1.getDevicesId(gatewayID);
for (final String candidate_1 : candidates_1) {
ICompletionProposal _createCompletionProposal_1 = this.createCompletionProposal((candidate_1 + "/"), context);
acceptor.accept(_createCompletionProposal_1);
}
} else {
boolean _equals_2 = "serviceID".equals(feature);
if (_equals_2) {
ModelUpdater _instance_2 = ModelUpdater.getInstance();
_instance_2.updateServices(gatewayID, deviceID);
ModelEditor _instance_3 = ModelEditor.getInstance();
List<String> candidates_2 = _instance_3.getServicesId(gatewayID, deviceID);
for (final String candidate_2 : candidates_2) {
ICompletionProposal _createCompletionProposal_2 = this.createCompletionProposal((candidate_2 + "/"), context);
acceptor.accept(_createCompletionProposal_2);
}
} else {
boolean _equals_3 = "resourceID".equals(feature);
if (_equals_3) {
ModelUpdater _instance_4 = ModelUpdater.getInstance();
_instance_4.updateResources(gatewayID, deviceID, serviceID);
ModelEditor _instance_5 = ModelEditor.getInstance();
List<String> candidates_3 = _instance_5.getResourcesId(gatewayID, deviceID, serviceID);
for (final String candidate_3 : candidates_3) {
ICompletionProposal _createCompletionProposal_3 = this.createCompletionProposal(candidate_3, context);
acceptor.accept(_createCompletionProposal_3);
}
}
}
}
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
}