package de.ugoe.cs.swe.bnftools.ui.actions; import java.io.ByteArrayInputStream; import java.io.InputStream; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.InputDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeSelection; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.ActionDelegate; import org.eclipse.xtext.parsetree.AbstractNode; import org.eclipse.xtext.parsetree.CompositeNode; import org.eclipse.xtext.parsetree.LeafNode; import org.eclipse.xtext.parsetree.NodeUtil; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.resource.XtextResourceSet; import de.ugoe.cs.swe.bnftools.ebnf.ExtRule; import de.ugoe.cs.swe.bnftools.ebnf.Import; import de.ugoe.cs.swe.bnftools.ebnf.Rule; import de.ugoe.cs.swe.bnftools.ebnf.RuleReference; import de.ugoe.cs.swe.bnftools.ebnf.impl.EtsiBnfImpl; public class PackageConsistencyCheckerAction extends ActionDelegate { private IStructuredSelection selection = StructuredSelection.EMPTY; private IFile file=null; private XtextResource coreResource = null; private XtextResource updatedResource = null; @Override public void run(IAction action) { TreeSelection treeSelection = (TreeSelection) selection; TreePath[] paths = treeSelection.getPaths(); for (int i = 0; i < paths.length; i++) { TreePath path = paths[i]; IFile f = (IFile) path.getLastSegment(); XtextResourceSet set = new XtextResourceSet(); String fp = f.getFullPath().toString(); URI uri = URI.createPlatformResourceURI(fp,true); Resource resource = set.getResource(uri, true); if (resource instanceof XtextResource) { XtextResource xtextResource = (XtextResource) resource; CompositeNode compNode = xtextResource.getParseResult().getRootNode(); Iterable allNodes = NodeUtil.getAllContents(compNode); if(!((EtsiBnfImpl) xtextResource.getParseResult().getRootNode().getElement()).getType().equals("/delta")) continue; Resource coreRes = null; Resource updatedRes = null; EList imports = ((EtsiBnfImpl) xtextResource.getParseResult().getRootNode().getElement()).getImportSection().getImports(); for(int j=0; j cLeaves = removeWS(cNode.getLeafNodes()); EList uLeaves = removeWS(uNode.getLeafNodes()); if(cLeaves.size()!=uLeaves.size()) return false; for(int i=0; i< cLeaves.size(); i++) { if(!(cLeaves.get(i).serialize().equals(uLeaves.get(i).serialize()))) return false; } return true; } private EList removeWS(EList leaves) { for(int i=0; i refs = rule.getElement().eContents(); for(int i=0; i references = ruleref(removeWS(rule.getLeafNodes())); // for(int i=0; i