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 @ 45481

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 static class CachedTablesValue extends CachedValue<List<JDBCStoreParameters>> {
97
        
98
        private final int mode;
99
        private final JDBCServerExplorerParameters serverParameters;
100
        private final boolean informationTables;
101
        private final JDBCHelper helper;
102
      
103
        public CachedTablesValue(JDBCHelper helper, int mode, JDBCServerExplorerParameters serverParameters, boolean informationTables) {
104
            this.mode = mode;
105
            this.serverParameters = serverParameters;
106
            this.informationTables = informationTables;
107
            this.helper = helper;
108
        }
109
      
110
        public CachedTablesValue(JDBCHelper helper, int mode, JDBCServerExplorerParameters serverParameters, boolean informationTables, long expireTime) {
111
            this.mode = mode;
112
            this.setExpireTime(expireTime);
113
            this.serverParameters = serverParameters;
114
            this.informationTables = informationTables;
115
            this.helper = helper;
116
        }
117
      
118
        @Override
119
        protected void reload() {
120
            List<JDBCStoreParameters> tables = null;
121
            OperationsFactory operations = helper.getOperations();
122
            if(operations == null){
123
                this.setValue(null);
124
                LOG.debug("Sets tables to null to force reload tables from new ServerExplorar.");
125
                return;
126
            }
127
            try {
128
                ListTablesOperation listTables = operations.createListTables(
129
                    this.mode, serverParameters, informationTables
130
                );
131
                tables = (List<JDBCStoreParameters>) listTables.perform();
132
            } catch(Exception ex) {
133
                LOG.debug("Can't reload cached list of tables.", ex);
134
            }
135
            this.setValue(tables);
136
        }
137
    }
138

    
139
    public JDBCServerExplorerBase(
140
            JDBCServerExplorerParameters parameters,
141
            DataServerExplorerProviderServices services,
142
            JDBCHelper helper
143
        ) throws InitializeException {
144
        super(parameters, services);
145
        this.helper = helper;
146
    }
147

    
148
    @Override
149
    public String getProviderName() {
150
        return this.getHelper().getProviderName();
151
    }
152

    
153
    @Override
154
    public String getStoreName() {
155
        return this.getHelper().getProviderName();
156
    }
157

    
158
    protected DataManagerProviderServices getManager() {
159
        return (DataManagerProviderServices) DALLocator.getDataManager();
160
    }
161
        
162
    @Override
163
    public JDBCServerExplorerParameters getParameters() {
164
        return (JDBCServerExplorerParameters) super.getParameters();
165
    }
166
    
167
    @Override
168
    public boolean closeResourceRequested(ResourceProvider resource) {
169
        this.getHelper().getResulSetControler().pack();
170
        return true;
171
    }
172

    
173
    @Override
174
    public void resourceChanged(ResourceProvider resource) {
175
        // Nothing to do
176
    }
177

    
178
    protected JDBCHelper getHelper() {
179
        return helper;
180
    }
181
    
182
    protected OperationsFactory getOperations() {
183
        return this.getHelper().getOperations();
184
    }
185

    
186
    @Override
187
    public DataStore open(DataStoreParameters params) throws DataException {
188
        checkIsMine(params);
189
        DataStore store = super.open(params);
190
        return store;
191
    }
192

    
193
    @Override
194
    public List list(int mode) throws DataException {
195
        boolean informationTables = BooleanUtils.isTrue(
196
                this.getParameters().getShowInformationDBTables()
197
        );
198
        
199
        JDBCServerExplorerParameters serverParams = this.getParameters();
200

    
201
        String key = buildKeyForCachedTables(mode, serverParams, informationTables);
202
        CachedValue<List<JDBCStoreParameters>> tablesValue = CACHED_TABLES.get(key);
203
        List<JDBCStoreParameters> tables = null;
204
        if(tablesValue != null){
205
            tables = tablesValue.get();
206
        }
207
        if( tables != null ) {
208
            return tables;
209
        }
210
        tablesValue = new CachedTablesValue(this.helper, mode, serverParams, informationTables, 60000); //60"
211
        CACHED_TABLES.put(key, tablesValue);
212
        tables = tablesValue.get();
213
        return tables;
214
    }
215

    
216
    public String buildKeyForCachedTables(int mode, JDBCServerExplorerParameters params, boolean informationTables) {
217
        JDBCServerExplorerParameters clonedParams = (JDBCServerExplorerParameters) params.getCopy();
218
        clonedParams.setSchema(null); //ListTableOperation no usa el schema
219
        
220
        StringBuilder builder = new StringBuilder();
221
        builder.append(String.valueOf(mode));
222
        builder.append(Hex.encodeHex(clonedParams.toByteArray()));
223
        builder.append(String.valueOf(informationTables));
224
        String key = builder.toString();
225
        return key;
226
    }
227
    
228
    @Override
229
    public void remove(DataStoreParameters theParams) throws RemoveException {
230
        JDBCStoreParameters params = (JDBCStoreParameters) theParams;
231
        DropTableOperation removeTable = this.getOperations().createDropTable(
232
                this.getOperations().createTableReference(params)
233
        );
234
        if((Boolean)removeTable.perform()) {
235
            this.dropCachedTables();
236
        }
237
    }
238

    
239
    @Override
240
    public JDBCStoreParameters getOpenParameters() throws DataException {
241
        JDBCStoreParameters params = this.helper.createOpenStoreParameters(this.getParameters());
242
        return params;
243
    }
244

    
245
    @Override
246
    public NewDataStoreParameters getAddParameters(String storeName)
247
            throws DataException {
248
        JDBCNewStoreParameters params = this.getAddParameters();
249
        params.setTable(storeName);
250
        return params;
251
    }
252

    
253
    @Override
254
    public JDBCNewStoreParameters getAddParameters() throws DataException {
255
        JDBCServerExplorerParameters parameters = getParameters();
256
        JDBCNewStoreParameters params = this.helper.createNewStoreParameters();
257
        params.setHost(parameters.getHost());
258
        params.setPort(parameters.getPort());
259
        params.setDBName(parameters.getDBName());
260
        params.setUser(parameters.getUser());
261
        params.setPassword(parameters.getPassword());
262
        params.setCatalog(parameters.getCatalog());
263
        params.setSchema(parameters.getSchema());
264
        params.setJDBCDriverClassName(parameters.getJDBCDriverClassName());
265
        params.setUrl(parameters.getUrl());
266
        if( parameters instanceof FilesystemStoreParameters ) {
267
            File f = ((FilesystemStoreParameters) parameters).getFile();
268
            ((FilesystemStoreParameters) params).setFile(f);
269
        }
270

    
271
        params.setDefaultFeatureType(this.getServerExplorerProviderServices()
272
                .createNewFeatureType());
273

    
274
        return params;
275
    }
276

    
277
    protected void checkIsMine(DataStoreParameters dsp) {
278
        if (!(dsp instanceof JDBCConnectionParameters)) {
279
            throw new IllegalArgumentException(
280
                    "not instance of FilesystemStoreParameters");
281
        }
282
        JDBCServerExplorerParameters parameters = getParameters();
283

    
284
        JDBCConnectionParameters pgp = (JDBCConnectionParameters) dsp;
285
        if( !StringUtils.equals(pgp.getHost(), parameters.getHost()) ) {
286
            throw new IllegalArgumentException("wrong explorer: Host (mine: "
287
                    + parameters.getHost() + " other:" + pgp.getHost() + ")");
288
        }
289
        if( !ObjectUtils.equals(pgp.getPort(), parameters.getPort()) ) {
290
            throw new IllegalArgumentException("wrong explorer: Port (mine: "
291
                    + parameters.getPort() + " other:" + pgp.getPort() + ")");
292
        }
293
        if( !StringUtils.equals(pgp.getDBName(), parameters.getDBName()) ) {
294
            throw new IllegalArgumentException("wrong explorer: DBName (mine: "
295
                    + parameters.getDBName() + " other:" + pgp.getDBName()
296
                    + ")");
297
        }
298
        if( ! StringUtils.isEmpty(parameters.getCatalog()) ) {
299
            if( !StringUtils.equals(pgp.getCatalog(), parameters.getCatalog()) ) {
300
                throw new IllegalArgumentException(
301
                        "wrong explorer: Catalog (mine: "
302
                        + parameters.getCatalog() + " other:"
303
                        + pgp.getCatalog() + ")");
304
            }
305
        }
306
        if( ! StringUtils.isEmpty(parameters.getSchema()) ) {
307
            if( !StringUtils.equals(pgp.getSchema(), parameters.getSchema()) ) {
308
                throw new IllegalArgumentException(
309
                        "wrong explorer: Schema (mine: "
310
                        + parameters.getSchema() + " other:"
311
                        + pgp.getSchema() + ")");
312
            }
313
        }
314
    }
315

    
316
    @Override
317
    public void open() throws OpenException {
318

    
319
    }
320

    
321
    @Override
322
    public void close() throws CloseException {
323

    
324
    }
325

    
326
    @Override
327
    protected void doDispose() throws BaseException {
328
        helper.dispose();
329
        helper = null;
330
    }
331

    
332
    @Override
333
    public boolean canAdd() {
334
        if (this.canAdd == null) {
335
            CanCreateTablesOperation canAdd_ = this.getOperations().createCanCreateTables();
336
            this.canAdd = (Boolean) canAdd_.perform();
337
        }
338
        return this.canAdd;
339
    }
340

    
341
    @Override
342
    public FeatureType getFeatureType(DataStoreParameters theParams)
343
            throws DataException {
344
        
345
        JDBCStoreParameters params = (JDBCStoreParameters)theParams;
346
        
347
        checkIsMine(params);
348

    
349
        EditableFeatureType fetureType = 
350
                this.getServerExplorerProviderServices().createNewFeatureType();
351
        
352
        List<String> primaryKeys = null;
353
        if( params.getPkFields() != null ) {
354
            primaryKeys = Arrays.asList(params.getPkFields());
355
        }
356
        
357
        FetchFeatureTypeOperation fetch = this.getOperations().createFetchFeatureType(
358
                fetureType, 
359
                this.getOperations().createTableReference(params),
360
                primaryKeys,
361
                params.getDefaultGeometryField(),
362
                params.getCRS()
363
        );
364
        fetch.perform();
365
        return fetureType;
366
    }
367

    
368
    @Override
369
    public boolean add(String providerName, NewDataStoreParameters theParams, boolean overwrite)
370
            throws DataException {
371

    
372
        List<Pair<String, Privilege>> userAndPrivileges = new ArrayList<>();
373
        JDBCNewStoreParameters params = (JDBCNewStoreParameters)theParams;
374
        if( !StringUtils.isEmpty(params.getAllRole()) ) {
375
            userAndPrivileges.add( 
376
                    new ImmutablePair<>(params.getAllRole(), Privilege.ALL )
377
            );
378
        }
379
        if( !StringUtils.isEmpty(params.getDeleteRole()) ) {
380
            userAndPrivileges.add( 
381
                    new ImmutablePair<>(params.getDeleteRole(), Privilege.DELETE )
382
            );
383
        }
384
        if( !StringUtils.isEmpty(params.getInsertRole()) ) {
385
            userAndPrivileges.add( 
386
                    new ImmutablePair<>(params.getInsertRole(), Privilege.INSERT )
387
            );
388
        }
389
        if( !StringUtils.isEmpty(params.getReferenceRole()) ) {
390
            userAndPrivileges.add( 
391
                    new ImmutablePair<>(params.getReferenceRole(), Privilege.REFERENCE )
392
            );
393
        }
394
        if( !StringUtils.isEmpty(params.getSelectRole()) ) {
395
            userAndPrivileges.add( 
396
                    new ImmutablePair<>(params.getSelectRole(), Privilege.SELECT )
397
            );
398
        }
399
        if( !StringUtils.isEmpty(params.getTriggerRole()) ) {
400
            userAndPrivileges.add( 
401
                    new ImmutablePair<>(params.getTriggerRole(), Privilege.TRIGGER )
402
            );
403
        }
404
        if( !StringUtils.isEmpty(params.getTruncateRole()) ) {
405
            userAndPrivileges.add( 
406
                    new ImmutablePair<>(params.getTruncateRole(), Privilege.TRUNCATE )
407
            );
408
        }
409
        if( !StringUtils.isEmpty(params.getUpdateRole()) ) {
410
            userAndPrivileges.add( 
411
                    new ImmutablePair<>(params.getUpdateRole(), Privilege.UPDATE )
412
            );
413
        }
414
        List<String> additionalSQLs =  new ArrayList<>();
415
        if( !StringUtils.isEmpty(params.getPostCreatingStatement()) ) {
416
            additionalSQLs.add(params.getPostCreatingStatement());
417
        }
418
        CreateTableOperation createTable = this.getOperations().createTable(
419
                this.getOperations().createTableReference(params),
420
                params.getDefaultFeatureType(),
421
                userAndPrivileges, 
422
                additionalSQLs
423
        );
424

    
425
        boolean isOk = (boolean) createTable.perform();
426
        if( !isOk ) {
427
            return false;
428
        }
429
        
430
        // We collect the featureType of the operation because 
431
        // the provider has been able to make changes to it
432
        params.setDefaultFeatureType(createTable.getType());
433

    
434
        if( theParams instanceof NewFeatureStoreParameters ) {
435
            DataManager dataManager = DALLocator.getDataManager();
436
            ResourcesStorage resources = this.getResourcesStorage(theParams);
437
            dataManager.writeDALResource(resources, ((NewFeatureStoreParameters) theParams).getDefaultFeatureType());
438
        }
439
        this.dropCachedTables();
440
        return true;
441
    }
442
    
443
    private void dropCachedTables() {
444
        boolean informationTables = BooleanUtils.isTrue(
445
            this.getParameters().getShowInformationDBTables()
446
        );
447
        CACHED_TABLES.remove(buildKeyForCachedTables(MODE_ALL, this.getParameters(), informationTables));
448
        CACHED_TABLES.remove(buildKeyForCachedTables(MODE_FEATURE, this.getParameters(), informationTables));
449
        CACHED_TABLES.remove(buildKeyForCachedTables(MODE_GEOMETRY, this.getParameters(), informationTables));        
450
    }
451

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

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

    
467
    @Override
468
    public Object execute(String sql) {
469
        ExecuteOperation execute = this.getOperations().createExecute(sql);
470
        return execute.perform();
471
    }
472

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

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

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

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

    
583
}