// ============================================================================ // // 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.model.nodes.foldernode; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.apache.log4j.Logger; import org.eclipse.emf.ecore.EObject; import org.talend.core.model.metadata.builder.connection.Connection; 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.SchemaHelper; import org.talend.cwm.helper.SwitchHelpers; import org.talend.cwm.relational.TdView; import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl; import orgomg.cwm.resource.relational.Catalog; import orgomg.cwm.resource.relational.Schema; /** * @author rli * */ public class ViewFolderNode extends NamedColumnSetFolderNode<TdView> { protected static Logger log = Logger.getLogger(ViewFolderNode.class); /** * @param name */ public ViewFolderNode() { super(DefaultMessagesImpl.getString("ViewFolderNode.views")); //$NON-NLS-1$ } /* * (non-Javadoc) * * @see org.talend.dataprofiler.core.model.nodes.AbstractFolderNode#loadChildren() */ @Override public void loadChildren() { // MODSCA 2008-03-14 load children also when no catalog is given, but a schema exists (e.g. for DB2 database) Catalog catalog = SwitchHelpers.CATALOG_SWITCH.doSwitch((EObject) getParent()); if (catalog != null) { loadChildrenLow(catalog, catalog, null, new ArrayList<TdView>()); } else { Schema schema = SwitchHelpers.SCHEMA_SWITCH.doSwitch((EObject) getParent()); if (schema != null) { loadChildrenLow(schema, null, schema, new ArrayList<TdView>()); } } super.loadChildren(); } /* * (non-Javadoc) * * @see * org.talend.dataprofiler.core.model.nodes.AbstractFolderNode#getColumnSets(org.talend.cwm.relational.TdCatalog, * org.talend.cwm.relational.TdSchema) */ @Override protected List<TdView> getColumnSets(Catalog catalog, Schema schema) { if (catalog != null) { return CatalogHelper.getViews(catalog); } if (schema != null) { return SchemaHelper.getViews(schema); } return Collections.emptyList(); } /* * (non-Javadoc) * * @see * org.talend.dataprofiler.core.model.nodes.AbstractFolderNode#loadColumnSets(org.talend.cwm.relational.TdCatalog, * org.talend.cwm.relational.TdSchema, org.talend.cwm.softwaredeployment.TdDataProvider, java.util.List) */ @Override protected <T extends List<TdView>> boolean loadColumnSets(Catalog catalog, Schema schema, Connection provider, final T columnSets) { try { boolean ok = false; assert provider != null : DefaultMessagesImpl.getString("ViewFolderNode.noProviderForViews"); //$NON-NLS-1$ assert catalog != null ^ schema != null : DefaultMessagesImpl.getString("ViewFolderNode.catalogOrSchemaExist",//$NON-NLS-1$ provider.getName()); if (catalog != null) { ok = columnSets.addAll(DqRepositoryViewService.getViews(provider, catalog, null, true, true)); } if (schema != null) { ok = columnSets.addAll(DqRepositoryViewService.getViews(provider, schema, null, true, true)); } return ok; } catch (Exception e) { log.error(e, e); return false; } } @Override public int getFolderNodeType() { return VIEWFOLDER_NODE_TYPE; } @Override protected List<TdView> getColumnSetsWithFilter(Catalog catalog, Schema schema) { if (catalog != null) { String viewFilter = ColumnSetHelper.getViewFilter(catalog); return filterColumnSets(CatalogHelper.getViews(catalog), viewFilter); } if (schema != null) { String viewFilter = ColumnSetHelper.getViewFilter(schema); return filterColumnSets(SchemaHelper.getViews(schema), viewFilter); } return Collections.emptyList(); } }