org.eclipse.wst.wsi.ui.internal.wizards.ValidationWizard.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.wst.wsi.ui.internal.wizards.ValidationWizard.java

Source

/*******************************************************************************
 * Copyright (c) 2002-2005 IBM Corporation and others.
 * 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:
 *   IBM - Initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.wsi.ui.internal.wizards;

import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.wst.wsi.ui.internal.Messages;
import org.eclipse.wst.wsi.ui.internal.Resource;
import org.eclipse.wst.wsi.ui.internal.WSIUIPlugin;
import org.eclipse.ui.IViewReference;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.views.navigator.ResourceNavigator;

/**
 * This wizard allows the user to specify the location of the 
 * WS-I Message Log file for purposes of validation.
 * 
 * @author David Lauzon, IBM
 * @author Lawrence Mandel, IBM
 */

public class ValidationWizard extends Wizard {
    /**
     * Wizard page to specify the location of the 
     * WS-I Message Log file for purposes of validation.
     */
    protected ValidationWizardLogPage logPage;

    /**
     * Wizard page to optionally specify the location
     * of the WSDL document for the Web service.
     */
    protected ValidationWizardWSDLPage wsdlPage;

    /**
     * Wizard page to specify the name, type and namespace
     * for the WSDL element to analyze.
     */
    protected ValidationWizardWSDLContentPage wsdlContentPage;

    /**
     * Default WS-I Message filename passed in the Constructor.
     */
    protected String filename;

    /**
     * The selected WS-I Message Log file.
     */
    protected IFile file;

    /**
     * The container holding the selected WS-I Message Log file.
     */
    protected IPath containerFullPath;

    /**
     * Flag indicating whether selected file is valid.
     */
    protected boolean isValid;

    /**
     * The name of the element to validate.
     */
    protected String elementname;

    /**
     * The namespace of the element to validate.
     */
    protected String namespace;

    /**
     * The name of the parent of the element to validate.
     */
    protected String parentname;

    /**
     * The type of the element to validate.
     */
    protected String type;

    /**
     * The WSDL file to use for validation;
     */
    protected String wsdlfile;

    /**
     * True if a WSDL file is included, false otherwise.
     */
    protected boolean includewsdlfile;

    /**
     * This list of WSDL locations the user can choose from.
     */
    protected String[] wsdllocations = null;

    /**
     * Constructor.
     * @param filename Default message log file name.
     */
    public ValidationWizard(String filename) {
        this.filename = filename;
        this.setWindowTitle(Messages.VALIDATION_WIZARD_TITLE);
        setDefaultPageImageDescriptor(
                ImageDescriptor.createFromFile(WSIUIPlugin.class, Resource.VALIDATE_WSI_LOGFILE_WIZ));
        setNeedsProgressMonitor(true);
    }

    /**
     * @see org.eclipse.jface.wizard.IWizard#addPages()
     */
    public void addPages() {
        logPage = new ValidationWizardLogPage((IStructuredSelection) getResourceNavigatorSelection(), filename);
        wsdlPage = new ValidationWizardWSDLPage((IStructuredSelection) getResourceNavigatorSelection());
        wsdlContentPage = new ValidationWizardWSDLContentPage(
                (IStructuredSelection) getResourceNavigatorSelection());
        addPage(logPage);
        addPage(wsdlPage);
        addPage(wsdlContentPage);

    }

    /**
     * @return True if a WSDL file is included, false otherwise.
     */
    public boolean includeWSDLFile() {
        if (!isValid) {
            return wsdlPage.includeWSDLFile();
        }
        return includewsdlfile;
    }

    /**
     * Get the element name to validate.
     * 
     * @return The element name to validate.
     */
    public String getElementName() {
        return elementname;
    }

    /**
     * Get the namespace for the element.
     * 
     * @return The namespace for the element.
     */
    public String getNamespace() {
        return namespace;
    }

    /**
     * Get the name of the parent of the element.
     * 
     * @return The name of the parent of the element.
     */
    public String getParentName() {
        return parentname;
    }

    /**
     * Get the type of the element.
     * 
     * @return The type of the element.
     */
    public String getType() {
        return type;
    }

    public String getWSDLFile() {
        if (!isValid) {
            return wsdlPage.getWSDLFile();
        }
        return wsdlfile;
    }

    /**
     * @see org.eclipse.jface.wizard.IWizard#getNextPage(org.eclipse.jface.wizard.IWizardPage)
     */
    public IWizardPage getNextPage(IWizardPage currentPage) {
        if (currentPage == wsdlPage) {
            if (!wsdlPage.includeWSDLFile()) {
                return null;
            } else {
                try {
                    WSDLFactory factory = WSDLFactory.newInstance();
                    WSDLReader reader = factory.newWSDLReader();
                    reader.readWSDL(getWSDLFile());
                } catch (Exception e) {
                    // If there is a problem with the WSDL file there is no next page.
                    return null;
                }
            }
        }
        return super.getNextPage(currentPage);
    }

    /**
     * Returns true if the selected file is a valid WS-I Message Log filename.
     * 
     * @return True if the selected file is a valid WS-I Message Log filename.
     */
    public boolean isValid() {
        return isValid;
    }

    /**
     * @see org.eclipse.jface.wizard.IWizard#performFinish()
     */
    public boolean performFinish() {
        file = logPage.getFile();
        containerFullPath = logPage.getContainerFullPath();
        includewsdlfile = wsdlPage.includeWSDLFile();
        wsdlfile = wsdlPage.getWSDLFile();
        elementname = wsdlContentPage.getElementName();
        namespace = wsdlContentPage.getNamespace();
        parentname = wsdlContentPage.getParentName();
        type = wsdlContentPage.getType();
        isValid = true;
        return true;
    }

    /**
     * Returns the file selected by the user in the choose page.
     * 
     * @return the file selectedby the user in the choose page.
     */
    public IFile getFile() {
        return file;
    }

    /**
     * Returns the IPath containing the selected IFile.
     * 
     * @return the IPath containing the selected IFile.
     */
    public IPath getContainerFullPath() {
        return containerFullPath;
    }

    /**
     * Returns the selection in the Resource Navigator view.
     * 
     * @return the selection in the Resource Navigator view.
     */
    public ISelection getResourceNavigatorSelection() {
        IViewReference viewParts[] = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
                .getViewReferences();

        for (int i = 0; i < viewParts.length; i++) {
            if (viewParts[i] instanceof ResourceNavigator) {
                return ((ResourceNavigator) viewParts[i]).getViewSite().getSelectionProvider().getSelection();
            }
        }
        return StructuredSelection.EMPTY;
    }

    /**
     * Set the list of WSDL locations to let the user choose from.
     * 
     * @param wsdllocations A list of WSDL document locations.
     */
    public void setWSDLLocations(String[] wsdllocations) {
        this.wsdllocations = wsdllocations;

    }

    /**
     * Get the list of WSDL locations the user can choose from.
     * 
     * @return The list of WSDL locations.
     */
    public String[] getWSDLLocations() {
        return wsdllocations;
    }
}