blob: 9b21336e9260ff21c7c99d4986c99c5a7075063f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 BSI Business Systems Integration AG.
* 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:
* Daniel Wiehl (BSI Business Systems Integration AG) - initial API and implementation
******************************************************************************/
package org.eclipse.scout.sdk.ws.jaxws.swt.wizard;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.core.IType;
import org.eclipse.scout.commons.StringUtility;
import org.eclipse.scout.sdk.jobs.OperationJob;
import org.eclipse.scout.sdk.ui.internal.ScoutSdkUi;
import org.eclipse.scout.sdk.ui.wizard.AbstractWorkspaceWizard;
import org.eclipse.scout.sdk.util.type.TypeUtility;
import org.eclipse.scout.sdk.util.typecache.IWorkingCopyManager;
import org.eclipse.scout.sdk.workspace.IScoutBundle;
import org.eclipse.scout.sdk.ws.jaxws.JaxWsIcons;
import org.eclipse.scout.sdk.ws.jaxws.JaxWsSdk;
import org.eclipse.scout.sdk.ws.jaxws.Texts;
import org.eclipse.scout.sdk.ws.jaxws.operation.WsProviderDeleteOperation;
import org.eclipse.scout.sdk.ws.jaxws.swt.model.BuildJaxWsBean;
import org.eclipse.scout.sdk.ws.jaxws.swt.model.SunJaxWsBean;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.ElementBean;
import org.eclipse.scout.sdk.ws.jaxws.swt.wizard.page.ResourceSelectionWizardPage;
import org.eclipse.scout.sdk.ws.jaxws.util.JaxWsSdkUtility;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility.Artefact;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility.SchemaImportArtefact;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility.SchemaIncludeArtefact;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility.WsdlArtefact;
import org.eclipse.scout.sdk.ws.jaxws.util.SchemaUtility.WsdlArtefact.TypeEnum;
public class WsProviderDeleteWizard extends AbstractWorkspaceWizard {
private ResourceSelectionWizardPage m_wizardPage;
private IScoutBundle m_bundle;
private SunJaxWsBean m_sunJaxWsBean;
private BuildJaxWsBean m_buildJaxWsBean;
private WsProviderDeleteOperation m_operation;
public WsProviderDeleteWizard() {
setWindowTitle(Texts.get("DeleteWebServiceProvider"));
}
@Override
public void addPages() {
m_wizardPage = new ResourceSelectionWizardPage(Texts.get("DeleteWebServiceProvider"), Texts.get("QuestionDeletion"));
m_wizardPage.setElements(getElementsToBeDeleted());
addPage(m_wizardPage);
}
private List<ElementBean> getElementsToBeDeleted() {
List<ElementBean> elements = new LinkedList<ElementBean>();
// registration
elements.add(new ElementBean(WsProviderDeleteOperation.ID_REGISTRATION, "Registration entry in sun-jaxws.xml and build-jaxws.xml", JaxWsSdk.getImageDescriptor(JaxWsIcons.SunJaxWsXmlFile), true));
// port type
String fqn = m_sunJaxWsBean.getImplementation();
if (TypeUtility.existsType(fqn)) {
IType portType = TypeUtility.getType(fqn);
elements.add(new ElementBean(WsProviderDeleteOperation.ID_IMPL_TYPE, "Port type '" + portType.getFullyQualifiedName() + "'", ScoutSdkUi.getImageDescriptor(ScoutSdkUi.Class), portType, false));
}
// stub JAR file
IFile stubJarFile = JaxWsSdkUtility.getStubJarFile(m_bundle, m_buildJaxWsBean, m_sunJaxWsBean.getWsdl());
if (stubJarFile != null && stubJarFile.exists()) {
elements.add(new ElementBean(WsProviderDeleteOperation.ID_STUB, "Stub JAR file '" + stubJarFile.getFullPath().toPortableString() + "'", JaxWsSdk.getImageDescriptor(JaxWsIcons.Jar), stubJarFile, false));
}
// WSDL file
IFile wsdlFile = null;
if (StringUtility.hasText(m_sunJaxWsBean.getWsdl())) {
wsdlFile = JaxWsSdkUtility.getFile(m_bundle, m_sunJaxWsBean.getWsdl(), false);
}
if (wsdlFile != null && wsdlFile.exists()) {
elements.add(new ElementBean(WsProviderDeleteOperation.ID_WSDL_FILE, "WSDL file '" + wsdlFile.getProjectRelativePath().toPortableString() + "'", JaxWsSdk.getImageDescriptor(JaxWsIcons.WsdlFile), wsdlFile, false));
}
if (wsdlFile != null) {
Artefact[] artefacts = SchemaUtility.getArtefacts(wsdlFile, false);
for (Artefact artefact : artefacts) {
// referenced WSDL definitions
if (artefact instanceof WsdlArtefact) {
WsdlArtefact wsdlArtefact = (WsdlArtefact) artefact;
if (wsdlArtefact.getTypeEnum() == TypeEnum.ReferencedWsdl) {
IFile referencedWsdlFile = JaxWsSdkUtility.toFile(m_bundle, wsdlArtefact.getFile());
if (referencedWsdlFile != null && referencedWsdlFile.exists()) {
elements.add(new ElementBean(WsProviderDeleteOperation.ID_REF_WSDL, "Referenced WSDL file '" + referencedWsdlFile.getProjectRelativePath().toPortableString() + "'", JaxWsSdk.getImageDescriptor(JaxWsIcons.WsdlFile), referencedWsdlFile, false));
}
}
}
// imported XSD schemas
if (artefact instanceof SchemaImportArtefact) {
SchemaImportArtefact schemaArtefact = (SchemaImportArtefact) artefact;
IFile importedSchemaFile = JaxWsSdkUtility.toFile(m_bundle, schemaArtefact.getFile());
if (importedSchemaFile != null && importedSchemaFile.exists()) {
elements.add(new ElementBean(WsProviderDeleteOperation.ID_REF_XSD, "Imported XSD schema '" + importedSchemaFile.getProjectRelativePath().toPortableString() + "'", JaxWsSdk.getImageDescriptor(JaxWsIcons.XsdSchema), importedSchemaFile, false));
}
}
// included XSD schemas
if (artefact instanceof SchemaIncludeArtefact) {
SchemaIncludeArtefact schemaArtefact = (SchemaIncludeArtefact) artefact;
IFile includedSchemaFile = JaxWsSdkUtility.toFile(m_bundle, schemaArtefact.getFile());
if (includedSchemaFile != null && includedSchemaFile.exists()) {
elements.add(new ElementBean(WsProviderDeleteOperation.ID_REF_XSD, "Included XSD schema '" + includedSchemaFile.getProjectRelativePath().toPortableString() + "'", JaxWsSdk.getImageDescriptor(JaxWsIcons.XsdSchema), includedSchemaFile, false));
}
}
}
}
// binding file
if (m_buildJaxWsBean != null) {
IFile[] bindingFiles = JaxWsSdkUtility.getBindingFiles(m_bundle, m_buildJaxWsBean.getPropertiers());
for (IFile bindingFile : bindingFiles) {
if (bindingFile != null && bindingFile.exists()) {
elements.add(new ElementBean(WsProviderDeleteOperation.ID_BINDING_FILE, "Binding file '" + bindingFile.getProjectRelativePath().toPortableString() + "'", JaxWsSdk.getImageDescriptor(JaxWsIcons.BindingFile), bindingFile, false));
}
}
}
return elements;
}
@Override
protected boolean beforeFinish() throws CoreException {
m_operation = new WsProviderDeleteOperation();
m_operation.setBundle(m_bundle);
m_operation.setSunJaxWsBean(m_sunJaxWsBean);
m_operation.setBuildJaxWsBean(m_buildJaxWsBean);
List<ElementBean> elements = new LinkedList<ElementBean>();
for (ElementBean element : m_wizardPage.getElements()) {
if (element.isChecked() || element.isMandatory()) {
elements.add(element);
}
}
m_operation.setElements(elements);
return true;
}
@Override
protected boolean performFinish(IProgressMonitor monitor, IWorkingCopyManager workingCopyManager) throws CoreException, IllegalArgumentException {
OperationJob job = new OperationJob(m_operation);
job.schedule();
return true;
}
public IScoutBundle getBundle() {
return m_bundle;
}
public void setBundle(IScoutBundle bundle) {
m_bundle = bundle;
}
public SunJaxWsBean getSunJaxWsBean() {
return m_sunJaxWsBean;
}
public void setSunJaxWsBean(SunJaxWsBean sunJaxWsBean) {
m_sunJaxWsBean = sunJaxWsBean;
}
public BuildJaxWsBean getBuildJaxWsBean() {
return m_buildJaxWsBean;
}
public void setBuildJaxWsBean(BuildJaxWsBean buildJaxWsBean) {
m_buildJaxWsBean = buildJaxWsBean;
}
}