Revision 44328

View differences:

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
33 33
import org.apache.commons.lang3.tuple.ImmutablePair;
34 34
import org.apache.commons.lang3.tuple.Pair;
35 35
import org.gvsig.fmap.dal.DALLocator;
36
import org.gvsig.fmap.dal.DataManager;
36 37
import org.gvsig.fmap.dal.DataStore;
37 38
import org.gvsig.fmap.dal.DataStoreParameters;
38 39
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.TABLE_RESOURCES_NAME;
......
46 47
import org.gvsig.fmap.dal.feature.FeatureType;
47 48
import org.gvsig.fmap.dal.SQLBuilder;
48 49
import org.gvsig.fmap.dal.SQLBuilder.Privilege;
50
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
49 51
import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
50 52
import org.gvsig.fmap.dal.serverexplorer.db.spi.AbstractDBServerExplorer;
51 53
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
......
357 359
                userAndPrivileges, 
358 360
                additionalSQLs
359 361
        );
360
        return (boolean) createTable.perform();
362
        boolean isOk = (boolean) createTable.perform();
363
        if( !isOk ) {
364
            return false;
365
        }
366
        
367
        if( theParams instanceof NewFeatureStoreParameters ) {
368
            DataManager dataManager = DALLocator.getDataManager();
369
            ResourcesStorage resources = this.getResourcesStorage(theParams);
370
            dataManager.writeDALResource(resources, ((NewFeatureStoreParameters) theParams).getDefaultFeatureType());
371
        }
372
        return true;
361 373
    }
362 374

  
363 375
    @Override
......
393 405
        return this.getHelper().createSQLBuilder();
394 406
    }
395 407

  
396
    @Override
397
    public ResourcesStorage getResourcesStorage(DataStore dataStore) {
398
        if( this.resourcesStorage==null ) {
399
            try {
400
                List<JDBCStoreParameters> tables = this.list();
401
                for (JDBCStoreParameters params : tables) {
402
                    String theTableName = params.getTable();
403
                    if (StringUtils.equals(theTableName, TABLE_RESOURCES_NAME)) {
404
                        this.resourcesStorage = new JDBCResourcesStorage(
405
                                params,
406
                                dataStore.getName()
407
                        );
408
                        return this.resourcesStorage;
409
                    }
408
    private ResourcesStorage getResourcesStorage(DataStoreParameters parameters, String storeName) {
409
        try {
410
            List<JDBCStoreParameters> tables = this.list();
411
            for (JDBCStoreParameters params : tables) {
412
                String theTableName = params.getTable();
413
                if (StringUtils.equals(theTableName, TABLE_RESOURCES_NAME)) {
414
                    JDBCResourcesStorage theResourcesStorage = new JDBCResourcesStorage(
415
                            params,
416
                            storeName
417
                    );
418
                    return theResourcesStorage;
410 419
                }
411
                this.resourcesStorage = new EmptyResourcesStorage();
412
            } catch (Throwable ex) {
413
                LOG.warn("Can't retrieve reources storage from table '" + TABLE_RESOURCES_NAME + "' in '"+this.getParameters().getUrl()+"'.", ex);
414 420
            }
421
        } catch (Throwable ex) {
422
            LOG.warn("Can't retrieve reources storage from table '" + TABLE_RESOURCES_NAME + "' in '"+this.getParameters().getUrl()+"'.", ex);
415 423
        }
416
        return this.resourcesStorage;
424
        EmptyResourcesStorage theResourcesStorage = new EmptyResourcesStorage();
425
        return theResourcesStorage;            
417 426
    }
427
    
428
    
429
    @Override
430
    public ResourcesStorage getResourcesStorage(DataStoreParameters parameters) {
431
        if( parameters == null ) {
432
            throw new IllegalArgumentException("null is a valid value for parameters.");
433
        }
434
        String tableName;
435
        if( parameters instanceof JDBCNewStoreParameters) {
436
            tableName = ((JDBCNewStoreParameters)parameters).getTable();
437
        } else if( parameters instanceof JDBCStoreParameters) {
438
            tableName = ((JDBCStoreParameters)parameters).getTable();
439
        } else {
440
            throw new IllegalArgumentException("Required a JDBCStoreParameters or JDBCNewStoreParameters parameters, received "+parameters.getClass().getName()+".");
441
        }
442
        return this.getResourcesStorage(parameters, tableName);
443
    }
444
    
445
    @Override
446
    public ResourcesStorage getResourcesStorage(DataStore dataStore) {
447
        return this.getResourcesStorage(
448
                (JDBCStoreParameters) dataStore.getParameters(), 
449
                dataStore.getName()
450
        );
451
    }
418 452
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.db/org.gvsig.fmap.dal.db.h2/src/main/java/org/gvsig/fmap/dal/store/h2/H2SpatialExplorer.java
33 33
        if( ress instanceof EmptyResourcesStorage ) {
34 34
            String zipPath = this.getParameters().getFile().getAbsolutePath();
35 35
            String zipPathName = FilenameUtils.removeExtension(zipPath);
36
            this.resourcesStorage = new ZipResourcesStorage(zipPathName, dataStore.getName());
36
            ress = new ZipResourcesStorage(zipPathName, dataStore.getName());
37 37
        }
38
        return this.resourcesStorage;
38
        return ress;
39 39
    }
40 40
    
41 41
    
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/DataManager.java
49 49
import org.gvsig.tools.service.spi.Services;
50 50
import org.gvsig.fmap.dal.expressionevaluator.FeatureAttributeEmulatorExpression;
51 51
import org.gvsig.fmap.dal.feature.DataProfile;
52
import org.gvsig.tools.util.UnmodifiableBasicMap;
52
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
53 53

  
54 54
/**
55 55
 * There are two top level management roles within DAL: data access and resource
......
509 509
    public StoresRepository getStoresRepository();
510 510
    
511 511
    public DatabaseWorkspaceManager createDatabaseWorkspaceManager(DataServerExplorerParameters connection);
512
    
513
    public void writeDALResource(ResourcesStorage resources, DataStore store);
514
    
515
    public void writeDALResource(ResourcesStorage resources, FeatureType featureType);
512 516

  
513 517
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.api/src/main/java/org/gvsig/fmap/dal/DataServerExplorer.java
80 80

  
81 81
    public DataStoreParameters get(String name) throws DataException;
82 82

  
83
    public boolean exists(String name);
84
    
85
    public boolean exists(DataStoreParameters parameters);
86
    
83 87
    public static final int MODE_ALL = 0;
84 88
    public static final int MODE_FEATURE = 1;
85 89
    public static final int MODE_GEOMETRY = 2;
......
166 170
    public File getResourcePath(DataStore dataStore, String resourceName) throws DataException;
167 171

  
168 172
    public ResourcesStorage getResourcesStorage(DataStore dataStore);
173
    
174
    public ResourcesStorage getResourcesStorage(DataStoreParameters parameters);
169 175
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.spi/src/main/java/org/gvsig/fmap/dal/spi/AbstractDataServerExplorer.java
1 1
package org.gvsig.fmap.dal.spi;
2 2

  
3 3
import java.io.File;
4
import java.util.List;
5 4
import org.gvsig.fmap.dal.DataServerExplorerParameters;
6 5
import org.gvsig.fmap.dal.DataServerExplorer_v2;
7 6
import org.gvsig.fmap.dal.DataStore;
......
13 12
import org.gvsig.tools.exception.BaseException;
14 13
import org.gvsig.tools.resourcesstorage.EmptyResourcesStorage;
15 14
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
16
import org.gvsig.tools.resourcesstorage.ResourcesStorage.Resource;
17 15

  
18 16
public abstract class AbstractDataServerExplorer extends AbstractDisposable implements DataServerExplorer_v2 {
19 17

  
20 18
    private DataServerExplorerParameters parameters;
21 19
    private final DataServerExplorerProviderServices providerServices;
22
    protected ResourcesStorage resourcesStorage = null;
23 20

  
24 21
    protected AbstractDataServerExplorer(DataServerExplorerParameters parameters, DataServerExplorerProviderServices providerServices) {
25 22
        this.parameters = parameters;
......
45 42
        return null;
46 43
    }
47 44
    
45
    @Override
46
    public boolean exists(DataStoreParameters parameters) {
47
        return true;
48
    }
49

  
50
    @Override
51
    public boolean exists(String name) {
52
        return true;
53
    }
54
    
48 55
    @Deprecated
49 56
    @Override
50 57
    public File getResourcePath(DataStore dataStore, String resourceName) throws DataException {
......
53 60

  
54 61
    @Override
55 62
    public ResourcesStorage getResourcesStorage(DataStore dataStore) {
56
        if( this.resourcesStorage==null ) {
57
            this.resourcesStorage = new EmptyResourcesStorage();
58
        }
59
        return this.resourcesStorage;
63
        EmptyResourcesStorage resourcesStorage = new EmptyResourcesStorage();
64
        return resourcesStorage;
60 65
    }
61 66

  
62 67
    @Override
68
    public ResourcesStorage getResourcesStorage(DataStoreParameters parameters) {
69
        EmptyResourcesStorage resourcesStorage = new EmptyResourcesStorage();
70
        return resourcesStorage;
71
    }
72

  
73
    @Override
63 74
    public SQLBuilder createSQLBuilder() {
64 75
        return new SQLBuilderBase();
65 76
    }
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/serverexplorer/filesystem/impl/AbstractFilesystemServerExplorerProvider.java
29 29

  
30 30
import java.io.File;
31 31
import org.apache.commons.io.FilenameUtils;
32
import org.apache.commons.io.IOUtils;
32 33
import org.gvsig.fmap.dal.DALLocator;
33 34
import org.gvsig.fmap.dal.DataManager;
34 35

  
......
45 46
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters;
46 47
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProvider;
47 48
import org.gvsig.fmap.dal.serverexplorer.filesystem.spi.FilesystemServerExplorerProviderServices;
49
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
48 50

  
49 51
/**
50 52
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera Llodr&aacute;</a>
......
53 55

  
54 56
    @Override
55 57
    public String getResourceRootPathName(DataStore dataStore) {
56
        DataStoreParameters parameters = dataStore.getParameters();
58
        return this.getResourceRootPathName(dataStore.getParameters());
59
    }
60
    
61
    public String getResourceRootPathName(DataStoreParameters parameters) {
57 62
        if( parameters instanceof FilesystemStoreParameters ) {
58 63
            File f = ((FilesystemStoreParameters) parameters).getFile();
59 64
            if( f != null ) {
60 65
                return FilenameUtils.removeExtension(f.getAbsolutePath());
61 66
            }
62 67
        }
63
        if( dataStore.getParameters().hasDynValue(FileResource.NAME) ) {
64
            Object obj = (dataStore.getParameters().getDynValue(FileResource.NAME));
68
        if( parameters.hasDynValue(FileResource.NAME) ) {
69
            Object obj = (parameters.getDynValue(FileResource.NAME));
65 70
            if( obj != null ) {
66 71
                return removeFileExtension(new File(obj.toString()));
67 72
            }
68 73
        }
69 74
        return null;
70 75
    }
71

  
76
    
72 77
    protected String removeFileExtension(File file) {
73 78
        int whereDot = file.getName().lastIndexOf(".");
74 79
        if( (0 < whereDot) && (whereDot <= file.getName().length() - 2) ) {
......
143 148
    }
144 149

  
145 150
    @Override
146
	public void initialize(FilesystemServerExplorerProviderServices serverExplorer) {
151
    public void initialize(FilesystemServerExplorerProviderServices serverExplorer) {
147 152
        
148
	}    
153
    }    
149 154
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/serverexplorer/filesystem/impl/DefaultFilesystemServerExplorer.java
43 43
import org.gvsig.fmap.dal.exception.RemoveException;
44 44
import org.gvsig.fmap.dal.exception.ServerExplorerAddException;
45 45
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
46
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
46 47
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemFileFilter;
47 48
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
48 49
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
......
211 212

  
212 213
            ndsp.validate();
213 214
            provider.create(ndsp, overwrite);
215

  
216
            if( ndsp instanceof NewFeatureStoreParameters ) {
217
                DataManager dataManager = DALLocator.getDataManager();
218
                ResourcesStorage resources = this.getResourcesStorage(ndsp);
219
                dataManager.writeDALResource(resources, ((NewFeatureStoreParameters) ndsp).getDefaultFeatureType());
220
            }
214 221
            return true;
215 222
        } catch (DataException | ValidateDataParametersException e) {
216 223
            throw new ServerExplorerAddException(this.getProviderName(), e);
......
253 260
    }
254 261

  
255 262
	// ==========================================
256
    private FilesystemServerExplorerProvider getProvider(String storeName)
263
    private FilesystemServerExplorerProvider getProvider(String providerName)
257 264
            throws InitializeException, ProviderNotRegisteredException {
258 265
        Iterator providers = getProviders(FilesystemServerExplorer.MODE_ALL).iterator();
259 266
        FilesystemServerExplorerProvider provider;
260 267
        while (providers.hasNext()) {
261 268
            provider = (FilesystemServerExplorerProvider) providers.next();
262
            if (provider.getDataStoreProviderName().equals(storeName)) {
269
            if (provider.getDataStoreProviderName().equals(providerName)) {
263 270
                return provider;
264 271
            }
265 272
        }
......
509 516
        }
510 517
    }
511 518

  
519
    private String getResourcePathName(DataStoreParameters parameters) {
520
        FilesystemServerExplorerProvider provider;
521
        try {
522
            provider = this.getProvider(parameters.getProviderName());
523
        } catch (Exception ex) {
524
            return null;
525
        }
526
        if (provider == null) {
527
            return null;
528
        }
529
        String pathName = provider.getResourceRootPathName(parameters);
530
        if (pathName == null) {
531
            return null;
532
        }
533
        pathName = FilenameUtils.removeExtension(pathName);
534
        return pathName;
535
    }
536
    
512 537
    @Override
538
    public ResourcesStorage getResourcesStorage(DataStoreParameters parameters) {
539
        String pathName = this.getResourcePathName(parameters);
540
        ResourcesStorage theResourcesStorage;
541
        if( ZipResourcesStorage.existsStorage(pathName) ) {
542
            String resourceName = FilenameUtils.getBaseName(pathName);
543
            theResourcesStorage = new ZipResourcesStorage(
544
                    pathName,
545
                    resourceName
546
            );
547
        } else {
548
            theResourcesStorage = new FilesResourcesStorage(
549
                    pathName
550
            );
551
        }
552
        return theResourcesStorage;
553
    }
554
    
555
    @Override
513 556
    public ResourcesStorage getResourcesStorage(DataStore dataStore) {
514
        if( this.resourcesStorage==null ) {
515
            FilesystemServerExplorerProvider provider;
516
            try {
517
                provider = this.getProvider(dataStore.getProviderName());
518
            } catch (Exception ex) {
519
                return null;
520
            }
521
            if (provider == null) {
522
                return null;
523
            }
524
            String pathName = provider.getResourceRootPathName(dataStore);
525
            if (pathName == null) {
526
                return null;
527
            }
528
            pathName = FilenameUtils.removeExtension(pathName);
529
            if( dataStore.getChildren().isEmpty() ) {
530
                if( ZipResourcesStorage.existsStorage(pathName) ) {
531
                    this.resourcesStorage = new ZipResourcesStorage(
532
                            pathName,
533
                            dataStore.getName()
534
                    );
535
                } else {
536
                    this.resourcesStorage = new FilesResourcesStorage(
537
                            pathName
538
                    );
539
                }
540
            } else {
541
                this.resourcesStorage = new ZipResourcesStorage(
542
                        pathName,
543
                        dataStore.getName()
544
                );
545
            }
557
        ResourcesStorage theResourcesStorage;
558
        if( dataStore.getChildren().isEmpty() ) {
559
            theResourcesStorage = this.getResourcesStorage(dataStore.getParameters());
560
        } else {
561
            String pathName = this.getResourcePathName(dataStore.getParameters());
562
            theResourcesStorage = new ZipResourcesStorage(
563
                    pathName,
564
                    dataStore.getName()
565
            );
546 566
        }
547
        return this.resourcesStorage;
567
        return theResourcesStorage;
548 568
    }
549 569
    
550 570
    @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.file/org.gvsig.fmap.dal.file.lib/src/main/java/org/gvsig/fmap/dal/serverexplorer/filesystem/spi/FilesystemServerExplorerProvider.java
51 51
	public boolean canCreate(NewDataStoreParameters parameters);
52 52
	
53 53
	public String getResourceRootPathName(DataStore dataStore);
54
        public String getResourceRootPathName(DataStoreParameters parameters);
54 55
	
55 56
	public int getMode();
56 57

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DALFile.java
91 91
            throw new RuntimeException("Can't read DAL resource.",ex);
92 92
        }
93 93
    }
94
    
95
    public void setFeatureType(FeatureType featureType) throws DataException {
96
        this.featureTypes.clear();
97
        this.featureTypes.add(featureType.getCopy());
98
        this.defaultFeatureTypeId = featureType.getId();
99
    }
94 100

  
95 101
    public void setStore(DefaultFeatureStore store) throws DataException {
96 102
        this.featureTypes.clear();
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/impl/DefaultDataManager.java
10 10
import java.util.HashMap;
11 11
import java.util.List;
12 12
import java.util.Map;
13
import org.apache.commons.io.IOUtils;
13 14
import org.apache.commons.lang3.StringUtils;
14 15
import org.gvsig.expressionevaluator.Expression;
15 16
import org.gvsig.expressionevaluator.ExpressionBuilder;
......
47 48
import org.gvsig.fmap.dal.feature.FeatureQuery;
48 49
import org.gvsig.fmap.dal.feature.FeatureStore;
49 50
import org.gvsig.fmap.dal.feature.FeatureType;
51
import org.gvsig.fmap.dal.feature.impl.DALFile;
50 52
import org.gvsig.fmap.dal.feature.impl.DefaultEditableFeatureType;
51 53
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureIndex;
54
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore;
52 55
import org.gvsig.fmap.dal.feature.impl.FeatureStoreFactory;
53 56
import org.gvsig.fmap.dal.feature.paging.FeaturePagingHelper;
54 57
import org.gvsig.fmap.dal.feature.paging.impl.FeaturePagingHelperImpl;
......
84 87
import org.gvsig.tools.identitymanagement.SimpleIdentityManager;
85 88
import org.gvsig.tools.identitymanagement.UnauthorizedException;
86 89
import org.gvsig.tools.persistence.PersistenceManager;
90
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
87 91
import org.gvsig.tools.service.spi.Services;
88 92
import org.slf4j.Logger;
89 93
import org.slf4j.LoggerFactory;
......
1026 1030
        DatabaseWorkspaceManager workspace = new DefaultDatabaseWorkspaceManager(connection);
1027 1031
        return workspace;
1028 1032
    }
1033
    
1034
    @Override
1035
    public void writeDALResource(ResourcesStorage resources, DataStore store) {
1036
        ResourcesStorage.Resource resource = null;
1037
        try {
1038
            if( resources == null || resources.isReadOnly() ) {
1039
                return;
1040
            }
1041
            resource = resources.getResource("dal");
1042
            if( resource == null || resource.isReadOnly() ) {
1043
                return;
1044
            }
1045
            DALFile dalFile = DALFile.getDALFile();
1046
            dalFile.setStore((DefaultFeatureStore) store);
1047
            if( !dalFile.isEmpty() ) {
1048
                dalFile.write(resource);
1049
            }
1050
        } catch (Throwable ex) {
1051
            LOGGER.warn("Can't save DAL resource", ex);
1052
        } finally {
1053
            IOUtils.closeQuietly(resource);
1054
        }
1055
    
1056
        
1057
    }
1058

  
1059
    @Override
1060
    public void writeDALResource(ResourcesStorage resources, FeatureType featureType) {
1061
        ResourcesStorage.Resource resource = null;
1062
        try {
1063
            if( resources == null || resources.isReadOnly() ) {
1064
                return;
1065
            }
1066
            resource = resources.getResource("dal");
1067
            if( resource == null || resource.isReadOnly() ) {
1068
                return;
1069
            }
1070
            DALFile dalFile = DALFile.getDALFile();
1071
            dalFile.setFeatureType(featureType);
1072
            if( !dalFile.isEmpty() ) {
1073
                dalFile.write(resource);
1074
            }
1075
        } catch (Throwable ex) {
1076
            LOGGER.warn("Can't save DAL resource", ex);
1077
        } finally {
1078
            IOUtils.closeQuietly(resource);
1079
        }
1080
    }
1029 1081
}

Also available in: Unified diff