blob: cbd13546868ccc5d0017a8bf7504b11fb25e3118 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2019 Xored Software Inc 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
* https://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Xored Software Inc - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.rcptt.core.internal.builder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.rcptt.core.builder.IQ7ProblemReporter;
public class Q7ProblemCollector implements IQ7ProblemReporter {
Map<IFile, List<Q7Problem>> problems = new HashMap<IFile, List<Q7Problem>>();
public synchronized void reportProblem(IFile element, ProblemType type,
String message, int line, int offset, int length, int sourceId) {
Q7Problem pr = new Q7Problem(message, line, offset, type.getValue(), length, sourceId);
List<Q7Problem> list = problems.get(element);
if (list == null) {
list = new ArrayList<Q7Problem>();
problems.put(element, list);
}
if (!list.contains(pr)) {
list.add(pr);
}
}
public synchronized void flushProblems(SubProgressMonitor monitor) {
monitor.beginTask("Flush problems", problems.size());
for (IFile element : problems.keySet()) {
List<Q7Problem> list = problems.get(element);
for (Q7Problem q7Problem : list) {
Q7Builder.addMarker(element, q7Problem.getMessage(),
q7Problem.getLine(), q7Problem.getSeverity(),
q7Problem.getOffset(), q7Problem.getLength(),
q7Problem.getSourceId());
}
}
monitor.done();
}
}