/******************************************************************************* * Copyright (c) 2005, 2007 committers of openArchitectureWare 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 openArchitectureWare - initial API and implementation *******************************************************************************/ package org.eclipse.emf.mwe.core.issues; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.emf.common.util.Diagnostic; import org.eclipse.emf.mwe.core.WorkflowComponent; public class IssuesImpl implements Issues { private final List<MWEDiagnostic> issues = new ArrayList<MWEDiagnostic>(); public void add(final MWEDiagnostic issue) { issues.add(issue); } public void addError(WorkflowComponent ctx, String msg, Object obj, String feature, Throwable t, List<Object> additionalData) { add(createError(ctx, msg, obj, feature, t, additionalData)); } public void addError(final WorkflowComponent ctx, final String msg, final Object element, final Throwable t, final List<Object> additionalData) { addError(ctx, msg, element, null, t, additionalData); } public void addError(final WorkflowComponent ctx, final String msg) { addError(ctx, msg, null, null, Collections.emptyList()); } public void addError(final String msg, final Object element) { addError(null, msg, element, null, Collections.emptyList()); } public void addError(final String msg) { addError(msg, (Object) null); } public void addError(WorkflowComponent compnent, String msg, Object obj) { addError(compnent, msg, obj, null, Collections.emptyList()); } public boolean hasErrors() { return getErrors().length != 0; } public MWEDiagnostic[] getErrors() { return filterIssues(Diagnostic.ERROR); } public void addWarning(final WorkflowComponent ctx, final String msg) { addWarning(ctx, msg, null, null, Collections.emptyList()); } public void addWarning(final String msg, final Object element) { addWarning(null, msg, element, null, Collections.emptyList()); } public void addWarning(final WorkflowComponent ctx, final String msg, final Object element, final Throwable t, final List<Object> additionalData) { addWarning(ctx, msg, element, null, t, additionalData); } public void addWarning(final WorkflowComponent ctx, final String msg, final Object element, final String feature, final Throwable t, final List<Object> additionalData) { add(createWarning(ctx, msg, element, feature, t, additionalData)); } public void addWarning(final String msg) { addWarning(msg, null); } public void addWarning(WorkflowComponent compnent, String msg, Object obj) { addWarning(compnent, msg, obj, null, Collections.emptyList()); } public MWEDiagnostic[] getWarnings() { return filterIssues(Diagnostic.WARNING); } public boolean hasWarnings() { return getWarnings().length != 0; } public void addInfo(final WorkflowComponent ctx, final String msg) { addInfo(ctx, msg, null, null, Collections.emptyList()); } public void addInfo(final String msg, final Object element) { addInfo(null, msg, element, null, Collections.emptyList()); } public void addInfo(final WorkflowComponent ctx, final String msg, final Object element, final Throwable t, final List<Object> additionalData) { addInfo(ctx, msg, element, null, t, additionalData); } public void addInfo(final WorkflowComponent ctx, final String msg, final Object element, final String featureName, final Throwable t, final List<Object> additionalData) { add(createInfo(ctx, msg, element, featureName, t, additionalData)); } public void addInfo(WorkflowComponent compnent, String msg, Object obj) { addInfo(compnent, msg, obj, null, Collections.emptyList()); } public void addInfo(final String msg) { addInfo(msg, null); } public MWEDiagnostic[] getInfos() { return filterIssues(Diagnostic.INFO); } public boolean hasInfos() { return getInfos().length != 0; } @Override public String toString() { final StringBuffer buff = new StringBuffer(); MWEDiagnostic[] issues = getInfos(); for (final MWEDiagnostic issue : issues) { buff.append("\n" + issue.toString()); } issues = getWarnings(); for (final MWEDiagnostic issue : issues) { buff.append("\n" + issue.toString()); } issues = getErrors(); for (final MWEDiagnostic issue : issues) { buff.append("\n" + issue.toString()); } return buff.toString(); } public void clear() { issues.clear(); } private static MWEDiagnostic createDiagnostic(final int severity, final WorkflowComponent ctx, final String msg, final Object element, final String feature, final Throwable t, final List<Object> additionalData) { MWEDiagnostic diagnostic = new MWEDiagnostic(severity, msg, element, feature, t, additionalData, ctx); return diagnostic; } static MWEDiagnostic createInfo(final WorkflowComponent ctx, final String msg, final Object element, final String featureName, final Throwable t, final List<Object> additionalData) { MWEDiagnostic diagnostic = createDiagnostic(Diagnostic.INFO, ctx, msg, element, featureName, t, additionalData); return diagnostic; } private static MWEDiagnostic createWarning(final WorkflowComponent ctx, final String msg, final Object element, String feature, final Throwable t, final List<Object> additionalData) { MWEDiagnostic diagnostic = createDiagnostic(Diagnostic.WARNING, ctx, msg, element, feature, t, additionalData); return diagnostic; } private static MWEDiagnostic createError(final WorkflowComponent ctx, final String msg, final Object element, final String feature, final Throwable t, final List<Object> additionalData) { MWEDiagnostic diagnostic = createDiagnostic(Diagnostic.ERROR, ctx, msg, element, feature, t, additionalData); return diagnostic; } private MWEDiagnostic[] filterIssues(final int severity) { List<MWEDiagnostic> result = new ArrayList<MWEDiagnostic>(); for (MWEDiagnostic diagnostic : issues) { if (diagnostic.getSeverity() == severity) { result.add(diagnostic); } } return result.toArray(new MWEDiagnostic[result.size()]); } public MWEDiagnostic[] getIssues() { return issues.toArray(new MWEDiagnostic[issues.size()]); } }