// ============================================================================ // // 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.helper; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.ecore.EObject; import org.talend.cwm.helper.SwitchHelpers; import org.talend.cwm.relational.TdTable; import org.talend.dataprofiler.core.model.nodes.foldernode.ColumnFolderNode; import org.talend.dataprofiler.core.model.nodes.foldernode.TableFolderNode; import org.talend.dataprofiler.core.model.nodes.foldernode.ViewFolderNode; import org.talend.dq.nodes.foldernode.IFolderNode; import orgomg.cwm.resource.relational.ColumnSet; /** * @author rli */ public final class FolderNodeHelper { private FolderNodeHelper() { } private static Map<EObject, IFolderNode[]> catalogFolderNodeMap = new HashMap<EObject, IFolderNode[]>(); public static IFolderNode[] getFolderNodes(EObject eObject) { IFolderNode[] folderNodes = catalogFolderNodeMap.get(eObject); if (folderNodes != null) { return folderNodes; } else if (SwitchHelpers.CATALOG_SWITCH.doSwitch(eObject) != null) { return createTableViewNodes(eObject); } else if (SwitchHelpers.SCHEMA_SWITCH.doSwitch(eObject) != null) { return createTableViewNodes(eObject); } else if (SwitchHelpers.TABLE_SWITCH.doSwitch(eObject) != null) { return createColumFolderNodes(eObject); } else if (SwitchHelpers.VIEW_SWITCH.doSwitch(eObject) != null) { return createColumFolderNodes(eObject); } return folderNodes == null ? new IFolderNode[] {} : folderNodes; } /** * * MOD mzhao bug 8567, 2010-03-29 Alter the first parameter type from EObject to Package. * * @param eObject * @param columnSet * @return */ public static IFolderNode getFolderNode(orgomg.cwm.objectmodel.core.Package eObject, ColumnSet columnSet) { IFolderNode[] folderNodes = catalogFolderNodeMap.get(eObject); if (folderNodes == null) { folderNodes = createTableViewNodes(eObject); } TdTable doSwitch = SwitchHelpers.TABLE_SWITCH.doSwitch(columnSet); if (doSwitch != null) { return folderNodes[0]; } else { return folderNodes[1]; } } /** * * DOC mzhao Comment method "getFolderNode". * * @param eObject * @return */ public static IFolderNode getTableFolderNode(EObject eObject) { IFolderNode[] folderNodes = catalogFolderNodeMap.get(eObject); if (folderNodes == null) { folderNodes = createTableViewNodes(eObject); } return folderNodes[0]; } public static IFolderNode getViewFolderNode(EObject eObject) { IFolderNode[] folderNodes = catalogFolderNodeMap.get(eObject); if (folderNodes == null) { folderNodes = createTableViewNodes(eObject); } return folderNodes[1]; } /** * @param catalog * @return */ private static IFolderNode[] createTableViewNodes(EObject eObject) { IFolderNode[] folderNodes; IFolderNode tabbleFolderNode = new TableFolderNode(); tabbleFolderNode.setParent(eObject); IFolderNode viewFolderNode = new ViewFolderNode(); viewFolderNode.setParent(eObject); folderNodes = new IFolderNode[] { tabbleFolderNode, viewFolderNode }; catalogFolderNodeMap.put(eObject, folderNodes); return folderNodes; } private static IFolderNode[] createColumFolderNodes(org.eclipse.emf.ecore.EObject eObject) { IFolderNode[] folderNodes; IFolderNode columnFolderNode = new ColumnFolderNode(); columnFolderNode.setParent(eObject); folderNodes = new IFolderNode[] { columnFolderNode }; catalogFolderNodeMap.put(eObject, folderNodes); return folderNodes; } public static Map<EObject, IFolderNode[]> getCatalogFolderNodeMap() { return catalogFolderNodeMap; } }