// ============================================================================ // // 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.cwm.compare.factory; import org.talend.core.model.metadata.builder.connection.Connection; import org.talend.core.model.metadata.builder.connection.MetadataTable; import org.talend.core.model.repository.IRepositoryViewObject; import org.talend.cwm.compare.factory.comparisonlevel.CatalogSchemaComparisonLevel; import org.talend.cwm.compare.factory.comparisonlevel.DataProviderComparisonLevel; import org.talend.cwm.compare.factory.comparisonlevel.FileMetadataTableComparisonLevel; import org.talend.cwm.compare.factory.comparisonlevel.RepositoryObjectComparisonLevel; import org.talend.cwm.compare.factory.comparisonlevel.SelectedLocalComparison; import org.talend.cwm.compare.factory.comparisonlevel.TableViewComparisonLevel; import org.talend.dq.nodes.DBColumnFolderRepNode; import org.talend.dq.nodes.DBConnectionFolderRepNode; import org.talend.dq.nodes.DBConnectionRepNode; import org.talend.dq.nodes.DBTableFolderRepNode; import org.talend.dq.nodes.DBViewFolderRepNode; /** * This factory use to create the <code>IComparisonLevel</code> object. */ public final class ComparisonLevelFactory { /** * DOC rli CompareLevelFactory constructor comment. */ private ComparisonLevelFactory() { } public static IComparisonLevel creatComparisonLevel(Object selectedObject) { IComparisonLevel comparisonLevel = null; if (selectedObject instanceof DBConnectionRepNode) { // MOD klliu 2011-02-24 bug 19015 IRepositoryViewObject resObject = ((DBConnectionRepNode) selectedObject).getObject(); comparisonLevel = new RepositoryObjectComparisonLevel(resObject); } else if (selectedObject instanceof DBTableFolderRepNode) { // MOD mzhao FolderNode param need to pass for later reloading from this folder. DBTableFolderRepNode dbFolderNode = (DBTableFolderRepNode) selectedObject; comparisonLevel = new CatalogSchemaComparisonLevel(dbFolderNode); } else if (selectedObject instanceof DBViewFolderRepNode) { // TODO tested for bug :TDQ-1533, but can't enter this if anymore, so this if maybe can be deleted. // MOC yyin 20121101, TDQ-6092, add a condition for the db which donot have catalog, like oracle. if ((null == ((DBViewFolderRepNode) selectedObject).getCatalog()) && (((DBViewFolderRepNode) selectedObject).getParent() instanceof DBConnectionFolderRepNode)) { // MOD yyi 2011-07-14 21512:the selected obj is db connection in this case IRepositoryViewObject resObject = ((DBViewFolderRepNode) selectedObject).getParent().getObject(); comparisonLevel = new RepositoryObjectComparisonLevel(resObject); } else { DBViewFolderRepNode dbFolderNode = (DBViewFolderRepNode) selectedObject; comparisonLevel = new CatalogSchemaComparisonLevel(dbFolderNode); } } else if (selectedObject instanceof DBColumnFolderRepNode) { DBColumnFolderRepNode dbFolderNode = (DBColumnFolderRepNode) selectedObject; comparisonLevel = new TableViewComparisonLevel(dbFolderNode); } else if (selectedObject instanceof MetadataTable) { MetadataTable resObject = (MetadataTable) selectedObject; comparisonLevel = new FileMetadataTableComparisonLevel(resObject); } else if (selectedObject instanceof Connection) { // MOD qiongli 2011-9-5 feature TDQ-3317. comparisonLevel = new DataProviderComparisonLevel(selectedObject); } else { comparisonLevel = null; } return comparisonLevel; } /** * * DOC mzhao Compare the selected two elements. * * @param selectedObject1 first selected element. * @param selectedObject2 second selected element. * @return IComparisonLevel */ public static IComparisonLevel creatComparisonLevel(Object selectedObject1, Object selectedObject2) { IComparisonLevel comparisonLevel = new SelectedLocalComparison(selectedObject1, selectedObject2); return comparisonLevel; } }