// ============================================================================
//
// 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.properties.DatabaseConnectionItem;
import org.talend.core.repository.model.ProxyRepositoryFactory;
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;
/**
* DOC xqliu class global comment. Detailled comment
*/
public class MetaDataFilterWizard extends AbstractWizard {
private Logger log = Logger.getLogger(MetaDataFilterWizard.class);
private MetaDataFilterWizardPage metaDataFilterWizardPage;
private DatabaseConnectionItem databaseConnectionItem;
public MetaDataFilterWizard(DatabaseConnectionItem dbConnItem) {
super();
this.databaseConnectionItem = dbConnItem;
}
@Override
protected String getEditorName() {
return DefaultMessagesImpl.getString("MetaDataFilterWizard.ColumnFilter"); //$NON-NLS-1$
}
@Override
public ConnectionParameter getParameter() {
return null;
}
@Override
protected ResourceFileMap getResourceFileMap() {
return null;
}
public TypedReturnCode<Object> createAndSaveCWMFile(ModelElement cwmElement) {
return null;
}
public ModelElement initCWMResourceBuilder() {
return this.databaseConnectionItem.getConnection();
}
@Override
public boolean performFinish() {
String metaDataFilter = this.metaDataFilterWizardPage.getMetadataFilterText().getText();
return isSavePackageFilter(metaDataFilter);
}
private boolean isSavePackageFilter(String metaDataFilter) {
if (!this.getOldPackageFilter().equals(metaDataFilter)) {
ConnectionHelper.setPackageFilter(this.databaseConnectionItem.getConnection(), metaDataFilter);
Project currentProject = ProjectManager.getInstance().getCurrentProject();
try {
ProxyRepositoryFactory.getInstance().save(currentProject, databaseConnectionItem);
} catch (PersistenceException e) {
log.error(e);
return false;
}
}
return true;
}
/**
* This method is used for getting the filter of package.
*
* @return
*/
public String getOldPackageFilter() {
return ConnectionHelper.getPackageFilter(this.getDatabaseConnectionItem().getConnection());
}
@Override
public void addPages() {
initPackageFilterDescription();
addPage(metaDataFilterWizardPage);
}
private void initPackageFilterDescription() {
setWindowTitle(DefaultMessagesImpl.getString("MetaDataFilterWizard.PackageFilter")); //$NON-NLS-1$
setDefaultPageImageDescriptor(ImageLib.getImageDescriptor(ImageLib.RUN_IMAGE));
this.metaDataFilterWizardPage = new MetaDataFilterWizardPage(this);
this.metaDataFilterWizardPage.setTitle(DefaultMessagesImpl.getString("MetaDataFilterWizard.PackageFilter")); //$NON-NLS-1$
this.metaDataFilterWizardPage.setDescription(DefaultMessagesImpl.getString("MetaDataFilterWizard.PackageFilterDesc")); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see
* org.talend.dataprofiler.core.ui.wizard.analysis.AbstractAnalysisWizard#openEditor(org.talend.repository.model.IRepositoryNode
* )
*/
@Override
public void openEditor(IRepositoryNode repNode) {
// do nothing here until now
}
public DatabaseConnectionItem getDatabaseConnectionItem() {
return this.databaseConnectionItem;
}
}