Revision 755 2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.lib/org.gvsig.view3d.lib.impl/src/main/java/org/gvsig/view3d/lib/impl/DefaultView3DManger.java

View differences:

DefaultView3DManger.java
23 23

  
24 24
package org.gvsig.view3d.lib.impl;
25 25

  
26
import java.util.ArrayList;
27
import java.util.HashMap;
28
import java.util.List;
29
import java.util.Map;
30

  
26 31
import org.gvsig.fmap.mapcontext.layers.FLayer;
27
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
28 32
import org.gvsig.view3d.lib.api.View3DManager;
29
import org.gvsig.view3d.lib.api.properties.LayerProperties3D;
30
import org.gvsig.view3d.lib.impl.properties.DefaultRasterLayerProperties3D;
31
import org.gvsig.view3d.lib.impl.properties.DefaultVectorialLayerProperties3D;
33
import org.gvsig.view3d.lib.api.exception.FactoryNotRegisteredException;
34
import org.gvsig.view3d.lib.api.loader.LoaderFactory;
35
import org.gvsig.view3d.lib.api.loader.LoaderParameters;
36
import org.slf4j.Logger;
37
import org.slf4j.LoggerFactory;
32 38

  
33

  
34 39
/**
35 40
 * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
36 41
 *
37 42
 */
38 43
public class DefaultView3DManger implements View3DManager {
44

  
45
    private static final Logger LOG = LoggerFactory.getLogger(DefaultView3DManger.class);
39 46
    
40
    public LayerProperties3D getLayerProperties(FLayer layer) {
41
        Object properties = layer.getProperty("properties3D");
42
        if(properties == null){
43
            LayerProperties3D layerProperties;
44
            if(layer instanceof FLyrVect){
45
                layerProperties =
46
                    new DefaultVectorialLayerProperties3D(layer);
47
            } else {
48
                layerProperties = new DefaultRasterLayerProperties3D(layer);
49
            }
50
            setLayerProperties(layer, layerProperties);
51
            return layerProperties;
47
    private final String LOADER_PARAMETERS_FIELD_NAME = "loaderParameters";
48
    
49
    private Map<String, LoaderFactory> loaderFactories = new HashMap<String, LoaderFactory>();
50

  
51
    @Override
52
    public LoaderFactory getLoaderFactory(String name) throws FactoryNotRegisteredException {
53
        if (loaderFactories.containsKey(name)) {
54
            return loaderFactories.get(name);
52 55
        }
53
        return (LayerProperties3D) properties;
56

  
57
        throw new FactoryNotRegisteredException(name);
54 58
    }
55 59

  
56
    public void setLayerProperties(FLayer layer, LayerProperties3D properties) {
57
        layer.setProperty("properties3D", properties);
60
    @Override
61
    public List<LoaderFactory> getLoaderFactories() {
62
        return new ArrayList<LoaderFactory>(loaderFactories.values());
58 63
    }
64

  
65
    @Override
66
    public void registerLoaderFactory(String name, LoaderFactory factory) {
67
        if (loaderFactories.containsKey(name)) {
68
            LOG.warn("There are already a registered loader factory with {} name");
69
        }
70
        loaderFactories.put(name, factory);
71
    }
72

  
73
    @Override
74
    public boolean hasLoaderParameters(FLayer layer) {
75
        return layer.getExtendedProperties().containsKey(LOADER_PARAMETERS_FIELD_NAME);
76
    }
77

  
78
    @Override
79
    public LoaderParameters getLoaderParameters(FLayer layer) {
80
        return (LoaderParameters) layer.getProperty(LOADER_PARAMETERS_FIELD_NAME);
81
    }
82

  
83
    @Override
84
    public void setLoaderParameters(FLayer layer, LoaderParameters parameters) {
85
        layer.setProperty(LOADER_PARAMETERS_FIELD_NAME, parameters);
86
    }
59 87
}

Also available in: Unified diff