org.eclipse.jubula.client.ui.rcp.validator.TestDataCubeReferenceValidator.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.jubula.client.ui.rcp.validator.TestDataCubeReferenceValidator.java

Source

/*******************************************************************************
 * Copyright (c) 2004, 2010 BREDEX GmbH.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     BREDEX GmbH - initial API and implementation and/or initial documentation
 *******************************************************************************/
package org.eclipse.jubula.client.ui.rcp.validator;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;
import org.eclipse.jubula.client.core.businessprocess.TestDataCubeBP;
import org.eclipse.jubula.client.core.model.IParameterInterfacePO;
import org.eclipse.jubula.client.core.model.IProjectPO;
import org.eclipse.jubula.client.ui.rcp.widgets.CheckedText.IValidator;
import org.eclipse.jubula.client.ui.rcp.widgets.CheckedText.ValidationState;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.widgets.Text;

/**
 * Validates text against Test Data Cube names.
 *
 * @author BREDEX GmbH
 * @created Jul 20, 2010
 */
public class TestDataCubeReferenceValidator implements IValidator {

    /** 
     * The Project containing the Test Data Cubes against which
     * validation will be performed 
     */
    private IProjectPO m_project;

    /**
     * Constructor
     * 
     * @param project The Project containing the Test Data Cubes against which
     *                validation will be performed.
     */
    public TestDataCubeReferenceValidator(IProjectPO project) {
        Validate.notNull(project);
        m_project = project;
    }

    /**
     * {@inheritDoc}
     */
    public ValidationState validateInput(VerifyEvent e) {
        Text txt = (Text) e.widget;
        StringBuilder workValue = new StringBuilder(txt.getText());
        workValue.replace(e.start, e.end, e.text);
        String newValue = workValue.toString();
        boolean mightMatch = false;
        for (IParameterInterfacePO dataCube : TestDataCubeBP.getAllTestDataCubesFor(m_project)) {
            if (StringUtils.equals(e.text, dataCube.getName())) {
                return ValidationState.OK;
            }
            if (!mightMatch && StringUtils.startsWith(dataCube.getName(), newValue)) {
                mightMatch = true;
            }
        }

        if (mightMatch) {
            return ValidationState.MightMatchAccept;
        }

        return ValidationState.MightMatchReject;
    }

}