/*******************************************************************************
* Copyright (c) 2007-2008 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributor:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.seam.ui.views;
import java.util.Iterator;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
import org.hibernate.console.ConsoleConfiguration;
import org.hibernate.console.KnownConfigurations;
import org.hibernate.eclipse.console.model.ITableFilter;
import org.hibernate.eclipse.console.wizards.TableFilterView;
import org.hibernate.mapping.Table;
import org.hibernate.util.StringHelper;
import org.jboss.tools.seam.ui.views.DBTablesViewer.Catalog;
import org.jboss.tools.seam.ui.views.DBTablesViewer.Schema;
/**
* @author Dmitry Geraskov
*
*/
public abstract class DBTableFilterView extends TableFilterView {
private DBTablesViewer viewer;
public DBTableFilterView(Composite parent, int style) {
super( parent, style );
}
@Override
protected TreeViewer createTreeViewer() {
if (viewer == null){
viewer = new DBTablesViewer( tree );
}
return viewer;
}
@Override
protected void doRefreshTree() {
ConsoleConfiguration configuration = KnownConfigurations.getInstance()
.find( getConsoleConfigurationName() );
if(configuration!=null) {
viewer.setInput( configuration );
}
}
@Override
protected void toggle(boolean exclude) {
ISelection selection = viewer.getSelection();
ConsoleConfiguration configuration = KnownConfigurations.getInstance()
.find( getConsoleConfigurationName() );
if ( !selection.isEmpty() ) {
StructuredSelection ss = (StructuredSelection) selection;
Iterator iterator = ss.iterator();
while ( iterator.hasNext() ) {
Object sel = iterator.next();
ITableFilter filter = null;
if ( sel instanceof Table ) {
Table table = (Table) sel;
filter = revEngDef.createTableFilter(configuration);
if ( StringHelper.isNotEmpty( table.getName() ) ) {
filter.setMatchName( table.getName() );
}
if ( StringHelper.isNotEmpty( table.getCatalog() ) ) {
filter.setMatchCatalog( table.getCatalog() );
}
if ( StringHelper.isNotEmpty( table.getSchema() ) ) {
filter.setMatchSchema( table.getSchema() );
}
filter.setExclude( Boolean.valueOf( exclude ) );
} else if ( sel instanceof Schema ) { // assume its a schema!
Schema tc = (Schema) sel;
filter = revEngDef.createTableFilter(configuration);
String schema = tc.getName();
String catalog = tc.getParent().getName();
if(StringHelper.isNotEmpty(schema)) {
filter.setMatchSchema(schema);
}
if(StringHelper.isNotEmpty(catalog)) {
filter.setMatchCatalog(catalog);
}
filter.setExclude( Boolean.valueOf( exclude ) );
} else if ( sel instanceof Catalog ) { // assume its a catalog!
Catalog tc = (Catalog) sel;
filter = revEngDef.createTableFilter(configuration);
if(StringHelper.isNotEmpty(tc.getName())) {
filter.setMatchCatalog(tc.getName());
}
filter.setExclude( Boolean.valueOf( exclude ) );
}
if ( filter != null )
revEngDef.addTableFilter( filter );
}
} else {
ITableFilter filter = revEngDef.createTableFilter(configuration);
filter.setExclude( Boolean.valueOf( exclude ) );
revEngDef.addTableFilter( filter );
}
}
}