// ============================================================================
//
// 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.eclipse.emf.ecore.EObject;
import org.talend.commons.ui.runtime.exception.MessageBoxExceptionHandler;
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.TdTable;
import org.talend.dataprofiler.core.i18n.internal.DefaultMessagesImpl;
import orgomg.cwm.resource.relational.Catalog;
import orgomg.cwm.resource.relational.Schema;
/**
* @author rli
*
*/
public class TableFolderNode extends NamedColumnSetFolderNode<TdTable> {
/**
*
*/
public TableFolderNode() {
super(DefaultMessagesImpl.getString("TableFolderNode.tables")); //$NON-NLS-1$
}
@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<TdTable>());
} else {
Schema schema = SwitchHelpers.SCHEMA_SWITCH.doSwitch((EObject) getParent());
if (schema != null) {
loadChildrenLow(schema, null, schema, new ArrayList<TdTable>());
}
}
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<TdTable> getColumnSets(Catalog catalog, Schema schema) {
if (catalog != null) {
return CatalogHelper.getTables(catalog);
}
if (schema != null) {
return SchemaHelper.getTables(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<TdTable>> boolean loadColumnSets(Catalog catalog, Schema schema, Connection provider,
final T columnSets) {
try {
boolean ok = false;
assert provider != null : DefaultMessagesImpl.getString("TableFolderNode.noProvider"); //$NON-NLS-1$
assert catalog != null ^ schema != null : DefaultMessagesImpl.getString("TableFolderNode.catalogOrSchema", //$NON-NLS-1$
provider.getName());
if (catalog != null) {
ok = columnSets.addAll(DqRepositoryViewService.getTables(provider, catalog, null, true, true));
}
if (schema != null) {
ok = columnSets.addAll(DqRepositoryViewService.getTables(provider, schema, null, true, true));
}
return ok;
} catch (Exception e) {
MessageBoxExceptionHandler.process(e);
return false;
}
}
@Override
public int getFolderNodeType() {
return TABLEFOLDER_NODE_TYPE;
}
@Override
protected List<TdTable> getColumnSetsWithFilter(Catalog catalog, Schema schema) {
if (catalog != null) {
String tableFilter = ColumnSetHelper.getTableFilter(catalog);
return filterColumnSets(CatalogHelper.getTables(catalog), tableFilter);
}
if (schema != null) {
String tableFilter = ColumnSetHelper.getTableFilter(schema);
return filterColumnSets(SchemaHelper.getTables(schema), tableFilter);
}
return Collections.emptyList();
}
}