// ============================================================================
//
// 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.analysis.catalog;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.talend.core.model.metadata.builder.connection.Connection;
import org.talend.core.repository.model.repositoryObject.MetadataCatalogRepositoryObject;
import org.talend.cwm.helper.ConnectionHelper;
import org.talend.cwm.helper.SwitchHelpers;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import org.talend.dataprofiler.core.ui.wizard.analysis.AnalysisDPSelectionPage;
import org.talend.dataprofiler.core.ui.wizard.analysis.provider.CatalogContentProvider;
import org.talend.dq.analysis.parameters.PackagesAnalyisParameter;
import org.talend.dq.nodes.DBCatalogRepNode;
import org.talend.dq.nodes.DBConnectionRepNode;
import org.talend.repository.model.IRepositoryNode;
import orgomg.cwm.resource.relational.Catalog;
/**
* DOC mzhao class global comment. Detailled comment
*
* @author mzhao
*
*/
public class CatalogAnalysisDPSelectionPage extends AnalysisDPSelectionPage {
protected static Logger log = Logger.getLogger(CatalogAnalysisDPSelectionPage.class);
private static String newAnaStr = DefaultMessagesImpl.getString("CatologAnalysisPageStep0.newAnalysis"); //$NON-NLS-1$
private static String chooseConnStr = DefaultMessagesImpl.getString("CatologAnalysisPageStep0.chooseCatalog"); //$NON-NLS-1$
private static String connsStr = DefaultMessagesImpl.getString("CatologAnalysisPageStep0.catalogs"); //$NON-NLS-1$
/**
* @param pageName
*/
public CatalogAnalysisDPSelectionPage() {
super(newAnaStr, chooseConnStr, connsStr, new CatalogContentProvider()); //$NON-NLS-1$
setPageComplete(false);
}
@Override
protected void addListeners() {
addListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
Object object = ((IStructuredSelection) event.getSelection()).getFirstElement();
if (object instanceof Catalog) {
advanceToNextPageOrFinish();
}
}
});
addListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
try {
Object object = ((IStructuredSelection) event.getSelection()).getFirstElement();
PackagesAnalyisParameter catalogPanameter = (PackagesAnalyisParameter) getConnectionParams();
List<IRepositoryNode> nodes = new ArrayList<IRepositoryNode>();
if (object instanceof DBCatalogRepNode) {
DBCatalogRepNode catalogNode = (DBCatalogRepNode) object;
Catalog catalog = ((MetadataCatalogRepositoryObject) catalogNode.getObject()).getCatalog();
Connection tdProvider = ConnectionHelper
.getTdDataProvider(SwitchHelpers.PACKAGE_SWITCH.doSwitch(catalog));
nodes.add(catalogNode);
if (tdProvider != null && catalogPanameter != null) {
catalogPanameter.setTdDataProvider(tdProvider);
catalogPanameter.setConnectionRepNode((DBConnectionRepNode) catalogNode.getParent());
catalogPanameter.setPackages(nodes);
}
setPageComplete(true);
} else {
setPageComplete(false);
}
} catch (Exception e) {
log.error(e, e);
}
}
});
}
}