/*
* Copyright (c) 2005 Canoo Engineering. All Rights Reserved.
*/
package com.canoo.webtest.extension.spider;
import com.canoo.webtest.engine.Context;
import com.canoo.webtest.interfaces.IStepSequence;
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import java.util.Iterator;
import java.util.Properties;
/**
* @author Denis N. Antonioli
*/
public class ExecuteStepValidator implements IValidator {
private final IStepSequence fStepSequence;
public static final String KEY_DEPTH = "Depth";
public static final String KEY_VERIFY = "Verify";
public ExecuteStepValidator(final Context context, final IStepSequence stepSequence) {
fStepSequence = stepSequence;
}
public Properties validate(final int depth, final HtmlPage htmlPage, final HtmlAnchor link) {
final StringBuffer sb = new StringBuffer();
int i = 0;
for (final Iterator iter = fStepSequence.getSteps().iterator(); iter.hasNext();) {
final Task step = (Task) iter.next();
sb.append(i++);
sb.append(", ");
sb.append(getDescription(step));
sb.append(": ");
try {
step.perform();
sb.append("ok");
} catch (final BuildException e) {
sb.append(e.getMessage());
}
sb.append("\t");
}
final Properties linkInfo = new Properties();
linkInfo.put(KEY_DEPTH, Integer.toString(depth));
linkInfo.put(KEY_VERIFY, sb.toString());
return linkInfo;
}
/**
* Gets the description of the Step
* @param step probably an {@link org.apache.tools.ant.UnknownElement}
* @return the description
*/
private String getDescription(final Task step) {
return (String) step.getRuntimeConfigurableWrapper().getAttributeMap().get("description");
}
}