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

View differences:

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