Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.db / org.gvsig.fmap.dal.db.jdbc / src / main / java / org / gvsig / fmap / dal / store / jdbc2 / spi / JDBCServerExplorerBase.java @ 45156

History | View | Annotate | Download (22.9 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2020 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.fmap.dal.store.jdbc2.spi;
25

    
26
import java.io.File;
27
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
28
import java.util.ArrayList;
29
import java.util.Arrays;
30
import java.util.Collections;
31
import java.util.List;
32
import java.util.Map;
33
import org.apache.commons.codec.binary.Hex;
34
import org.apache.commons.collections.map.LRUMap;
35
import org.apache.commons.lang3.BooleanUtils;
36
import org.apache.commons.lang3.ObjectUtils;
37
import org.apache.commons.lang3.StringUtils;
38
import org.apache.commons.lang3.tuple.ImmutablePair;
39
import org.apache.commons.lang3.tuple.Pair;
40
import org.gvsig.fmap.dal.DALLocator;
41
import org.gvsig.fmap.dal.DataManager;
42
import org.gvsig.fmap.dal.DataStore;
43
import org.gvsig.fmap.dal.DataStoreParameters;
44
import org.gvsig.fmap.dal.DatabaseWorkspaceManager;
45
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_RESOURCES_NAME;
46
import org.gvsig.fmap.dal.NewDataStoreParameters;
47
import org.gvsig.fmap.dal.exception.CloseException;
48
import org.gvsig.fmap.dal.exception.DataException;
49
import org.gvsig.fmap.dal.exception.InitializeException;
50
import org.gvsig.fmap.dal.exception.OpenException;
51
import org.gvsig.fmap.dal.exception.RemoveException;
52
import org.gvsig.fmap.dal.feature.EditableFeatureType;
53
import org.gvsig.fmap.dal.feature.FeatureType;
54
import org.gvsig.fmap.dal.SQLBuilder;
55
import org.gvsig.fmap.dal.SQLBuilder.Privilege;
56
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
57
import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
58
import org.gvsig.fmap.dal.serverexplorer.db.spi.AbstractDBServerExplorer;
59
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
60
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
61
import org.gvsig.fmap.dal.spi.DataServerExplorerProviderServices;
62
import org.gvsig.fmap.dal.store.jdbc.JDBCConnectionParameters;
63
import org.gvsig.fmap.dal.store.jdbc.JDBCNewStoreParameters;
64
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
65
import org.gvsig.fmap.dal.store.jdbc.JDBCStoreParameters;
66
import org.gvsig.fmap.dal.store.jdbc.exception.JDBCExecuteSQLException;
67
import org.gvsig.fmap.dal.store.jdbc2.JDBCHelper;
68
import org.gvsig.fmap.dal.store.jdbc2.OperationsFactory;
69
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.CanCreateTablesOperation;
70
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.CreateTableOperation;
71
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.FetchFeatureTypeOperation;
72
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ListTablesOperation;
73
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.DropTableOperation;
74
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.ExecuteOperation;
75
import org.gvsig.fmap.dal.store.jdbc2.spi.operations.UpdateTableStatisticsOperation;
76
import org.gvsig.tools.exception.BaseException;
77
import org.gvsig.tools.resourcesstorage.EmptyResourcesStorage;
78
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
79
import org.gvsig.tools.util.CachedValue;
80
import org.slf4j.Logger;
81
import org.slf4j.LoggerFactory;
82

    
83

    
84
@SuppressWarnings("UseSpecificCatch")
85
public class JDBCServerExplorerBase extends AbstractDBServerExplorer implements JDBCServerExplorer {
86

    
87
    private static final Logger LOG = LoggerFactory.getLogger(JDBCServerExplorerBase.class);
88

    
89
    protected JDBCHelper helper = null;
90
    
91
    private Boolean canAdd;
92
    
93
    private static final Map<String, CachedValue<List<JDBCStoreParameters>>> CACHED_TABLES = Collections.synchronizedMap(new LRUMap(10));
94
     
95
    
96
    private class CachedTablesValue extends CachedValue<List<JDBCStoreParameters>> {
97
        
98
        private final int mode;
99
        private final JDBCStoreParameters baseParams;
100
        private final boolean informationTables;
101
      
102
        public CachedTablesValue(int mode, JDBCStoreParameters baseParams, boolean informationTables) {
103
            this.mode = mode;
104
            this.baseParams = baseParams;
105
            this.informationTables = informationTables;
106
        }
107
      
108
        public CachedTablesValue(int mode, JDBCStoreParameters baseParams, boolean informationTables, long expireTime) {
109
            this.mode = mode;
110
            this.setExpireTime(expireTime);
111
            this.baseParams = baseParams;
112
            this.informationTables = informationTables;
113
        }
114
      
115
        @Override
116
        protected void reload() {
117
            List<JDBCStoreParameters> tables = null;
118
            try {
119
                ListTablesOperation listTables = helper.getOperations().createListTables(
120
                    this.mode, baseParams, informationTables
121
                );
122
                tables = (List<JDBCStoreParameters>) listTables.perform();
123
            } catch(Exception ex) {
124
                LOG.debug("Can't reload cached list of tables.",ex);
125
            }
126
            this.setValue(tables);
127
        }
128
    }
129

    
130
    public JDBCServerExplorerBase(
131
            JDBCServerExplorerParameters parameters,
132
            DataServerExplorerProviderServices services,
133
            JDBCHelper helper
134
        ) throws InitializeException {
135
        super(parameters, services);
136
        this.helper = helper;
137
    }
138

    
139
    @Override
140
    public String getProviderName() {
141
        return this.getHelper().getProviderName();
142
    }
143

    
144
    @Override
145
    public String getStoreName() {
146
        return this.getHelper().getProviderName();
147
    }
148

    
149
    protected DataManagerProviderServices getManager() {
150
        return (DataManagerProviderServices) DALLocator.getDataManager();
151
    }
152
        
153
    @Override
154
    public JDBCServerExplorerParameters getParameters() {
155
        return (JDBCServerExplorerParameters) super.getParameters();
156
    }
157
    
158
    @Override
159
    public boolean closeResourceRequested(ResourceProvider resource) {
160
        this.getHelper().getResulSetControler().pack();
161
        return true;
162
    }
163

    
164
    @Override
165
    public void resourceChanged(ResourceProvider resource) {
166
        // Nothing to do
167
    }
168

    
169
    protected JDBCHelper getHelper() {
170
        return helper;
171
    }
172
    
173
    protected OperationsFactory getOperations() {
174
        return this.getHelper().getOperations();
175
    }
176

    
177
    @Override
178
    public DataStore open(DataStoreParameters params) throws DataException {
179
        checkIsMine(params);
180
        DataStore store = super.open(params);
181
        return store;
182
    }
183

    
184
    @Override
185
    public List list(int mode) throws DataException {
186
        boolean informationTables = BooleanUtils.isTrue(
187
                this.getParameters().getShowInformationDBTables()
188
        );
189
        
190
        JDBCStoreParameters baseParams = this.getOpenParameters();
191

    
192
        String key = buildKeyForCachedTables(mode, baseParams, informationTables);
193
        CachedValue<List<JDBCStoreParameters>> tablesValue = CACHED_TABLES.get(key);
194
        List<JDBCStoreParameters> tables = null;
195
        if(tablesValue != null){
196
            tables = tablesValue.get();
197
        }
198
        if( tables != null ) {
199
            return tables;
200
        }
201
        tablesValue = new CachedTablesValue(mode, baseParams, informationTables, 60000); //60"
202
        CACHED_TABLES.put(key, tablesValue);
203
        tables = tablesValue.get();
204
        return tables;
205
    }
206

    
207
    public String buildKeyForCachedTables(int mode, JDBCStoreParameters params, boolean informationTables) {
208
        JDBCStoreParameters clonedParams = params.getCopy();
209
        clonedParams.setSchema(null); //ListTableOperation no usa el schema
210
        
211
        StringBuilder builder = new StringBuilder();
212
        builder.append(String.valueOf(mode));
213
        builder.append(Hex.encodeHex(clonedParams.toByteArray()));
214
        builder.append(String.valueOf(informationTables));
215
        String key = builder.toString();
216
        return key;
217
    }
218
    
219

    
220
    @Override
221
    public void remove(DataStoreParameters theParams) throws RemoveException {
222

    
223
        JDBCStoreParameters params = (JDBCStoreParameters) theParams;
224
        DropTableOperation removeTable = this.getOperations().createDropTable(
225
                this.getOperations().createTableReference(params)
226
        );
227
        if((Boolean)removeTable.perform()) {
228
            boolean informationTables = BooleanUtils.isTrue(
229
                this.getParameters().getShowInformationDBTables()
230
            );
231
            CACHED_TABLES.remove(buildKeyForCachedTables(MODE_ALL, params, informationTables));
232
            CACHED_TABLES.remove(buildKeyForCachedTables(MODE_FEATURE, params, informationTables));
233
            CACHED_TABLES.remove(buildKeyForCachedTables(MODE_GEOMETRY, params, informationTables));
234
        }
235
    }
236

    
237
    @Override
238
    public JDBCStoreParameters getOpenParameters() throws DataException {
239
        JDBCServerExplorerParameters parameters = getParameters();
240
        JDBCStoreParameters params = this.helper.createOpenStoreParameters();
241
        params.setHost(parameters.getHost());
242
        params.setPort(parameters.getPort());
243
        params.setDBName(parameters.getDBName());
244
        params.setUser(parameters.getUser());
245
        params.setPassword(parameters.getPassword());
246
        params.setCatalog(parameters.getCatalog());
247
        params.setSchema(parameters.getSchema());
248
        params.setJDBCDriverClassName(parameters.getJDBCDriverClassName());
249
        params.setUrl(parameters.getUrl());
250
        if( parameters instanceof FilesystemStoreParameters ) {
251
            File f = ((FilesystemStoreParameters) parameters).getFile();
252
            ((FilesystemStoreParameters) params).setFile(f);
253
        }
254
        return params;
255
    }
256

    
257
    @Override
258
    public NewDataStoreParameters getAddParameters(String storeName)
259
            throws DataException {
260
        JDBCNewStoreParameters params = this.getAddParameters();
261
        params.setTable(storeName);
262
        return params;
263
    }
264

    
265
    @Override
266
    public JDBCNewStoreParameters getAddParameters() throws DataException {
267
        JDBCServerExplorerParameters parameters = getParameters();
268
        JDBCNewStoreParameters params = this.helper.createNewStoreParameters();
269
        params.setHost(parameters.getHost());
270
        params.setPort(parameters.getPort());
271
        params.setDBName(parameters.getDBName());
272
        params.setUser(parameters.getUser());
273
        params.setPassword(parameters.getPassword());
274
        params.setCatalog(parameters.getCatalog());
275
        params.setSchema(parameters.getSchema());
276
        params.setJDBCDriverClassName(parameters.getJDBCDriverClassName());
277
        params.setUrl(parameters.getUrl());
278
        if( parameters instanceof FilesystemStoreParameters ) {
279
            File f = ((FilesystemStoreParameters) parameters).getFile();
280
            ((FilesystemStoreParameters) params).setFile(f);
281
        }
282

    
283
        params.setDefaultFeatureType(this.getServerExplorerProviderServices()
284
                .createNewFeatureType());
285

    
286
        return params;
287
    }
288

    
289
    protected void checkIsMine(DataStoreParameters dsp) {
290
        if (!(dsp instanceof JDBCConnectionParameters)) {
291
            throw new IllegalArgumentException(
292
                    "not instance of FilesystemStoreParameters");
293
        }
294
        JDBCServerExplorerParameters parameters = getParameters();
295

    
296
        JDBCConnectionParameters pgp = (JDBCConnectionParameters) dsp;
297
        if( !StringUtils.equals(pgp.getHost(), parameters.getHost()) ) {
298
            throw new IllegalArgumentException("wrong explorer: Host (mine: "
299
                    + parameters.getHost() + " other:" + pgp.getHost() + ")");
300
        }
301
        if( !ObjectUtils.equals(pgp.getPort(), parameters.getPort()) ) {
302
            throw new IllegalArgumentException("wrong explorer: Port (mine: "
303
                    + parameters.getPort() + " other:" + pgp.getPort() + ")");
304
        }
305
        if( !StringUtils.equals(pgp.getDBName(), parameters.getDBName()) ) {
306
            throw new IllegalArgumentException("wrong explorer: DBName (mine: "
307
                    + parameters.getDBName() + " other:" + pgp.getDBName()
308
                    + ")");
309
        }
310
        if( ! StringUtils.isEmpty(parameters.getCatalog()) ) {
311
            if( !StringUtils.equals(pgp.getCatalog(), parameters.getCatalog()) ) {
312
                throw new IllegalArgumentException(
313
                        "wrong explorer: Catalog (mine: "
314
                        + parameters.getCatalog() + " other:"
315
                        + pgp.getCatalog() + ")");
316
            }
317
        }
318
        if( ! StringUtils.isEmpty(parameters.getSchema()) ) {
319
            if( !StringUtils.equals(pgp.getSchema(), parameters.getSchema()) ) {
320
                throw new IllegalArgumentException(
321
                        "wrong explorer: Schema (mine: "
322
                        + parameters.getSchema() + " other:"
323
                        + pgp.getSchema() + ")");
324
            }
325
        }
326
    }
327

    
328
    @Override
329
    public void open() throws OpenException {
330

    
331
    }
332

    
333
    @Override
334
    public void close() throws CloseException {
335

    
336
    }
337

    
338
    @Override
339
    protected void doDispose() throws BaseException {
340
        helper.dispose();
341
        helper = null;
342
    }
343

    
344
    @Override
345
    public boolean canAdd() {
346
        if (this.canAdd == null) {
347
            CanCreateTablesOperation canAdd_ = this.getOperations().createCanCreateTables();
348
            this.canAdd = (Boolean) canAdd_.perform();
349
        }
350
        return this.canAdd;
351
    }
352

    
353
    @Override
354
    public FeatureType getFeatureType(DataStoreParameters theParams)
355
            throws DataException {
356
        
357
        JDBCStoreParameters params = (JDBCStoreParameters)theParams;
358
        
359
        checkIsMine(params);
360

    
361
        EditableFeatureType fetureType = 
362
                this.getServerExplorerProviderServices().createNewFeatureType();
363
        
364
        List<String> primaryKeys = null;
365
        if( params.getPkFields() != null ) {
366
            primaryKeys = Arrays.asList(params.getPkFields());
367
        }
368
        
369
        FetchFeatureTypeOperation fetch = this.getOperations().createFetchFeatureType(
370
                fetureType, 
371
                this.getOperations().createTableReference(params),
372
                primaryKeys,
373
                params.getDefaultGeometryField(),
374
                params.getCRS()
375
        );
376
        fetch.perform();
377
        return fetureType;
378
    }
379

    
380
    @Override
381
    public boolean add(String providerName, NewDataStoreParameters theParams, boolean overwrite)
382
            throws DataException {
383

    
384
        List<Pair<String, Privilege>> userAndPrivileges = new ArrayList<>();
385
        JDBCNewStoreParameters params = (JDBCNewStoreParameters)theParams;
386
        if( !StringUtils.isEmpty(params.getAllRole()) ) {
387
            userAndPrivileges.add( 
388
                    new ImmutablePair<>(params.getAllRole(), Privilege.ALL )
389
            );
390
        }
391
        if( !StringUtils.isEmpty(params.getDeleteRole()) ) {
392
            userAndPrivileges.add( 
393
                    new ImmutablePair<>(params.getDeleteRole(), Privilege.DELETE )
394
            );
395
        }
396
        if( !StringUtils.isEmpty(params.getInsertRole()) ) {
397
            userAndPrivileges.add( 
398
                    new ImmutablePair<>(params.getInsertRole(), Privilege.INSERT )
399
            );
400
        }
401
        if( !StringUtils.isEmpty(params.getReferenceRole()) ) {
402
            userAndPrivileges.add( 
403
                    new ImmutablePair<>(params.getReferenceRole(), Privilege.REFERENCE )
404
            );
405
        }
406
        if( !StringUtils.isEmpty(params.getSelectRole()) ) {
407
            userAndPrivileges.add( 
408
                    new ImmutablePair<>(params.getSelectRole(), Privilege.SELECT )
409
            );
410
        }
411
        if( !StringUtils.isEmpty(params.getTriggerRole()) ) {
412
            userAndPrivileges.add( 
413
                    new ImmutablePair<>(params.getTriggerRole(), Privilege.TRIGGER )
414
            );
415
        }
416
        if( !StringUtils.isEmpty(params.getTruncateRole()) ) {
417
            userAndPrivileges.add( 
418
                    new ImmutablePair<>(params.getTruncateRole(), Privilege.TRUNCATE )
419
            );
420
        }
421
        if( !StringUtils.isEmpty(params.getUpdateRole()) ) {
422
            userAndPrivileges.add( 
423
                    new ImmutablePair<>(params.getUpdateRole(), Privilege.UPDATE )
424
            );
425
        }
426
        List<String> additionalSQLs =  new ArrayList<>();
427
        if( !StringUtils.isEmpty(params.getPostCreatingStatement()) ) {
428
            additionalSQLs.add(params.getPostCreatingStatement());
429
        }
430
        CreateTableOperation createTable = this.getOperations().createTable(
431
                this.getOperations().createTableReference(params),
432
                params.getDefaultFeatureType(),
433
                userAndPrivileges, 
434
                additionalSQLs
435
        );
436

    
437
        boolean isOk = (boolean) createTable.perform();
438
        if( !isOk ) {
439
            return false;
440
        }
441
        
442
        // We collect the featureType of the operation because 
443
        // the provider has been able to make changes to it
444
        params.setDefaultFeatureType(createTable.getType());
445

    
446
        if( theParams instanceof NewFeatureStoreParameters ) {
447
            DataManager dataManager = DALLocator.getDataManager();
448
            ResourcesStorage resources = this.getResourcesStorage(theParams);
449
            dataManager.writeDALResource(resources, ((NewFeatureStoreParameters) theParams).getDefaultFeatureType());
450
        }
451
        return true;
452
    }
453

    
454
    @Override
455
    public List getDataStoreProviderNames() {
456
        List x = new ArrayList(1);
457
        x.add(this.getProviderName());
458
        return x;
459
    }
460

    
461
    @Override
462
    public void updateTableStatistics(String database, String schema, String table) throws JDBCExecuteSQLException {
463
        UpdateTableStatisticsOperation updateStatistics = this.getOperations().createUpdateTableStatistics(
464
                this.getOperations().createTableReference(database, schema, table, null)
465
        );
466
        updateStatistics.perform();
467
    }
468

    
469
    @Override
470
    public void execute(String sql) {
471
        ExecuteOperation execute = this.getOperations().createExecute(sql);
472
        execute.perform();
473
    }
474

    
475
    @Override
476
    public JDBCStoreParameters get(String name) throws DataException {
477
        JDBCStoreParameters params = this.getOpenParameters();
478
        params.setTable(name);
479
        return params;
480
    }
481

    
482
    @Override
483
    public SQLBuilder createSQLBuilder() {
484
        JDBCSQLBuilderBase builder = this.getHelper().createSQLBuilder();
485
        return builder;
486
    }
487

    
488
    private ResourcesStorage getResourcesStorage(DataStoreParameters parameters, String storeName) {
489
        
490
        if( !DatabaseWorkspaceManager.isInternalTable(storeName) ) {
491
            ResourcesStorage alternateResourcesStorage = null;
492
            try {
493
                DataManager dataManager = DALLocator.getDataManager();
494
                DatabaseWorkspaceManager workspace = dataManager.getDatabaseWorkspace(parameters);
495
                if( workspace != null ) {
496
                    alternateResourcesStorage = workspace.getAlternativeResourcesStorage(storeName);
497
                }
498
            } catch(Throwable th) {
499
                alternateResourcesStorage = null;
500
            }
501
            try { // TODO: Habria que ver de localizar los parametros sin tener que hacer un list.
502
                List<JDBCStoreParameters> tables = this.list();
503
                for (JDBCStoreParameters params : tables) {
504
                    String theTableName = params.getTable();
505
                    if (StringUtils.equals(theTableName, TABLE_RESOURCES_NAME)) {
506
                        JDBCResourcesStorage theResourcesStorage = new JDBCResourcesStorage(
507
                                alternateResourcesStorage,
508
                                params,
509
                                storeName
510
                        );
511
                        return theResourcesStorage;
512
                    }
513
                }
514
            } catch (Throwable ex) {
515
                LOG.warn("Can't retrieve reources storage from table '" + TABLE_RESOURCES_NAME + "' in '"+this.getParameters().getUrl()+"'.", ex);
516
            }
517
        }
518
        EmptyResourcesStorage theResourcesStorage = new EmptyResourcesStorage();
519
        return theResourcesStorage;            
520
    }
521
    
522
    @Override
523
    public ResourcesStorage getResourcesStorage() {
524
        JDBCStoreParameters params;
525
        try {
526
            params = this.getOpenParameters();
527
            params.setTable(DatabaseWorkspaceManager.TABLE_RESOURCES_NAME);
528
            JDBCResourcesStorage theResourcesStorage = new JDBCResourcesStorage(
529
                    null,
530
                    params,
531
                    "$ServerExplorer"
532
            );
533
            return theResourcesStorage;
534
        } catch (DataException ex) {
535
            return null;
536
        }
537
    }
538
 
539
    @Override
540
    public ResourcesStorage getResourcesStorage(DataStoreParameters parameters) {
541
        if( parameters == null ) {
542
            throw new IllegalArgumentException("null is a valid value for parameters.");
543
        }
544
        String tableName;
545
        if( parameters instanceof JDBCNewStoreParameters) {
546
            tableName = ((JDBCNewStoreParameters)parameters).getTable();
547
        } else if( parameters instanceof JDBCStoreParameters) {
548
            tableName = ((JDBCStoreParameters)parameters).getTable();
549
        } else {
550
            throw new IllegalArgumentException("Required a JDBCStoreParameters or JDBCNewStoreParameters parameters, received "+parameters.getClass().getName()+".");
551
        }
552
        return this.getResourcesStorage(parameters, tableName);
553
    }
554
    
555
    @Override
556
    public ResourcesStorage getResourcesStorage(DataStore dataStore) {
557
        return this.getResourcesStorage(
558
                (JDBCStoreParameters) dataStore.getParameters(), 
559
                dataStore.getName()
560
        );
561
    }
562

    
563
    @Override
564
    public boolean exists(DataStoreParameters parameters) throws DataException {
565
        JDBCStoreParameters params = (JDBCStoreParameters) parameters;
566
        JDBCSQLBuilderBase builder = this.getHelper().createSQLBuilder();
567
        SQLBuilder.TableNameBuilder searchTable = builder.createTableNameBuilder()
568
                .database(params.getDBName())
569
                .schema(params.getSchema())
570
                .name(params.getTable());
571
        SQLBuilder.TableNameBuilder table = builder.createTableNameBuilder();
572
                
573
        List<JDBCStoreParameters> l = this.list();
574
        for (JDBCStoreParameters current : l) {
575
            table.database(current.getDBName())
576
                .schema(current.getSchema())
577
                .name(current.getTable());
578
            if( table.equals(searchTable) ) {
579
                return true;
580
            }
581
        }
582
        return false;
583
    }
584

    
585
}