package org.jboss.windup.reporting.freemarker;
import java.util.List;
import org.jboss.windup.config.GraphRewrite;
import org.jboss.windup.graph.model.resource.FileModel;
import org.jboss.windup.reporting.service.ClassificationService;
import org.jboss.windup.reporting.service.InlineHintService;
import org.jboss.windup.util.ExecutionStatistics;
import freemarker.ext.beans.StringModel;
import freemarker.template.TemplateModelException;
/**
* Gets the number of effort points involved in migrating this particular file
*
* Called from a freemarker template as follows:
*
* getMigrationEffortPointsForFile(FileModel):int
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*/
public class GetEffortForFile implements WindupFreeMarkerMethod
{
private static final String NAME = "getMigrationEffortPointsForFile";
private ClassificationService classificationService;
private InlineHintService inlineHintService;
@Override
public void setContext(GraphRewrite event)
{
this.classificationService = new ClassificationService(event.getGraphContext());
this.inlineHintService = new InlineHintService(event.getGraphContext());
}
@Override
public String getMethodName()
{
return NAME;
}
@Override
public String getDescription()
{
return "Takes a " + FileModel.class.getSimpleName() + " as a parameter and returns an int containing the effort estimate for this file.";
}
@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 (FileModel)");
}
StringModel fileModelArg = (StringModel) arguments.get(0);
FileModel fileModel = (FileModel) fileModelArg.getWrappedObject();
Object result = classificationService.getMigrationEffortPoints(fileModel) + inlineHintService.getMigrationEffortPoints(fileModel);
ExecutionStatistics.get().end(NAME);
return result;
}
}