/******************************************************************************* * Copyright (c) 2012 itemis AG (http://www.itemis.eu) and others. * 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 *******************************************************************************/ package org.xpect.xtext.lib.util; import java.util.Set; import org.eclipse.xtext.diagnostics.Severity; import org.eclipse.xtext.validation.Issue; import org.xpect.text.IRegion; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; /** * @author Moritz Eysholdt - Initial contribution and API */ public class IssueOverlapsRangePredicate implements Predicate<Issue> { private final Set<Severity> severities; private final IRegion region; public IssueOverlapsRangePredicate(IRegion region, Set<Severity> severity) { Preconditions.checkNotNull(region); Preconditions.checkNotNull(severity); this.region = region; this.severities = severity; } public boolean apply(Issue issue) { if (!severities.contains(issue.getSeverity())) return false; Integer offset = issue.getOffset(); Integer length = issue.getLength(); int start = region.getOffset(); int end = start + region.getLength(); if (offset != null && length != null && offset < end && offset + length > start) return true; return false; } public IRegion getRegion() { return region; } public Set<Severity> getSeverity() { return severities; } @Override public String toString() { return "Severities:" + severities + " Region:" + region; } }