/******************************************************************************
* Copyright (c) 2011-2013, Linagora
*
* 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:
* Linagora - initial API and implementation
*******************************************************************************/
package com.ebmwebsourcing.petals.services.filetransfer.v24.wizard;
import javax.xml.namespace.QName;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import com.ebmwebsourcing.petals.services.cdk.Cdk5Utils;
import com.ebmwebsourcing.petals.services.cdk.cdk5.Cdk5Package;
import com.ebmwebsourcing.petals.services.filetransfer.filetransfer2x.Filetransfer2xPackage;
import com.ebmwebsourcing.petals.services.filetransfer.generated.GetFilesWsdl24;
import com.ebmwebsourcing.petals.services.filetransfer.generated.WriteWsdl24;
import com.ebmwebsourcing.petals.services.filetransfer.v24.FileTransferDescription24;
import com.ebmwebsourcing.petals.services.su.extensions.ComponentVersionDescription;
import com.ebmwebsourcing.petals.services.su.wizards.AbstractServiceUnitWizard;
import com.ebmwebsourcing.petals.services.su.wizards.pages.AbstractSuWizardPage;
import com.sun.java.xml.ns.jbi.AbstractEndpoint;
import com.sun.java.xml.ns.jbi.Provides;
/**
* @author Vincent Zurczak - EBM WebSourcing
* @author Micka�l Istria - EBM WebSourcing
*/
public class FileTransferProvidesWizard24 extends AbstractServiceUnitWizard {
private FiletransferProvidesPage page;
/**
* This component version has two different contracts.
*/
enum Contract {
WRITE_FILES, READ_FILES
}
/**
* Constructor.
*/
public FileTransferProvidesWizard24() {
super();
this.settings.showWsdl = false;
this.settings.activateInterfaceName = false;
this.settings.activateServiceNameOnly = true;
}
/* (non-Javadoc)
* @see com.ebmwebsourcing.petals.services.su.wizards.AbstractServiceUnitWizard
* #getComponentVersionDescription()
*/
@Override
public ComponentVersionDescription getComponentVersionDescription() {
return new FileTransferDescription24();
}
/*
* (non-Javadoc)
* @see com.ebmwebsourcing.petals.services.su.wizards.AbstractServiceUnitWizard
* #predefineJbiValues(com.sun.java.xml.ns.jbi.AbstractEndpoint)
*/
@Override
public void presetServiceValues( AbstractEndpoint ae ) {
ae.setServiceName( new QName( "http://petals.ow2.org/components/filetransfer/version-2", "change-it" ));
Cdk5Utils.setInitialProvidesValues((Provides) ae);
}
/*
* (non-Javadoc)
* @see com.ebmwebsourcing.petals.services.su.wizards.AbstractServiceUnitWizard
* #performLastActions(org.eclipse.core.resources.IFolder, com.sun.java.xml.ns.jbi.AbstractEndpoint,
* org.eclipse.core.runtime.IProgressMonitor, java.util.List)
*/
@Override
public IStatus performLastActions(IFolder resourceFolder, AbstractEndpoint abstractEndpoint, IProgressMonitor monitor) {
// Deal with the parameters
// Note: this approach seems more efficient than data-binding, since it guarantees insertion order in every case.
// Unsettable attributes is a poor workaround. Maybe every component should have a helper to sort features.
String wsdlContent;
if( this.page.getContract() == Contract.WRITE_FILES ) {
abstractEndpoint.eSet( Filetransfer2xPackage.Literals.FILE_TRANSFER_PROVIDES__WRITE_DIRECTORY, this.page.getWriteDirectory());
abstractEndpoint.eSet( Filetransfer2xPackage.Literals.FILE_TRANSFER_PROVIDES__COPY_MODE, this.page.getCopyMode());
abstractEndpoint.eSet( Filetransfer2xPackage.Literals.FILE_TRANSFER_PROVIDES__FILE_PATTERN, this.page.getFilePattern());
wsdlContent = new WriteWsdl24().generate( abstractEndpoint );
} else {
abstractEndpoint.eSet( Filetransfer2xPackage.Literals.FILE_TRANSFER_PROVIDES__READ_DIRECTORY, this.page.getReadDirectory());
abstractEndpoint.eSet( Filetransfer2xPackage.Literals.FILE_TRANSFER_PROVIDES__BACKUP_DIRECTORY, this.page.getBackupDirectory());
wsdlContent = new GetFilesWsdl24().generate( abstractEndpoint );
}
// Deal with the interface name and WSDL
String wsdlName = abstractEndpoint.getInterfaceName().getLocalPart() + ".wsdl";
abstractEndpoint.eSet( Cdk5Package.Literals.CDK5_PROVIDES__WSDL, wsdlName );
createFile( resourceFolder.getFile( wsdlName ), wsdlContent, monitor );
return Status.OK_STATUS;
}
/*
* (non-Javadoc)
* @see com.ebmwebsourcing.petals.services.su.wizards.AbstractServiceUnitWizard
* #getCustomWizardPagesBeforeProject()
*/
@Override
protected AbstractSuWizardPage[] getCustomWizardPagesBeforeJbi() {
this.page = new FiletransferProvidesPage();
return new AbstractSuWizardPage[] { this.page };
}
}