/**
*
*/
package org.jboss.windup.reporting.quickfix;
import org.apache.commons.lang.StringUtils;
import org.jboss.windup.graph.GraphContext;
import org.jboss.windup.graph.model.resource.FileModel;
import org.jboss.windup.graph.service.GraphService;
import org.jboss.windup.reporting.model.QuickfixModel;
import org.jboss.windup.reporting.model.QuickfixType;
import org.jboss.windup.reporting.model.ReplacementQuickfixModel;
import org.jboss.windup.reporting.model.TransformationQuickfixModel;
import org.jboss.windup.reporting.service.QuickfixService;
import org.jboss.windup.util.exception.WindupException;
/**
* This is a pojo for setting and getting Quickfix
*
* @author <a href="mailto:hotmana76@gmail.com">Marek Novotny</a>
*
*/
public class Quickfix
{
private QuickfixType type;
private String name;
private String newline;
private String replacementStr;
private String searchStr;
private String transformationID;
private FileModel fileModel;
/**
* @return the type
*/
public QuickfixType getType()
{
return type;
}
/**
* @param type the type to set
*/
public void setType(QuickfixType type)
{
this.type = type;
}
/**
* @return the name
*/
public String getName()
{
return name;
}
/**
* @param name the name to set
*/
public void setName(String name)
{
this.name = name;
}
/**
* @return the newline
*/
public String getNewline()
{
return newline;
}
/**
* @param newline the newline to set
*/
public void setNewline(String newline)
{
this.newline = newline;
}
/**
* @return the replacementStr
*/
public String getReplacementStr()
{
return replacementStr;
}
/**
* @param replacementStr the replacementStr to set
*/
public void setReplacementStr(String replacementStr)
{
this.replacementStr = replacementStr;
}
/**
* @return the searchStr
*/
public String getSearchStr()
{
return searchStr;
}
/**
* @param searchStr the searchStr to set
*/
public void setSearchStr(String searchStr)
{
this.searchStr = searchStr;
}
public FileModel getFileModel()
{
return fileModel;
}
public void setFileModel(FileModel fileModel)
{
this.fileModel = fileModel;
}
public String getTransformationID()
{
return transformationID;
}
public void setTransformationID(String transformationID)
{
this.transformationID = transformationID;
}
public QuickfixModel createQuickfix(GraphContext graphContext)
{
QuickfixService quickfixService = new QuickfixService(graphContext);
QuickfixModel quickfixModel = quickfixService.create();
quickfixModel.setQuickfixType(getType());
quickfixModel.setName(StringUtils.trim(getName()));
switch (getType()) {
case INSERT_LINE:
case DELETE_LINE:
case REPLACE:
case REGULAR_EXPRESSION:
ReplacementQuickfixModel replacementQuickfixModel = GraphService.addTypeToModel(graphContext, quickfixModel, ReplacementQuickfixModel.class);
replacementQuickfixModel.setReplacement(StringUtils.trim(getReplacementStr()));
replacementQuickfixModel.setSearch(StringUtils.trim(getSearchStr()));
replacementQuickfixModel.setNewline(StringUtils.trim(getNewline()));
break;
case TRANSFORMATION:
TransformationQuickfixModel transformationQuickfixModel = GraphService.addTypeToModel(graphContext, quickfixModel, TransformationQuickfixModel.class);
transformationQuickfixModel.setTransformationID(getTransformationID());
transformationQuickfixModel.setFileModel(getFileModel());
break;
default:
throw new WindupException("Unrecognized quickfix type: " + getType());
}
return quickfixModel;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder(type + " Name: " + getName());
if (type == QuickfixType.INSERT_LINE)
{
sb.append(" newline: " + getNewline());
}
if (type == QuickfixType.REPLACE)
{
sb.append(" search: " + getSearchStr());
sb.append(" replacement: " + getReplacementStr());
}
return sb.toString();
}
}