// ============================================================================
//
// Copyright (C) 2006-2016 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.dataprofiler.core.ui.wizard.database;
import org.apache.log4j.Logger;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.model.general.Project;
import org.talend.core.model.metadata.builder.connection.Connection;
import org.talend.core.model.properties.DatabaseConnectionItem;
import org.talend.core.model.properties.Property;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.cwm.helper.ColumnHelper;
import org.talend.cwm.helper.ColumnSetHelper;
import org.talend.cwm.helper.ConnectionHelper;
import org.talend.dataprofiler.core.ImageLib;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.ui.wizard.AbstractWizard;
import org.talend.dq.analysis.parameters.ConnectionParameter;
import org.talend.dq.helper.resourcehelper.ResourceFileMap;
import org.talend.repository.ProjectManager;
import org.talend.repository.model.IRepositoryNode;
import org.talend.utils.sugars.TypedReturnCode;
import orgomg.cwm.objectmodel.core.ModelElement;
import orgomg.cwm.objectmodel.core.Package;
import orgomg.cwm.resource.relational.NamedColumnSet;
/**
* created by qiongli on 2013-12-25 Detailled comment
*
*/
public class ColumnFilterWizard extends AbstractWizard {
private Logger log = Logger.getLogger(ColumnFilterWizard.class);
private NamedColumnSet namedColumnSet;
private Package packageObj;
private Connection tdDataProvider;
private String oldColumnFilter;
private ColumnFilterWizardPage columnFilterWizardPage = null;
public ColumnFilterWizard(NamedColumnSet namedColumnSet) {
super();
initAction(namedColumnSet);
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.wizard.ICWMResouceAdapter#initCWMResourceBuilder()
*/
public ModelElement initCWMResourceBuilder() {
return this.tdDataProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.wizard.Wizard#addPages()
*/
@Override
public void addPages() {
initColumnFilterDescription();
addPage(columnFilterWizardPage);
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.wizard.AbstractWizard#performFinish()
*/
@Override
public boolean performFinish() {
String columnFilter = this.columnFilterWizardPage.getColumnFilterText().getText();
if (!this.getOldColumnFilter().equals(columnFilter)) {
Property property = org.talend.dq.helper.PropertyHelper.getProperty(tdDataProvider);
DatabaseConnectionItem connectionItem = (DatabaseConnectionItem) property.getItem();
ColumnHelper.setColumnFilter(columnFilter, namedColumnSet);
Project currentProject = ProjectManager.getInstance().getCurrentProject();
try {
ProxyRepositoryFactory.getInstance().save(currentProject, connectionItem);
} catch (PersistenceException e) {
log.error(e);
return false;
}
}
return true;
}
private void initColumnFilterDescription() {
setWindowTitle(DefaultMessagesImpl.getString("MetaDataFilterWizard.columnFilter")); //$NON-NLS-1$
setDefaultPageImageDescriptor(ImageLib.getImageDescriptor(ImageLib.RUN_IMAGE));
this.columnFilterWizardPage = new ColumnFilterWizardPage(this);
this.columnFilterWizardPage.setTitle(DefaultMessagesImpl.getString("MetaDataFilterWizard.columnFilter")); //$NON-NLS-1$
this.columnFilterWizardPage.setDescription(DefaultMessagesImpl.getString("MetaDataFilterWizard.columnFilterDesc")); //$NON-NLS-1$
}
private void initAction(NamedColumnSet namedCS) {
this.namedColumnSet = namedCS;
this.packageObj = ColumnSetHelper.getParentCatalogOrSchema(this.namedColumnSet);
this.tdDataProvider = ConnectionHelper.getTdDataProvider(this.packageObj);
this.oldColumnFilter = ColumnHelper.getColumnFilter(namedColumnSet);
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.wizard.ICWMResouceAdapter#createAndSaveCWMFile(orgomg.cwm.objectmodel.core.
* ModelElement)
*/
public TypedReturnCode<Object> createAndSaveCWMFile(ModelElement repositoryObject) {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see
* org.talend.dataprofiler.core.ui.wizard.analysis.AbstractAnalysisWizard#openEditor(org.talend.repository.model.IRepositoryNode
* )
*/
@Override
public void openEditor(IRepositoryNode repNode) {
// no need to implement anything now
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.wizard.AbstractWizard#getResourceFileMap()
*/
@Override
protected ResourceFileMap getResourceFileMap() {
// no need to implement anything now
return null;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.wizard.AbstractWizard#getParameter()
*/
@Override
public ConnectionParameter getParameter() {
// no need to implement anything now
return null;
}
/*
* (non-Javadoc)
*
* @see org.talend.dataprofiler.core.ui.wizard.AbstractWizard#getEditorName()
*/
@Override
protected String getEditorName() {
return DefaultMessagesImpl.getString("MetaDataFilterWizard.ColumnFilter"); //$NON-NLS-1$
}
public NamedColumnSet getNamedColumnSet() {
return namedColumnSet;
}
public Connection getTdDataProvider() {
return tdDataProvider;
}
public String getOldColumnFilter() {
return oldColumnFilter;
}
public Package getPackageObj() {
return this.packageObj;
}
}