package org.drools.compiler.compiler;
import org.drools.compiler.commons.jci.problems.CompilationProblem;
/**
* Utility class for compilation results
*/
public final class BuilderResultUtils {
private static final String DEFAULT_SEPARATOR = " ";
private BuilderResultUtils() {
}
/**
* Appends compilation problems to summary message if object is an array of {@link CompilationProblem}
* separated with backspaces
*
* @param object object with compilation results
* @param summary summary message
* @return summary message with changes
*/
public static String getProblemMessage(Object object, String summary) {
return getProblemMessage( object, summary, DEFAULT_SEPARATOR );
}
/**
* Appends compilation problems to summary message if object is an array of {@link CompilationProblem}
* with custom separator
*
* @param object object with compilation results
* @param summary summary message
* @param separator custom messages separator
* @return summary message with changes
*/
public static String getProblemMessage(Object object, String summary, String separator) {
if (object instanceof CompilationProblem[]) {
return fillSummary( (CompilationProblem[]) object, summary, separator );
}
return summary;
}
/**
* Appends compilation problems to builder if object is an array of {@link CompilationProblem}
* or object itself if not
*
* @param object object with compilation results
* @param builder message builder
* @return builder
*/
public static StringBuilder appendProblems(Object object, StringBuilder builder) {
if (object instanceof CompilationProblem[]) {
final CompilationProblem[] problem = (CompilationProblem[]) object;
for (CompilationProblem aProblem : problem) {
builder.append("\t")
.append(aProblem)
.append("\n");
}
} else if (object != null) {
builder.append(object);
}
return builder;
}
private static String fillSummary(CompilationProblem[] problem, String summary, String separator) {
StringBuilder builder = new StringBuilder(summary)
.append(DEFAULT_SEPARATOR)
.append(problem[0].getMessage());
for (int i = 1; i < problem.length; i++) {
builder.append(separator)
.append(problem[i].getMessage());
}
return builder.toString();
}
}