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