/**
* NOT generated by Xtext
*/
package net.certware.intent.ui.quickfix;
import com.google.common.base.Objects;
import java.util.Iterator;
import net.certware.intent.intentSpecification.Decomposition;
import net.certware.intent.intentSpecification.Intent;
import net.certware.intent.intentSpecification.ListItem;
import net.certware.intent.intentSpecification.ModelItem;
import net.certware.intent.intentSpecification.Refinement;
import net.certware.intent.validation.IntentSpecificationValidator;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.ui.editor.model.edit.IModificationContext;
import org.eclipse.xtext.ui.editor.model.edit.ISemanticModification;
import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
import org.eclipse.xtext.ui.editor.quickfix.Fix;
import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor;
import org.eclipse.xtext.validation.Issue;
/**
* Custom quickfixes.
* @see http://www.eclipse.org/Xtext/documentation.html#quickfixes
* @author mrb@certware.net
*/
@SuppressWarnings("all")
public class IntentSpecificationQuickfixProvider extends DefaultQuickfixProvider {
/**
* Fix duplicated intent entries by removing one.
*/
@Fix(IntentSpecificationValidator.UNIQUE_INTENTS_REFINEMENT)
public void removeIntent(final Issue issue, final IssueResolutionAcceptor acceptor) {
String[] _data = issue.getData();
String _get = _data[0];
String _plus = (("Remove intent named" + " ") + _get);
final ISemanticModification _function = (EObject element, IModificationContext context) -> {
Refinement container = ((Refinement) element);
String[] _data_1 = issue.getData();
String _get_1 = _data_1[0];
String itemName = ((String) _get_1);
EList<Intent> list = container.getIntents();
Iterator<Intent> iter = list.iterator();
Intent lastItem = ((Intent) null);
while (iter.hasNext()) {
{
Intent item = iter.next();
String _name = item.getName();
boolean _equals = _name.equals(itemName);
if (_equals) {
lastItem = item;
}
}
}
boolean _notEquals = (!Objects.equal(lastItem, null));
if (_notEquals) {
list.remove(lastItem);
}
};
acceptor.accept(issue,
"Remove duplicated entry", _plus,
"obj16/intent.gif", _function);
}
/**
* Fix duplicated intent entries by removing one.
*/
@Fix(IntentSpecificationValidator.UNIQUE_DECOMPOSITION_INTENT)
public void removeDecomposition(final Issue issue, final IssueResolutionAcceptor acceptor) {
String[] _data = issue.getData();
String _get = _data[0];
String _plus = (("Remove decomposition named" + " ") + _get);
final ISemanticModification _function = (EObject element, IModificationContext context) -> {
Intent container = ((Intent) element);
String[] _data_1 = issue.getData();
String _get_1 = _data_1[0];
String itemName = ((String) _get_1);
EList<Decomposition> list = container.getDecompositions();
Iterator<Decomposition> iter = list.iterator();
Decomposition lastItem = ((Decomposition) null);
while (iter.hasNext()) {
{
Decomposition _next = iter.next();
Decomposition item = ((Decomposition) _next);
String _name = item.getName();
boolean _equals = _name.equals(itemName);
if (_equals) {
lastItem = item;
}
}
}
boolean _notEquals = (!Objects.equal(lastItem, null));
if (_notEquals) {
list.remove(lastItem);
}
};
acceptor.accept(issue,
"Remove duplicated decomposition", _plus,
"obj16/decomposition.gif", _function);
}
/**
* Fix duplicated list entries by removing one.
*/
@Fix(IntentSpecificationValidator.UNIQUE_LIST_ITEM_LIST_ITEM)
public void removeListItem(final Issue issue, final IssueResolutionAcceptor acceptor) {
String[] _data = issue.getData();
String _get = _data[0];
String _plus = (("Remove list item named" + " ") + _get);
final ISemanticModification _function = (EObject element, IModificationContext context) -> {
ListItem outerList = ((ListItem) element);
String[] _data_1 = issue.getData();
String _get_1 = _data_1[0];
String itemName = ((String) _get_1);
EList<ListItem> list = outerList.getItemReferences();
Iterator<ListItem> iter = list.iterator();
ListItem lastItem = ((ListItem) null);
while (iter.hasNext()) {
{
ListItem item = iter.next();
String _name = item.getName();
boolean _equals = _name.equals(itemName);
if (_equals) {
lastItem = item;
}
}
}
boolean _notEquals = (!Objects.equal(lastItem, null));
if (_notEquals) {
list.remove(lastItem);
}
};
acceptor.accept(issue,
"Remove duplicated list item", _plus,
"obj16/listitem.gif", _function);
}
@Fix(IntentSpecificationValidator.UNIQUE_MODEL_ITEM_LIST_ITEM)
public void removeModelItem(final Issue issue, final IssueResolutionAcceptor acceptor) {
String[] _data = issue.getData();
String _get = _data[0];
String _plus = (("Remove model item named" + " ") + _get);
final ISemanticModification _function = (EObject element, IModificationContext context) -> {
ListItem outerList = ((ListItem) element);
String[] _data_1 = issue.getData();
String _get_1 = _data_1[0];
String itemName = ((String) _get_1);
EList<ModelItem> list = outerList.getModelReferences();
Iterator<ModelItem> iter = list.iterator();
ModelItem lastItem = ((ModelItem) null);
while (iter.hasNext()) {
{
ModelItem item = iter.next();
String _name = item.getName();
boolean _equals = _name.equals(itemName);
if (_equals) {
lastItem = item;
}
}
}
boolean _notEquals = (!Objects.equal(lastItem, null));
if (_notEquals) {
list.remove(lastItem);
}
};
acceptor.accept(issue,
"Remove duplicated entry", _plus,
"obj16/modelitem.gif", _function);
}
}