Revision 467 2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.swing/org.gvsig.view3d.swing.impl/src/main/java/org/gvsig/view3d/swing/impl/data/DefaultLayerConverter.java
DefaultLayerConverter.java | ||
---|---|---|
41 | 41 |
|
42 | 42 |
import org.cresques.cts.ICoordTrans; |
43 | 43 |
import org.cresques.cts.IProjection; |
44 |
import org.slf4j.Logger; |
|
45 |
import org.slf4j.LoggerFactory; |
|
46 |
import org.w3c.dom.Document; |
|
47 | 44 |
import org.gvsig.fmap.crs.CRSFactory; |
48 | 45 |
import org.gvsig.fmap.dal.exception.DataException; |
49 | 46 |
import org.gvsig.fmap.geom.primitive.Envelope; |
50 | 47 |
import org.gvsig.fmap.mapcontext.MapContext; |
51 | 48 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
49 |
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer; |
|
52 | 50 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
53 | 51 |
import org.gvsig.view3d.swing.impl.DefaultMapControl3D; |
52 |
import org.slf4j.Logger; |
|
53 |
import org.slf4j.LoggerFactory; |
|
54 |
import org.w3c.dom.Document; |
|
54 | 55 |
|
55 | 56 |
/** |
56 | 57 |
* @author <a href="mailto:lmarques@disid.com">Lluis Marques</a> |
... | ... | |
90 | 91 |
return null; |
91 | 92 |
} |
92 | 93 |
|
93 |
private String getUniqueCacheId(String name) {
|
|
94 |
private String getUniqueCacheId(FLayer layer) {
|
|
94 | 95 |
// TODO This is not valid. We have to take in account more properties |
95 | 96 |
// to get unique cache id |
96 | 97 |
try { |
97 | 98 |
// Create MD5 Hash |
98 | 99 |
MessageDigest digest = |
99 | 100 |
java.security.MessageDigest.getInstance("MD5"); |
100 |
digest.update(name.getBytes()); |
|
101 |
|
|
102 |
String name = layer.getName(); |
|
103 |
long drawVersion = layer.getDrawVersion(); |
|
104 |
String dataStoreFullName = null; |
|
105 |
if (layer instanceof SingleLayer) { |
|
106 |
dataStoreFullName = |
|
107 |
((SingleLayer) layer).getDataStore().getFullName(); |
|
108 |
} |
|
109 |
int hashCode = layer.hashCode(); |
|
110 |
|
|
111 |
StringBuilder stb = new StringBuilder(); |
|
112 |
stb.append(name); |
|
113 |
stb.append("$"); |
|
114 |
stb.append(drawVersion); |
|
115 |
stb.append("$"); |
|
116 |
stb.append(hashCode); |
|
117 |
stb.append("$"); |
|
118 |
if (dataStoreFullName != null) { |
|
119 |
stb.append(dataStoreFullName); |
|
120 |
stb.append("$"); |
|
121 |
} |
|
122 |
|
|
123 |
String id = stb.toString(); |
|
124 |
digest.update(id.getBytes()); |
|
101 | 125 |
byte messageDigest[] = digest.digest(); |
102 | 126 |
|
103 | 127 |
// Create Hex String |
104 | 128 |
StringBuilder hexString = new StringBuilder(); |
105 |
hexString.append(name);
|
|
129 |
hexString.append(layer.getName());
|
|
106 | 130 |
hexString.append("-"); |
107 | 131 |
for (int i = 0; i < messageDigest.length; i++) |
108 | 132 |
hexString.append(Integer.toHexString(0xFF & messageDigest[i])); |
... | ... | |
110 | 134 |
|
111 | 135 |
} catch (NoSuchAlgorithmException e) { |
112 | 136 |
LOG.warn("MD5 algorith is not available", e); |
113 |
return name; |
|
137 |
|
|
138 |
String name = layer.getName(); |
|
139 |
long drawVersion = layer.getDrawVersion(); |
|
140 |
String dataStoreFullName = null; |
|
141 |
if (layer instanceof SingleLayer) { |
|
142 |
dataStoreFullName = |
|
143 |
((SingleLayer) layer).getDataStore().getFullName(); |
|
144 |
} |
|
145 |
int hashCode = layer.hashCode(); |
|
146 |
|
|
147 |
StringBuilder stb = new StringBuilder(); |
|
148 |
stb.append(name); |
|
149 |
stb.append("$"); |
|
150 |
stb.append(drawVersion); |
|
151 |
stb.append("$"); |
|
152 |
stb.append(hashCode); |
|
153 |
stb.append("$"); |
|
154 |
if (dataStoreFullName != null) { |
|
155 |
stb.append(dataStoreFullName); |
|
156 |
stb.append("$"); |
|
157 |
} |
|
158 |
|
|
159 |
return stb.toString(); |
|
114 | 160 |
} |
115 | 161 |
} |
116 | 162 |
|
... | ... | |
125 | 171 |
|
126 | 172 |
params.setValue(AVKey.DATASET_NAME, layer.getName()); |
127 | 173 |
params.setValue(AVKey.DATA_CACHE_NAME, |
128 |
getUniqueCacheId(layer.getName()));
|
|
174 |
getUniqueCacheId(layer)); |
|
129 | 175 |
params.setValue(AVKey.DISPLAY_NAME, layer.getName()); |
130 | 176 |
params.setValue(AVKey.SERVICE_NAME, "Offline"); |
131 | 177 |
|
Also available in: Unified diff