// Copyright � 2004-2007 Canoo Engineering AG, Switzerland. package com.canoo.webtest.plugins.pdftest; import java.util.Iterator; import java.util.List; import com.canoo.webtest.engine.StepFailedException; import com.canoo.webtest.plugins.pdftest.htmlunit.PDFField; import com.canoo.webtest.plugins.pdftest.htmlunit.PDFPage; /** * @author Etienne Studer * @author Marc Guillemot * @webtest.step * category="PDF" * name="pdfVerifyReadOnlyField" * alias="verifyPdfReadOnlyField" * description="This step verifies the read-only status of a field in the <key>pdf</key> document." */ public class PdfVerifyReadOnlyFieldStep extends AbstractVerifyPdfStep { private String fName; private int fPage = ANY_PAGE; private boolean fReadOnly = true; public String getName() { return fName; } /** * @param name * @webtest.parameter required="yes" * description="The name of the field" */ public void setName(final String name) { fName = name; } public boolean getReadOnly() { return fReadOnly; } /** * @param readOnly * @webtest.parameter required="no" * default="'yes'" * description="Specifies whether the field is expected to be read-only or not." */ public void setReadOnly(final boolean readOnly) { fReadOnly = readOnly; } public int getPage() { return fPage; } /** * @param page * @webtest.parameter required="no" * default="all the pages" * description="The numeric value of the page to restrict the verification to." */ public void setPage(final int page) { fPage = page; } protected void verifyParameters() { super.verifyParameters(); nullParamCheck(getName(), "name"); } protected void verifyPdf(final PDFPage pdfPage) { final List fields; if (getPage() == ANY_PAGE) fields = pdfPage.getFields(getName()); else fields = pdfPage.getFields(getName(), getPage()); if (fields.isEmpty()) throw new StepFailedException("No field found", this); for (final Iterator iter = fields.iterator(); iter.hasNext();) { final PDFField field = (PDFField) iter.next(); if (field.isReadOnly() != getReadOnly()) { final String msg = "Field with name >" + getName() + "< is " + (field.isReadOnly() ? "" : "not ") + "read-only!"; throw new StepFailedException(msg, this); } } } }