/** * Copyright (c) 2015 committers of YAKINDU 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 * Contributors: * committers of YAKINDU - initial API and implementation * */ package org.yakindu.base.types.validation; import java.util.List; import org.eclipse.core.runtime.Assert; import org.eclipse.emf.ecore.EObject; import org.yakindu.base.types.validation.IValidationIssueAcceptor.ValidationIssue.Severity; import com.google.common.base.Predicate; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; /** * @author andreas muelder - Initial contribution and API * */ public interface IValidationIssueAcceptor { public static class ValidationIssue { public static enum Severity { ERROR, WARNING, INFO } private Severity severity; private String message; private String issueCode; private EObject target; public ValidationIssue(Severity severity, String message, String issueCode) { this(severity, message, null, issueCode); } public ValidationIssue(Severity severity, String message, EObject target, String issueCode) { Assert.isNotNull(message); Assert.isNotNull(issueCode); Assert.isNotNull(severity); this.severity = severity; this.message = message; this.target = target; this.issueCode = issueCode; } public Severity getSeverity() { return severity; } public void setSeverity(Severity severity) { this.severity = severity; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public EObject getTarget() { return target; } public void setTarget(EObject target) { this.target = target; } public String getIssueCode() { return issueCode; } @Override public String toString() { return "ValidationIssue [severity=" + severity + ", message=" + message + ", issueCode=" + issueCode + ", target=" + target + "]"; } } public void accept(ValidationIssue trace); public static final class ListBasedValidationIssueAcceptor implements IValidationIssueAcceptor { private List<ValidationIssue> traces = Lists.newArrayList(); @Override public void accept(ValidationIssue trace) { traces.add(trace); } public List<ValidationIssue> getTraces() { return traces; } public List<ValidationIssue> getTraces(final Severity severity) { return Lists.newArrayList(Iterables.filter(traces, new Predicate<ValidationIssue>() { @Override public boolean apply(ValidationIssue input) { return input.getSeverity() == severity; } })); } } }