Package org.fusesource.ide.sap.ui.export

Source Code of org.fusesource.ide.sap.ui.export.SapConnectionConfigurationExportWizard

/*******************************************************************************
* Copyright (c) 2014 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
* William Collins punkhornsw@gmail.com
******************************************************************************/
package org.fusesource.ide.sap.ui.export;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;

import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.IExportWizard;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
import org.fusesource.ide.sap.ui.Messages;
import org.fusesource.ide.sap.ui.jaxb.SapConnectionConfiguration;
import org.fusesource.ide.sap.ui.jaxb.SapConnectionConfigurationBuilder;
import org.fusesource.ide.sap.ui.jaxb.blueprint.BlueprintFile;
import org.fusesource.ide.sap.ui.jaxb.spring.SpringFile;
import org.fusesource.ide.sap.ui.util.ModelUtil;
import org.fusesource.ide.sap.ui.view.SapConnectionsView;

public class SapConnectionConfigurationExportWizard extends Wizard implements IExportWizard {
 
  public static final String ID = "org.fusesource.ide.sap.ui.SapConnectionConfigurationExportWizard"; //$NON-NLS-1$
 
  private static final String EXPORT_FILENAME = Messages.SapConnectionConfigurationExportWizard_ExportFilename;
 
  private static final String FILENAME_EXTENSION = ".xml"; //$NON-NLS-1$
 
  private DataBindingContext context;
  private SapConnectionConfigurationExportSettings exportSettings;
  private SapConnectionConfigurationExportPage exportPage;


  public SapConnectionConfigurationExportWizard() {
  }

  @Override
  public void init(IWorkbench workbench, IStructuredSelection selection) {
    setWindowTitle(Messages.SapConnectionConfigurationExportWizard_WindowTitle);
    setNeedsProgressMonitor(true);
   
    exportSettings = new SapConnectionConfigurationExportSettings();
   
    context = new DataBindingContext();
    exportPage = new SapConnectionConfigurationExportPage(context, exportSettings);
  }
 
  @Override
  public void addPages() {
    super.addPages();
    addPage(exportPage);
  }
 
  @Override
  public boolean canFinish() {
    return super.canFinish();
  }

  @Override
  public boolean performFinish() {
    try {
      switch (exportSettings.getExportFileType()) {
      case BLUEPRINT:
        exportBlueprintFile();
        return true;
      case SPRING:
        exportSpringFile();
        return true;
      default:
        return false;
      }
    } catch (Exception e) {
      return false;
    }
  }
 
  protected FileOutputStream getFilename() throws FileNotFoundException {
    File directory = new File(exportSettings.getExportLocation());
   
    // Search directory for unused version of export filename
    String exportFilename;
    for (int i = 0; ; i++) {
      final String filename = exportFilename = EXPORT_FILENAME + (i == 0 ? "" : i) + FILENAME_EXTENSION; //$NON-NLS-1$
      // Look for the 'filename' in directory
      String[] files = directory.list(new FilenameFilter() {
        @Override
        public boolean accept(File dir, String name) {
          if (name.equals(filename)) {
            return true;
          }
          return false;
        }
      });
      if (files.length == 0) {
        // 'filename' is not in directory: found one we can use.
        break;
      }
    }
   
    FileOutputStream fos = new FileOutputStream(exportSettings.getExportLocation() + File.separator + exportFilename);
   
    return fos;
  }
 
  protected void exportBlueprintFile() throws Exception {
    SapConnectionConfiguration sapConnectionConfiguration = new SapConnectionConfiguration();
    SapConnectionConfigurationBuilder.populateSapConnectionConfiguration(getSapConnectionConfigurationModel(), sapConnectionConfiguration);
    BlueprintFile blueprintFile = new BlueprintFile();
    blueprintFile.setSapConnectionConfiguration(sapConnectionConfiguration);
    FileOutputStream fos = getFilename();
    blueprintFile.marshal(fos);
  }
 
  protected void exportSpringFile() throws Exception {
    SapConnectionConfiguration sapConnectionConfiguration = new SapConnectionConfiguration();
    SapConnectionConfigurationBuilder.populateSapConnectionConfiguration(getSapConnectionConfigurationModel(), sapConnectionConfiguration);
    SpringFile springFile = new SpringFile();
    springFile.setSapConnectionConfiguration(sapConnectionConfiguration);
    FileOutputStream fos = getFilename();
    springFile.marshal(fos);
  }
 
  protected org.fusesource.camel.component.sap.model.rfc.SapConnectionConfiguration getSapConnectionConfigurationModel() {
    SapConnectionsView view = (SapConnectionsView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(SapConnectionsView.ID);
    if (view != null) {
      return view.getSapConnectionConfiguration();
    }
    // SapConnectionsView is not active: retrieve stored configuration instead.
    return ModelUtil.getModel(new ResourceSetImpl());
  }
 
}
TOP

Related Classes of org.fusesource.ide.sap.ui.export.SapConnectionConfigurationExportWizard

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.