/** * <copyright> * </copyright> * * */ package org.emftext.term.propositional.expression.resource.expression.mopp; /** * The ExpressionTaskItemBuilder is used to find task items in text documents. The * current implementation uses the generated lexer and the TaskItemDetector to * detect task items. This class is called by the BuilderAdapter, which runs both * this builder and the default builder that is intended to be customized. */ public class ExpressionTaskItemBuilder { public void build(org.eclipse.core.resources.IFile resource, org.eclipse.emf.ecore.resource.ResourceSet resourceSet, org.eclipse.core.runtime.IProgressMonitor monitor) { monitor.setTaskName("Searching for task items"); new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionMarkerHelper().removeAllMarkers(resource, org.eclipse.core.resources.IMarker.TASK); if (isInBinFolder(resource)) { return; } java.util.List<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTaskItem> taskItems = new java.util.ArrayList<org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTaskItem>(); org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTaskItemDetector taskItemDetector = new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTaskItemDetector(); try { java.io.InputStream inputStream = resource.getContents(); String content = org.emftext.term.propositional.expression.resource.expression.util.ExpressionStreamUtil.getContent(inputStream); org.emftext.term.propositional.expression.resource.expression.IExpressionTextScanner lexer = new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionMetaInformation().createLexer(); lexer.setText(content); org.emftext.term.propositional.expression.resource.expression.IExpressionTextToken nextToken = lexer.getNextToken(); while (nextToken != null) { String text = nextToken.getText(); taskItems.addAll(taskItemDetector.findTaskItems(text, nextToken.getLine(), nextToken.getOffset())); nextToken = lexer.getNextToken(); } } catch (java.io.IOException e) { org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionPlugin.logError("Exception while searching for task items", e); } catch (org.eclipse.core.runtime.CoreException e) { org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionPlugin.logError("Exception while searching for task items", e); } for (org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionTaskItem taskItem : taskItems) { java.util.Map<String, Object> markerAttributes = new java.util.LinkedHashMap<String, Object>(); markerAttributes.put(org.eclipse.core.resources.IMarker.USER_EDITABLE, false); markerAttributes.put(org.eclipse.core.resources.IMarker.DONE, false); markerAttributes.put(org.eclipse.core.resources.IMarker.LINE_NUMBER, taskItem.getLine()); markerAttributes.put(org.eclipse.core.resources.IMarker.CHAR_START, taskItem.getCharStart()); markerAttributes.put(org.eclipse.core.resources.IMarker.CHAR_END, taskItem.getCharEnd()); markerAttributes.put(org.eclipse.core.resources.IMarker.MESSAGE, taskItem.getMessage()); new org.emftext.term.propositional.expression.resource.expression.mopp.ExpressionMarkerHelper().createMarker(resource, org.eclipse.core.resources.IMarker.TASK, markerAttributes); } } public String getBuilderMarkerId() { return org.eclipse.core.resources.IMarker.TASK; } public boolean isInBinFolder(org.eclipse.core.resources.IFile resource) { org.eclipse.core.resources.IContainer parent = resource.getParent(); while (parent != null) { if ("bin".equals(parent.getName())) { return true; } parent = parent.getParent(); } return false; } }