Revision 42609

View differences:

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/resource/ResourceParameters.java
41 41
	 */
42 42
	public String getTypeName();
43 43

  
44
        public String getResurceID();
44 45
}
45 46

  
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/resource/spi/MultiResourceParameters.java
80 80
        getDelegatedDynObject().setDynValue(FIELD_NAME, name);
81 81
    }
82 82

  
83
    @Override
84
    public String getResurceID() {
85
        return "name=" + this.encodeIDValue(this.getName());
86
    }
87

  
83 88
    /**
84 89
     * Registers the {@link DynClass} of this parameters attributes.
85 90
     *
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/resource/spi/AbstractResourceParameters.java
23 23
 */
24 24
package org.gvsig.fmap.dal.resource.spi;
25 25

  
26
import java.io.UnsupportedEncodingException;
27
import java.net.URLEncoder;
26 28
import org.gvsig.fmap.dal.resource.ResourceParameters;
27 29
import org.gvsig.fmap.dal.spi.AbstractDataParameters;
30
import org.gvsig.tools.dynobject.DelegatedDynObject;
31
import org.gvsig.tools.dynobject.DynClass;
32
import org.gvsig.tools.dynobject.DynField;
28 33

  
29 34
public abstract class AbstractResourceParameters extends AbstractDataParameters
30 35
		implements ResourceParameters {
31 36

  
37
    @Override
38
    public String getResurceID() {
39
        DelegatedDynObject data = this.getDelegatedDynObject();
40
        DynClass definition = data.getDynClass();
41
        StringBuilder builder = new StringBuilder();
42
        builder.append("_entity_=");
43
        builder.append(this.encodeIDValue(definition.getName()));
44
        for (DynField field : definition.getDynFields()) {
45
            if( !field.isContainer() ) {
46
                String name = field.getName();
47
                Object value = data.getDynValue(name);
48
                builder.append("&");
49
                builder.append(name);
50
                builder.append("=");
51
                if( value != null ) {
52
                    builder.append(this.encodeIDValue(value.toString()));
53
                }
54
            }
55
        }
56
        return builder.toString();
57
    }
32 58

  
59
    protected String encodeIDValue(String value) {
60
        try {
61
            return URLEncoder.encode(value, "UTF-8");
62
        } catch (UnsupportedEncodingException ex) {
63
            // Do nothing
64
        }
65
        return value.replace("&", "%26");
66
    }
67

  
33 68
}
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/feature/spi/memory/MemoryResourceParameters.java
71 71
        return MemoryResource.NAME;
72 72
    }
73 73

  
74
    @Override
75
    public String getResurceID() {
76
        return "name="+this.encodeIDValue((String) this.getDynValue(FIELD_NAME));
77
    }
78
    
74 79
    /**
75 80
     * Registers the DynClass related to this parameters.
76 81
     *
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/resource/file/FileResourceParameters.java
83 83
    }
84 84

  
85 85
    @Override
86
    public String getResurceID() {
87
        return "file="+this.encodeIDValue(getFile().getAbsolutePath());
88
    }
89
    
90
    
91

  
92
    @Override
86 93
    public String getTypeName() {
87 94
        return FileResource.NAME;
88 95
    }
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/resource/impl/DefaultResourceManager.java
301 301
			throws InitializeException {
302 302

  
303 303
		try {
304
		    String name;
305
		    try {
306
		       name= (String)params.getDynValue("name");
307
		    }catch (DynFieldNotFoundException nfe){
308
		        try{
309
		           File file= (File)params.getDynValue("file");
310
		           name= file.getAbsolutePath();
311
		        }catch(DynFieldNotFoundException nfe1){
312
		            throw new InitializeException(params.getTypeName(), nfe1);
313
		        }
314
		    }
304
                    String name = params.getResurceID();
315 305
		    Resource res = (Resource)(this.resources.get(name));
316 306
		    if( res!=null ) {
317 307
		        return (AbstractResource)res;
318 308
		    }
319
			return addResource((AbstractResource) createResource(params));
309
                    return addResource((AbstractResource) createResource(params));
320 310
		} catch (AccessResourceException e) {
321 311
			throw new InitializeException(params.getTypeName(), e);
322 312
		}

Also available in: Unified diff