blob: 1fdf21bdd964e609a99d9cd57596a8267aec9ff7 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
package com.sun.star.wizards.db;
import com.sun.star.awt.XWindow;
import com.sun.star.beans.PropertyVetoException;
import com.sun.star.beans.UnknownPropertyException;
import com.sun.star.lang.IllegalArgumentException;
import com.sun.star.lang.WrappedTargetException;
import com.sun.star.sdbc.SQLException;
import com.sun.star.wizards.common.JavaTools;
import java.util.Vector;
import com.sun.star.awt.VclWindowPeerAttribute;
import com.sun.star.beans.Property;
import com.sun.star.beans.PropertyValue;
import com.sun.star.beans.XPropertySet;
import com.sun.star.container.ContainerEvent;
import com.sun.star.container.XContainer;
import com.sun.star.container.XContainerListener;
import com.sun.star.container.XHierarchicalNameAccess;
import com.sun.star.container.XIndexAccess;
import com.sun.star.container.XNameAccess;
import com.sun.star.lang.EventObject;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.sdbcx.KeyType;
import com.sun.star.sdbcx.XAppend;
import com.sun.star.sdbcx.XColumnsSupplier;
import com.sun.star.sdbcx.XDataDescriptorFactory;
import com.sun.star.sdbcx.XDrop;
import com.sun.star.sdbcx.XKeysSupplier;
import com.sun.star.uno.AnyConverter;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.wizards.common.Desktop;
import com.sun.star.wizards.common.Properties;
import com.sun.star.wizards.common.PropertyNames;
public class TableDescriptor extends CommandMetaData implements XContainerListener
{
XDataDescriptorFactory xTableDataDescriptorFactory;
XPropertySet xPropTableDataDescriptor;
private XNameAccess xNameAccessColumns;
private XIndexAccess xIndexAccessKeys;
public XDataDescriptorFactory xColumnDataDescriptorFactory;
XContainer xTableContainer;
XAppend xTableAppend;
XDrop xTableDrop;
private XAppend xKeyAppend;
private XDrop xKeyDrop;
private String[] sTableFilters = null;
private Vector columncontainer;
private Vector keycolumncontainer;
public XHierarchicalNameAccess xTableHierarchicalNameAccess;
private CommandName ComposedTableName;
private XAppend xKeyColAppend;
private XColumnsSupplier xKeyColumnSupplier;
private XPropertySet xKey;
private boolean bIDFieldisInserted = false;
private String IDFieldName = PropertyNames.EMPTY_STRING;
private String sColumnAlreadyExistsMessage = PropertyNames.EMPTY_STRING;
// private WizardDialog oUnoDialog;
private XWindow xWindow;
/**
* @param xMSF
*/
public TableDescriptor(XMultiServiceFactory xMSF, XWindow _xWindow, String _sColumnAlreadyExistsMessage)
{
super(xMSF);
columncontainer = new Vector();
keycolumncontainer = new Vector();
sColumnAlreadyExistsMessage = _sColumnAlreadyExistsMessage;
xWindow = _xWindow;
}
private class ColumnDescriptor
{
String Name;
XPropertySet xColPropertySet;
public ColumnDescriptor(XPropertySet _xColPropertySet, String _Name)
{
Name = _Name;
xColPropertySet = _xColPropertySet;
}
}
public boolean getConnection(PropertyValue[] _curPropertyValue)
{
if (super.getConnection(_curPropertyValue))
{
// XTablesSupplier xDBTables = (XTablesSupplier) UnoRuntime.queryInterface(XTablesSupplier.class, DBConnection);
// xTableNames = xDBTables.getTables();
xTableAppend = UnoRuntime.queryInterface( XAppend.class, getTableNamesAsNameAccess() );
xTableDrop = UnoRuntime.queryInterface( XDrop.class, getTableNamesAsNameAccess() );
xTableDataDescriptorFactory = UnoRuntime.queryInterface( XDataDescriptorFactory.class, getTableNamesAsNameAccess() );
xPropTableDataDescriptor = xTableDataDescriptorFactory.createDataDescriptor();
XColumnsSupplier xColumnsSupplier = UnoRuntime.queryInterface( XColumnsSupplier.class, xPropTableDataDescriptor );
xNameAccessColumns = xColumnsSupplier.getColumns();
xColumnDataDescriptorFactory = UnoRuntime.queryInterface( XDataDescriptorFactory.class, xNameAccessColumns );
try
{
createTypeInspector();
sTableFilters = (String[]) AnyConverter.toArray(getDataSourcePropertySet().getPropertyValue("TableFilter"));
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
return true;
}
else
{
return false;
}
}
private void removePrimaryKeys()
{
if (keycolumncontainer.size() > 0)
{
for (int i = (keycolumncontainer.size() - 1); i >= 0; i--)
{
keycolumncontainer.remove(i);
}
}
}
public boolean createPrimaryKeys(String[] _fieldnames, boolean _bAutoincrementation)
{
try
{
XKeysSupplier xKeySupplier = UnoRuntime.queryInterface(XKeysSupplier.class, xPropTableDataDescriptor);
xIndexAccessKeys = xKeySupplier.getKeys();
XDataDescriptorFactory xKeyFac = UnoRuntime.queryInterface(XDataDescriptorFactory.class, xIndexAccessKeys);
xKeyDrop = UnoRuntime.queryInterface(XDrop.class, xIndexAccessKeys);
xKeyAppend = UnoRuntime.queryInterface(XAppend.class, xKeyFac);
xKey = xKeyFac.createDataDescriptor();
xKey.setPropertyValue("Type", new Integer(KeyType.PRIMARY));
xKeyColumnSupplier = UnoRuntime.queryInterface(XColumnsSupplier.class, xKey);
XDataDescriptorFactory xKeyColFac = UnoRuntime.queryInterface(XDataDescriptorFactory.class, xKeyColumnSupplier.getColumns());
xKeyColAppend = UnoRuntime.queryInterface(XAppend.class, xKeyColFac);
removePrimaryKeys();
for (int i = 0; i < _fieldnames.length; i++)
{
XPropertySet xKeyColPropertySet = xKeyColFac.createDataDescriptor();
xKeyColPropertySet.setPropertyValue(PropertyNames.PROPERTY_NAME, _fieldnames[i]);
keycolumncontainer.add(xKeyColPropertySet);
XPropertySet xColPropertySet = null;
if (hasByName(_fieldnames[i]))
{
xColPropertySet = getByName(_fieldnames[i]);
}
else
{
xColPropertySet = addPrimaryKeyColumn(_fieldnames[i]);
}
xColPropertySet.setPropertyValue("IsNullable", new Integer(com.sun.star.sdbc.ColumnValue.NO_NULLS));
if (_bAutoincrementation)
{
int nDataType = oTypeInspector.getAutoIncrementIndex(xColPropertySet);
if (nDataType != oTypeInspector.INVALID)
{
if (xColPropertySet.getPropertySetInfo().hasPropertyByName("IsAutoIncrement"))
{
xColPropertySet.setPropertyValue("Type", new Integer(nDataType));
xColPropertySet.setPropertyValue("IsAutoIncrement", Boolean.valueOf(_bAutoincrementation));
}
}
}
modifyColumn(_fieldnames[i], xColPropertySet);
}
return true;
}
catch (UnknownPropertyException e)
{
e.printStackTrace(System.out);
}
catch (PropertyVetoException e)
{
e.printStackTrace(System.out);
}
catch (IllegalArgumentException e)
{
e.printStackTrace(System.out);
}
catch (WrappedTargetException e)
{
e.printStackTrace(System.out);
}
return false;
}
public boolean isColunnNameDuplicate(XNameAccess _xColumns, XPropertySet _xToBeAppendedPropertySet)
{
try
{
String sColumnName = AnyConverter.toString(_xToBeAppendedPropertySet.getPropertyValue(PropertyNames.PROPERTY_NAME));
if (_xColumns.hasByName(sColumnName))
{
String sMessage = JavaTools.replaceSubString(sColumnAlreadyExistsMessage, sColumnName, "%FIELDNAME");
showMessageBox("ErrorBox", VclWindowPeerAttribute.OK, sMessage);
return true;
}
return false;
}
catch (Exception ex)
{
ex.printStackTrace(System.out);
return false;
}
}
/**
* creates the table under the passed name
* @param _catalogname
* @param _schemaname
* @param _tablename is made unique if necessary
* @param _fieldnames
* @return true or false to indicate successful creation or not
*/
public boolean createTable(String _catalogname, String _schemaname, String _tablename, String[] _fieldnames)
{
boolean breturn = true;
try
{
XAppend xAppendColumns = UnoRuntime.queryInterface(XAppend.class, xNameAccessColumns);
for (int i = 0; i < columncontainer.size(); i++)
{
XPropertySet xColPropertySet = getByIndex(i);
if (!isColunnNameDuplicate(xNameAccessColumns, xColPropertySet))
{
xAppendColumns.appendByDescriptor(xColPropertySet); //xColPropertySet.setPropertyValue("Type", 32423)
}
else
{
breturn = false;
}
}
if (breturn)
{
assignTableProperty(PropertyNames.PROPERTY_NAME, _tablename);
assignTableProperty("CatalogName", _catalogname);
assignTableProperty("SchemaName", _schemaname);
xTableContainer = UnoRuntime.queryInterface(XContainer.class, getTableNamesAsNameAccess());
xTableContainer.addContainerListener(this);
if (keycolumncontainer.size() > 0)
{
for (int i = 0; i < keycolumncontainer.size(); i++)
{
XPropertySet xKeyColPropertySet = (XPropertySet) keycolumncontainer.get(i);
if (!isColunnNameDuplicate(xKeyColumnSupplier.getColumns(), xKeyColPropertySet))
{
xKeyColAppend.appendByDescriptor(xKeyColPropertySet);
}
else
{
breturn = false;
}
}
if (breturn)
{
xKeyAppend.appendByDescriptor(xKey);
}
}
if (breturn)
{
// TODO: LLA: describe what is he doing here.
xTableAppend.appendByDescriptor(xPropTableDataDescriptor);
}
}
}
catch (SQLException oSQLException)
{
super.callSQLErrorMessageDialog(oSQLException, xWindow);
breturn = false;
}
catch (Exception e)
{
e.printStackTrace(System.out);
breturn = false;
}
if (!breturn)
{
removeAllColumnsFromDescriptor(_tablename);
this.removePrimaryKeys();
}
return breturn;
}
private boolean removeAllColumnsFromDescriptor(String _tablename)
{
try
{
xPropTableDataDescriptor.setPropertyValue(PropertyNames.PROPERTY_NAME, PropertyNames.EMPTY_STRING);
if ((xKeyDrop != null) && (xIndexAccessKeys != null))
{
int icount = xIndexAccessKeys.getCount();
if (icount > 0)
{
for (int i = xIndexAccessKeys.getCount() - 1; i >= 0; i--)
{
xKeyDrop.dropByIndex(i);
}
}
}
XDrop xColumnDrop = UnoRuntime.queryInterface(XDrop.class, xNameAccessColumns);
for (int i = xNameAccessColumns.getElementNames().length - 1; i >= 0; i--)
{
xColumnDrop.dropByIndex(i);
}
if (xTableDrop != null)
{
if (getTableNamesAsNameAccess().hasByName(_tablename))
{
xTableDrop.dropByName(_tablename);
}
}
if (bIDFieldisInserted)
{
this.dropColumnbyName(this.IDFieldName);
bIDFieldisInserted = false;
}
return false;
}
catch (SQLException oSQLException)
{
super.callSQLErrorMessageDialog(oSQLException, xWindow);
}
catch (Exception e1)
{
e1.printStackTrace(System.out);
}
return false;
}
public boolean createTable(String _catalogname, String _schemaname, String _tablename, String[] _keycolumnnames, boolean _bAutoincrementation, String[] _fieldnames)
{
if (createPrimaryKeys(_keycolumnnames, _bAutoincrementation))
{
return createTable(_catalogname, _schemaname, _tablename, _fieldnames);
}
return false;
}
private void assignTableProperty(String _spropname, String _svalue)
{
if (_svalue != null)
{
if (!_svalue.equals(PropertyNames.EMPTY_STRING))
{
try
{
xPropTableDataDescriptor.setPropertyValue(_spropname, _svalue);
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
}
}
public boolean modifyColumnName(String _soldname, String _snewname)
{
try
{
return modifyColumn(_soldname, PropertyNames.PROPERTY_NAME, _snewname);
}
catch (Exception e)
{
e.printStackTrace(System.out);
showMessageBox("ErrorBox", VclWindowPeerAttribute.OK, e.getMessage());
return false;
}
}
public boolean modifyColumn(String _sname, String _spropname, Object _oValue)
{
try
{
if (this.columncontainer.size() > 0)
{
for (int i = 0; i < columncontainer.size(); i++)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(i);
if (oColumnDescriptor.Name.equals(_sname))
{
oColumnDescriptor.xColPropertySet.setPropertyValue(_spropname, _oValue);
if (_spropname.equals(PropertyNames.PROPERTY_NAME))
{
oColumnDescriptor.Name = (String) _oValue;
}
columncontainer.remove(i);
columncontainer.insertElementAt(oColumnDescriptor, i);
return true;
}
}
}
}
catch (UnknownPropertyException e)
{
e.printStackTrace(System.out);
}
catch (PropertyVetoException e)
{
e.printStackTrace(System.out);
}
catch (IllegalArgumentException e)
{
e.printStackTrace(System.out);
}
catch (WrappedTargetException e)
{
e.printStackTrace(System.out);
}
return false;
}
public boolean modifyColumn(String _sname, XPropertySet _xColPropertySet)
{
try
{
if (this.columncontainer.size() > 0)
{
for (int i = 0; i < columncontainer.size(); i++)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(i);
if (oColumnDescriptor.Name.equals(_sname))
{
oColumnDescriptor.xColPropertySet = _xColPropertySet;
oColumnDescriptor.Name = (String) _xColPropertySet.getPropertyValue(PropertyNames.PROPERTY_NAME);
columncontainer.remove(i);
columncontainer.insertElementAt(oColumnDescriptor, i);
return true;
}
}
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
return false;
}
public void dropColumnbyName(String _sname)
{
try
{
if (columncontainer.size() > 0)
{
for (int i = 0; i < columncontainer.size(); i++)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(i);
if (oColumnDescriptor != null)
{
if (oColumnDescriptor.Name.equals(_sname))
{
columncontainer.remove(i);
}
}
}
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
public String[] getColumnNames()
{
if (columncontainer.size() > 0)
{
try
{
String[] fieldnames = new String[columncontainer.size()];
for (int i = 0; i < columncontainer.size(); i++)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(i);
fieldnames[i] = oColumnDescriptor.Name;
}
return fieldnames;
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
}
return new String[]
{
};
}
private boolean hasByName(String _fieldname)
{
try
{
if (columncontainer.size() > 0)
{
for (int i = 0; i < columncontainer.size(); i++)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(i);
if (oColumnDescriptor.Name.equals(_fieldname))
{
return true;
}
}
}
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
return false;
}
private ColumnDescriptor getColumnDescriptorByName(String _fieldname)
{
try
{
if (this.columncontainer.size() > 0)
{
for (int i = 0; i < columncontainer.size(); i++)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(i);
if (oColumnDescriptor.Name.equals(_fieldname))
{
return oColumnDescriptor;
}
}
}
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
return null;
}
public XPropertySet getByName(String _fieldname)
{
ColumnDescriptor oColumnDescriptor = getColumnDescriptorByName(_fieldname);
if (oColumnDescriptor != null)
{
return oColumnDescriptor.xColPropertySet;
}
else
{
return null;
}
}
private XPropertySet getByIndex(int _index)
{
try
{
if (columncontainer.size() > _index)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(_index);
return oColumnDescriptor.xColPropertySet;
}
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
return null;
}
public XPropertySet clonePropertySet(String _snewname, XPropertySet _xnewPropertySet)
{
XPropertySet xRetPropertySet = xColumnDataDescriptorFactory.createDataDescriptor();
try
{
if (hasByName(_snewname))
{
Object oColumn = getByName(_snewname);
XPropertySet xPropertySet = UnoRuntime.queryInterface(XPropertySet.class, oColumn);
Property[] aColProperties = xPropertySet.getPropertySetInfo().getProperties();
for (int i = 0; i < aColProperties.length; i++)
{
String sPropName = aColProperties[i].Name;
Object oColValue = _xnewPropertySet.getPropertyValue(sPropName);
xRetPropertySet.setPropertyValue(sPropName, oColValue);
}
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
return xRetPropertySet;
}
public boolean addColumn(PropertyValue[] _aNewPropertyValues)
{
try
{
String sname = (String) Properties.getPropertyValue(_aNewPropertyValues, PropertyNames.PROPERTY_NAME);
if (!hasByName(sname))
{
ColumnPropertySet oPropertySet = new ColumnPropertySet(oTypeInspector, xColumnDataDescriptorFactory.createDataDescriptor());
oPropertySet.assignPropertyValues(_aNewPropertyValues, true);
ColumnDescriptor oColumnDescriptor = new ColumnDescriptor(oPropertySet.xPropertySet, sname);
this.columncontainer.add(oColumnDescriptor);
return true;
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
return false;
}
public boolean moveColumn(int _nOldIndex, int _nNewIndex)
{
try
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) this.columncontainer.get(_nOldIndex);
this.columncontainer.remove(_nOldIndex);
columncontainer.add(_nNewIndex, oColumnDescriptor);
return true;
}
catch (Exception e)
{
e.printStackTrace(System.out);
return false;
}
}
public boolean addColumn(String _columnname, XPropertySet _xNewColPropertySet)
{
try
{
if (!hasByName(_columnname))
{
if (_columnname.equals(PropertyNames.EMPTY_STRING))
{
return false;
}
else
{
ColumnPropertySet oPropertySet = new ColumnPropertySet(oTypeInspector, xColumnDataDescriptorFactory.createDataDescriptor());
oPropertySet.assignNewPropertySet(_columnname, _xNewColPropertySet);
ColumnDescriptor oColumnDescriptor = new ColumnDescriptor(oPropertySet.xPropertySet, _columnname);
columncontainer.add(oColumnDescriptor);
return true;
}
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
return false;
}
public XPropertySet addPrimaryKeyColumn(String _columnname)
{
try
{
if (!hasByName(_columnname))
{
try
{
XPropertySet xColPropertySet = xColumnDataDescriptorFactory.createDataDescriptor();
IDFieldName = Desktop.getUniqueName(getColumnNames(), _columnname, PropertyNames.EMPTY_STRING);
xColPropertySet.setPropertyValue(PropertyNames.PROPERTY_NAME, IDFieldName);
int nDataType = oTypeInspector.convertDataType(com.sun.star.sdbc.DataType.INTEGER);
xColPropertySet.setPropertyValue("Type", new Integer(nDataType));
xColPropertySet.setPropertyValue("TypeName", oTypeInspector.getDefaultTypeName(nDataType, null));
ColumnDescriptor oColumnDescriptor = new ColumnDescriptor(xColPropertySet, IDFieldName);
this.columncontainer.add(0, oColumnDescriptor);
this.bIDFieldisInserted = true;
return xColPropertySet;
}
catch (RuntimeException e1)
{
e1.printStackTrace(System.out);
}
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
return null;
}
public String[] getNonBinaryFieldNames()
{
Vector NonBinaryFieldNameVector = new Vector();
try
{
for (int i = 0; i < columncontainer.size(); i++)
{
ColumnDescriptor oColumnDescriptor = (ColumnDescriptor) columncontainer.get(i);
XPropertySet xColPropertySet = getByName(oColumnDescriptor.Name);
Property[] aProperties = xColPropertySet.getPropertySetInfo().getProperties();
int itype;
try
{
itype = AnyConverter.toInt(xColPropertySet.getPropertyValue("Type"));
if (!isBinaryDataType(itype))
{
NonBinaryFieldNameVector.addElement(oColumnDescriptor.Name);
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
}
catch (RuntimeException e)
{
e.printStackTrace(System.out);
}
String[] sbinaryfieldnames = new String[NonBinaryFieldNameVector.size()];
NonBinaryFieldNameVector.toArray(sbinaryfieldnames);
return sbinaryfieldnames;
}
public String getComposedTableName(String _scatalogname, String _sschemaname, String _stablename)
{
ComposedTableName = new CommandName(this, _scatalogname, _sschemaname, _stablename, false);
return ComposedTableName.getComposedName();
}
public String getComposedTableName()
{
if (ComposedTableName != null)
{
return this.ComposedTableName.getComposedName();
}
else
{
return null;
}
}
/* (non-Javadoc)
* @see com.sun.star.container.XContainerListener#elementInserted(com.sun.star.container.ContainerEvent)
*/
public void elementInserted(ContainerEvent arg0)
{
try
{
XPropertySet xTablePropertySet = UnoRuntime.queryInterface(XPropertySet.class, arg0.Element);
String stablename = AnyConverter.toString(xTablePropertySet.getPropertyValue(PropertyNames.PROPERTY_NAME));
String sschemaname = AnyConverter.toString(xPropTableDataDescriptor.getPropertyValue("SchemaName"));
String scatalogname = AnyConverter.toString(xPropTableDataDescriptor.getPropertyValue("CatalogName"));
ComposedTableName = new CommandName(this, scatalogname, sschemaname, stablename, false);
appendTableNameToFilter(ComposedTableName.getComposedName());
}
catch (Exception e)
{
e.printStackTrace(System.out);
}
}
/* (non-Javadoc)
* @see com.sun.star.container.XContainerListener#elementRemoved(com.sun.star.container.ContainerEvent)
*/
public void elementRemoved(ContainerEvent arg0)
{
}
/* (non-Javadoc)
* @see com.sun.star.container.XContainerListener#elementReplaced(com.sun.star.container.ContainerEvent)
*/
public void elementReplaced(ContainerEvent arg0)
{
}
/* (non-Javadoc)
* @see com.sun.star.lang.XEventListener#disposing(com.sun.star.lang.EventObject)
*/
public void disposing(EventObject arg0)
{
}
/**
* @param _stablename
* @return
*/
public boolean appendTableNameToFilter(String _scomposedtablename)
{
boolean bhastoinsert = true;
for (int i = 0; i < sTableFilters.length; i++)
{
if (sTableFilters[i].compareTo("%") > -1)
{
if (sTableFilters[i].endsWith("." + _scomposedtablename))
{
bhastoinsert = false;
}
else if (sTableFilters[i].length() == 1)
{
bhastoinsert = false;
}
}
else if (sTableFilters[i].equals(_scomposedtablename))
{
bhastoinsert = false;
}
if (!bhastoinsert)
{
break;
}
}
if (bhastoinsert)
{
String[] sNewTableFilters = new String[sTableFilters.length + 1];
System.arraycopy(sTableFilters, 0, sNewTableFilters, 0, sTableFilters.length);
sNewTableFilters[sTableFilters.length] = _scomposedtablename;
sTableFilters = sNewTableFilters;
try
{
getDataSourcePropertySet().setPropertyValue("TableFilter", sTableFilters);
}
catch (Exception e)
{
e.printStackTrace(System.out);
bhastoinsert = false;
}
}
return bhastoinsert;
}
}