/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.transformation.ui.wizards.rest;
import java.util.Properties;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbench;
import org.teiid.core.designer.util.I18nUtil;
import org.teiid.designer.transformation.ui.UiPlugin;
import org.teiid.designer.transformation.ui.wizards.file.TeiidMetadataImportDataSourcePage;
import org.teiid.designer.transformation.ui.wizards.file.TeiidMetadataImportInfo;
import org.teiid.designer.transformation.ui.wizards.file.TeiidMetadataImportViewModelPage;
import org.teiid.designer.transformation.ui.wizards.file.TeiidMetadataImportWizard;
import org.teiid.designer.transformation.ui.wizards.xmlfile.TeiidXmlFileImportProcessor;
import org.teiid.designer.transformation.ui.wizards.xmlfile.TeiidXmlFileInfo;
import org.teiid.designer.transformation.ui.wizards.xmlfile.TeiidXmlImportOptionsPage;
import org.teiid.designer.transformation.ui.wizards.xmlfile.TeiidXmlImportSourcePage;
import org.teiid.designer.transformation.ui.wizards.xmlfile.TeiidXmlImportXmlConfigurationPage;
import org.teiid.designer.ui.common.util.UiUtil;
import org.teiid.designer.ui.viewsupport.DesignerPropertiesUtil;
import org.teiid.designer.ui.viewsupport.IPropertiesContext;
/**
* @since 8.0
*/
public class TeiidRestImportWizard extends TeiidMetadataImportWizard {
private static final String I18N_PREFIX = I18nUtil.getPropertyPrefix(TeiidRestImportWizard.class);
private static final String TITLE = getString("title"); //$NON-NLS-1$
private static final ImageDescriptor IMAGE = UiPlugin.getDefault().getImageDescriptor(Images.IMPORT_TEIID_METADATA);
private static String getString( final String id ) {
return Util.getString(I18N_PREFIX + id);
}
TeiidXmlImportOptionsPage optionsPage;
TeiidRestImportSourcePage sourcePage;
TeiidRestImporterModelDefinitionPage modelDefPage;
//
// private Properties designerProperties;
/**
*
*/
public TeiidRestImportWizard() {
super(UiPlugin.getDefault(), TITLE, IMAGE);
}
@Override
public void init(IWorkbench workbench, IStructuredSelection inputSelection) {
super.init(workbench, inputSelection);
getFileInfo().setFileMode(TeiidMetadataImportInfo.REST_MODE_URL);
}
@Override
public void addPages() {
this.sourcePage = new TeiidRestImportSourcePage(getFileInfo());
addPage(sourcePage);
this.modelDefPage = new TeiidRestImporterModelDefinitionPage(getFileInfo());
addPage(modelDefPage);
addPage(new TeiidMetadataImportDataSourcePage(getFileInfo()));
TeiidXmlImportXmlConfigurationPage sqlPage = new TeiidXmlImportXmlConfigurationPage(getFileInfo());
addPage(sqlPage);
}
@Override
public boolean finish() {
final TeiidRestImportProcessor processor = new TeiidRestImportProcessor(getFileInfo(), this.getShell());
UiUtil.runInSwtThread(new Runnable() {
@Override
public void run() {
processor.execute();
}
}, false);
// Update Properties to include the created source and view Models
if( getDesignerProperties() != null ) {
DesignerPropertiesUtil.setSourceModelName(getDesignerProperties(), getFileInfo().getSourceModelName());
DesignerPropertiesUtil.setViewModelName(getDesignerProperties(), getFileInfo().getViewModelName());
// Should be one info object
if( ! getFileInfo().getXmlFileInfos().isEmpty() && getFileInfo().getXmlFileInfos().size() == 1 ) {
TeiidXmlFileInfo info = this.getFileInfo().getXmlFileInfos().iterator().next();
DesignerPropertiesUtil.setPreviewTargetModelName(getDesignerProperties(), getFileInfo().getViewModelName());
DesignerPropertiesUtil.setPreviewTargetObjectName(getDesignerProperties(), info.getViewProcedureName());
}
}
return true;
}
/**
* @param option the file option
*/
public void setFileOption(int option) {
getFileInfo().setFileMode(option);
}
// @Override
// public void setProperties(Properties properties) {
// this.designerProperties = properties;
// }
@Override
protected void updateForProperties() {
Properties desProps = getDesignerProperties();
if( desProps == null || desProps.isEmpty() ) {
return;
}
// Check for Sources and View Folder from property definitions
IContainer project = DesignerPropertiesUtil.getProject(getDesignerProperties());
IContainer srcFolderResrc = DesignerPropertiesUtil.getSourcesFolder(desProps);
IContainer viewFolderResrc = DesignerPropertiesUtil.getViewsFolder(desProps);
if (srcFolderResrc != null) {
getFileInfo().setSourceModelLocation(srcFolderResrc.getFullPath());
} else if( project != null ) {
getFileInfo().setSourceModelLocation(project.getFullPath());
}
if (viewFolderResrc != null) {
getFileInfo().setViewModelLocation(viewFolderResrc.getFullPath());
} else if( project != null ) {
getFileInfo().setViewModelLocation(project.getFullPath());
}
// Get Connection Profile from property definitions
String profileName = DesignerPropertiesUtil.getConnectionProfileName(desProps);
if( profileName != null && !profileName.isEmpty() ) {
// Set properties - needs later to determine the connection profile
sourcePage.setDesignerProperties(desProps);
}
this.optionsPage.setDesignerProperties(desProps);
if( !openProjectExists()) {
DesignerPropertiesUtil.setProjectStatus(desProps, IPropertiesContext.NO_OPEN_PROJECT);
}
}
}