Revision 45208 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/DatabaseWorkspaceStoresRepository.java

View differences:

DatabaseWorkspaceStoresRepository.java
11 11
import org.gvsig.fmap.dal.DataManager;
12 12
import org.gvsig.fmap.dal.DataStoreParameters;
13 13
import org.gvsig.fmap.dal.DataTypes;
14
import static org.gvsig.fmap.dal.DatabaseWorkspaceManager.FIELD_REPOSITORY_FLAGS;
14 15
import org.gvsig.fmap.dal.StoresRepository;
15 16
import org.gvsig.fmap.dal.feature.Feature;
16 17
import org.gvsig.fmap.dal.feature.FeatureStore;
......
27 28
import org.gvsig.tools.dispose.DisposeUtils;
28 29
import org.gvsig.tools.dynobject.DynClass;
29 30
import org.gvsig.tools.dynobject.DynField;
31
import org.gvsig.tools.util.Bitmask;
30 32
import org.gvsig.tools.util.HasAFile;
31 33

  
32 34
/**
......
42 44

  
43 45
    private final DatabaseWorkspaceManager workspace;
44 46
    private Map<String,DataStoreParameters> repository;
47
    
48
    public static final int FLAG_CHANGE_PORT_HOST = 1;
45 49

  
46 50
    public DatabaseWorkspaceStoresRepository(String name, String label, DatabaseWorkspaceManager workspace) {
47 51
        super(name, label);
......
86 90
            this.repository = new HashMap<>();
87 91
            final DataManager dataManager = DALLocator.getDataManager();
88 92
            store = this.workspace.getTable(DatabaseWorkspaceManager.TABLE_REPOSITORY);
93
            DataStoreParameters storeParameters = store.getParameters();
89 94
            store.accept(new Visitor() {
90 95
                @Override
91 96
                public void visit(Object obj) throws VisitCanceledException, BaseException {
92 97
                    Feature f = (Feature) obj;
93 98
                    String name = f.getString(FIELD_REPOSITORY_NAME);
94 99
                    byte[] data = f.getByteArray(FIELD_REPOSITORY_PARAMETERS);
100
                    // Compatibilidad con antiguos repositorios sin falgs
101
                    int flags = 0;
102
                    if (f.getType().getAttributeDescriptor(FIELD_REPOSITORY_FLAGS)!=null) {
103
                        flags = f.getInt(FIELD_REPOSITORY_FLAGS);
104
                    }
95 105
                    DataStoreParameters params = dataManager.createStoreParameters(data);
96 106
                    if( params==null ) {
97 107
                        LOGGER.warn("Can't restore parameters from repository entry '"+name+"'.");
98 108
                        return;
99 109
                    }
110
                    processParameters(params, storeParameters, Bitmask.createBitmask(flags));
100 111
                    evaluateExpressionsInFiles(params);
101 112
                    repository.put(name, params);
102 113
                }
......
107 118
            DisposeUtils.disposeQuietly(store);
108 119
        }
109 120
    }
121
    
122
    private void processParameters(DataStoreParameters params, DataStoreParameters storeParameters, Bitmask mask) {
123
        if (mask.isEmpty()) {
124
            return;
125
        }
126
        if (mask.isSetBit(FLAG_CHANGE_PORT_HOST)) {
127
            try {
128
                Object host = storeParameters.getDynValue("host");
129
                Object port = storeParameters.getDynValue("port");
130
                params.setDynValue("host", host);
131
                params.setDynValue("port", port);
132
            } catch (Exception ex) {
133
                throw new RuntimeException("Unable to set host and port from actual connection", ex);
134
            }
135
        }
136
    }
110 137

  
111 138
    @Override
112 139
    protected DataStoreParameters getMyParameters(String name) {

Also available in: Unified diff