package org.jboss.windup.reporting.ruleexecution; import java.util.List; import org.jboss.windup.config.GraphRewrite; import org.jboss.windup.config.RuleUtils; import org.jboss.windup.reporting.freemarker.WindupFreeMarkerMethod; import org.jboss.windup.util.ExecutionStatistics; import org.ocpsoft.rewrite.config.Rule; import freemarker.ext.beans.StringModel; import freemarker.template.TemplateModelException; /** * Formats the provided rule for printing in an HTML report. This makes sure that the width of each Rule is not excessive, and also attempts to put in * linefeeds to make the rule easier to read. * * This can be called from a Freemarker template as follows: * * formatRule(Rule) * * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> * */ public class FormatRule implements WindupFreeMarkerMethod { private static final String NAME = "formatRule"; @Override public String getMethodName() { return NAME; } @Override public String getDescription() { return "Takes a " + Rule.class.getSimpleName() + " as a paremeter and formats it into multiple rows for display."; } @Override public Object exec(@SuppressWarnings("rawtypes") List arguments) throws TemplateModelException { ExecutionStatistics.get().begin(NAME); if (arguments.size() != 1) { throw new TemplateModelException("Error, method expects one argument (Rule)"); } StringModel stringModelArg = (StringModel) arguments.get(0); Rule rule = (Rule) stringModelArg.getWrappedObject(); String result = RuleUtils.ruleToRuleContentsString(rule, 0); ExecutionStatistics.get().end(NAME); return result; } @Override public void setContext(GraphRewrite event) { } }