package org.dashbuilder.client.widgets.dataset.editor.workflow; import org.dashbuilder.client.widgets.dataset.editor.workflow.create.*; import org.dashbuilder.client.widgets.dataset.editor.workflow.edit.*; import org.dashbuilder.dataprovider.DataSetProviderType; import org.jboss.errai.ioc.client.container.SyncBeanManager; import javax.enterprise.context.Dependent; import javax.inject.Inject; /** * <p>Main entry point for editing or creating a data set definition instance.</p> * <p>It provides the workflow beans for each driver & editor.</p> * * @since 0.4.0 */ @Dependent public class DataSetEditorWorkflowFactory { SyncBeanManager beanManager; DataSetProviderTypeWorkflow providerTypeWorkflow; @Inject public DataSetEditorWorkflowFactory(final SyncBeanManager beanManager, final DataSetProviderTypeWorkflow providerTypeWorkflow) { this.beanManager = beanManager; this.providerTypeWorkflow = providerTypeWorkflow; } /** * Obtain the bean for editing a data set definition for a given type. * @param type The data set definition provider type to edit. * @return The workflow instance. */ public DataSetEditWorkflow edit(final DataSetProviderType type) { final boolean isSQL = type != null && DataSetProviderType.SQL.equals(type); final boolean isBean = type != null && DataSetProviderType.BEAN.equals(type); final boolean isCSV = type != null && DataSetProviderType.CSV.equals(type); final boolean isEL = type != null && DataSetProviderType.ELASTICSEARCH.equals(type); Class workflowClass = null; if (isSQL) { workflowClass = SQLDataSetEditWorkflow.class; } else if (isCSV) { workflowClass = CSVDataSetEditWorkflow.class; } else if (isBean) { workflowClass = BeanDataSetEditWorkflow.class; } else if (isEL) { workflowClass = ElasticSearchDataSetEditWorkflow.class; } return (DataSetEditWorkflow) beanManager.lookupBean( workflowClass ).newInstance(); } /** * Obtain the bean for editing the data set definition's provider type. * @return The workflow instance. */ public DataSetProviderTypeWorkflow providerType() { return providerTypeWorkflow; } /** * Obtain the bean for creating (editing basic attributes to be able to perform a lookup) a data set definition for a given type. * @param type The data set definition provider type to edit the basic attributes. * @return The workflow instance. */ public DataSetBasicAttributesWorkflow basicAttributes(final DataSetProviderType type) { final boolean isSQL = type != null && DataSetProviderType.SQL.equals(type); final boolean isBean = type != null && DataSetProviderType.BEAN.equals(type); final boolean isCSV = type != null && DataSetProviderType.CSV.equals(type); final boolean isEL = type != null && DataSetProviderType.ELASTICSEARCH.equals(type); Class workflowClass = null; if (isSQL) { workflowClass = SQLDataSetBasicAttributesWorkflow.class; } else if (isCSV) { workflowClass = CSVDataSetBasicAttributesWorkflow.class; } else if (isBean) { workflowClass = BeanDataSetBasicAttributesWorkflow.class; } else if (isEL) { workflowClass = ElasticSearchDataSetBasicAttributesWorkflow.class; } return (DataSetBasicAttributesWorkflow) beanManager.lookupBean( workflowClass ).newInstance(); } }