// ============================================================================ // // 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.dialog; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.emf.common.util.EList; import org.eclipse.swt.widgets.Shell; import org.talend.core.model.metadata.builder.connection.Connection; import org.talend.core.model.metadata.builder.connection.MetadataTable; import org.talend.core.model.metadata.builder.database.DqRepositoryViewService; import org.talend.cwm.helper.CatalogHelper; import org.talend.cwm.helper.ColumnSetHelper; import org.talend.cwm.helper.PackageHelper; import org.talend.cwm.relational.TdTable; import org.talend.dataquality.analysis.Analysis; import orgomg.cwm.objectmodel.core.ModelElement; import orgomg.cwm.objectmodel.core.Package; import orgomg.cwm.resource.relational.Catalog; import orgomg.cwm.resource.relational.ColumnSet; import orgomg.cwm.resource.relational.Schema; /** * DOC mzhao analyzed columns synchronized dialog. 2009-06-02 Feature 5887 */ public class AnalyzedColumnSetsSynDialog extends AnalyzedElementSynDialog { private static Logger log = Logger.getLogger(AnalyzedColumnsSynDialog.class); private EList<ModelElement> analyzedElements = null; public AnalyzedColumnSetsSynDialog(Shell parent, Analysis analysis, Connection dataprovider, EList<ModelElement> analyzedElements) { super(parent, analysis, dataprovider); this.analyzedElements = analyzedElements; } @Override public void reloadInputModel() { ColumnSet anaColumnSet = null; modelInput.clear(); synedEleMap.clear(); for (ModelElement element : analyzedElements) { try { anaColumnSet = (ColumnSet) element; synedEleMap.put(anaColumnSet, null); Package anaPackage = ColumnSetHelper.getParentCatalogOrSchema(anaColumnSet); if (anaPackage == null) { return; } Package connPackage = null; // MOD by zshen for bug 16775 on 2010.12.28 for mssql case for (Package pk : newDataProvider.getDataPackage()) { if (pk instanceof Catalog && anaPackage instanceof Schema) { Catalog catl = CatalogHelper.getParentCatalog(anaPackage); if (null != catl && pk.getName().equalsIgnoreCase(catl.getName())) { connPackage = pk; break; } } else if (null != anaPackage && pk.getName().equalsIgnoreCase(anaPackage.getName())) { connPackage = pk; break; } } if (connPackage == null) { SynTreeModel synTreeModel = new SynTreeModel(anaColumnSet); synTreeModel.setOldDataProvElement(anaPackage); // synTreeModel.setNewDataProvElement(connPackage); modelInput.add(synTreeModel); break; } List<? extends MetadataTable> connColumnSetList = null; // MOD by zshen for bug 16775 on 2010.12.28 for mssql case if (connPackage instanceof Catalog && anaPackage instanceof Schema) { for (Schema sche : CatalogHelper.getSchemas((Catalog) connPackage)) { if (sche.getName().equalsIgnoreCase(anaPackage.getName())) { connPackage = sche; // if (anaColumnSet instanceof TdTable) { // connColumnSetList = PackageHelper.getTables(sche); // } else { // connColumnSetList = PackageHelper.getViews(sche); // } // break; } } } boolean loadFromDb = connPackage.getOwnedElement().size() == 0; if (anaColumnSet instanceof TdTable) { connColumnSetList = DqRepositoryViewService.getTables(newDataProvider, connPackage, null, loadFromDb, false); // connColumnSetList = PackageHelper.getTables(connPackage); if (loadFromDb) { for (MetadataTable table : connColumnSetList) { PackageHelper.addMetadataTable(table, connPackage); } } } else { connColumnSetList = DqRepositoryViewService.getViews(newDataProvider, connPackage, null, loadFromDb, false); // connColumnSetList = PackageHelper.getViews(connPackage); if (loadFromDb) { for (MetadataTable table : connColumnSetList) { PackageHelper.addMetadataTable(table, connPackage); } } } ColumnSet connColumnSet = null; for (Object colSet : connColumnSetList) { if (((ColumnSet) colSet).getName().equalsIgnoreCase(anaColumnSet.getName())) { connColumnSet = (ColumnSet) colSet; break; } } if (connColumnSet == null) { SynTreeModel synTreeModel = new SynTreeModel(anaColumnSet); synTreeModel.setOldDataProvElement(anaColumnSet); synTreeModel.setNewDataProvElement(connPackage); modelInput.add(synTreeModel); continue; } synedEleMap.put(anaColumnSet, connColumnSet); } catch (Exception e) { log.error(e, e); e.printStackTrace(); } } } }