package org.jboss.windup.rules.apps.xml.condition.validators;
import org.jboss.windup.config.GraphRewrite;
import org.jboss.windup.rules.apps.xml.model.XmlFileModel;
import org.ocpsoft.rewrite.context.EvaluationContext;
import org.ocpsoft.rewrite.param.DefaultParameterStore;
import org.ocpsoft.rewrite.param.ParameterStore;
import org.ocpsoft.rewrite.param.RegexParameterizedPatternParser;
import java.util.Collection;
import java.util.Collections;
import java.util.regex.Pattern;
/**
* This is a part of XmlFile execution. Validator is checking that file name of .xml file matches the queried.
*/
public class XmlFileNameValidator implements XmlFileValidator
{
private RegexParameterizedPatternParser fileNamePattern;
@Override public boolean isValid(GraphRewrite event,EvaluationContext context, XmlFileModel model)
{
if (fileNamePattern != null)
{
final ParameterStore store = DefaultParameterStore.getInstance(context);
Pattern compiledPattern = fileNamePattern.getCompiledPattern(store);
String pattern = compiledPattern.pattern();
String fileName = model.getFileName();
if (!fileName.matches(pattern))
{
return false;
}
return fileNamePattern.parse(model.getFileName()).submit(event,context);
}
return true;
}
public void setFileNameRegex(String fileName)
{
this.fileNamePattern = new RegexParameterizedPatternParser(fileName);
}
public RegexParameterizedPatternParser getFileNamePattern()
{
return fileNamePattern;
}
public Collection<? extends String> getRequiredParamaterNames()
{
if(fileNamePattern!=null) {
return fileNamePattern.getRequiredParameterNames();
} else {
return Collections.emptyList();
}
}
}