Statistics
| Revision:

gvsig-3d / 2.1 / trunk / org.gvsig.view3d / org.gvsig.view3d.vector / org.gvsig.view3d.vector.lib / org.gvsig.view3d.vector.lib.impl / src / main / java / org / gvsig / view3d / vector / lib / impl / vector / DefaultVectorLoader.java @ 764

History | View | Annotate | Download (2.56 KB)

1
package org.gvsig.view3d.vector.lib.impl.vector;
2

    
3
import org.gvsig.fmap.dal.exception.DataException;
4
import org.gvsig.fmap.dal.feature.FeatureStore;
5
import org.gvsig.fmap.dal.feature.FeatureType;
6
import org.gvsig.fmap.geom.Geometry.TYPES;
7
import org.gvsig.fmap.geom.type.GeometryType;
8
import org.gvsig.fmap.mapcontext.layers.FLayer;
9
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
10
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
11
import org.gvsig.view3d.lib.api.exception.LoadException;
12
import org.gvsig.view3d.lib.api.loader.Loader;
13
import org.gvsig.view3d.lib.api.loader.LoaderParameters;
14
import org.gvsig.view3d.vector.lib.api.VectorLoaderParameters;
15

    
16
/**
17
 * 
18
 * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
19
 *
20
 */
21
public class DefaultVectorLoader implements Loader {
22

    
23
    @Override
24
    public Object load(LoaderParameters parameters) throws LoadException {
25

    
26
        if (parameters == null) {
27
            throw new IllegalArgumentException("Can not load layer, parameters can not be null");
28
        }
29

    
30
        if (!(parameters instanceof VectorLoaderParameters)) {
31
            throw new IllegalArgumentException(
32
                "Can not load layer, parameters must implements VectorLoaderParameter interface");
33
        }
34

    
35
        FLayer layer = parameters.getLayer();
36
        if (!(layer instanceof FLyrVect)) {
37
            throw new IllegalArgumentException("Can not load layer, only vector layers can be load as 'Vector'");
38
        }
39
        FLyrVect layerVect = (FLyrVect) layer;
40
        FeatureStore featureStore = layerVect.getFeatureStore();
41
        IVectorLegend vectorLegend = null;
42
        if (layerVect.getLegend() instanceof IVectorLegend) {
43
            vectorLegend = (IVectorLegend) layerVect.getLegend();
44
        }
45
        
46
        FeatureType featureType = null;
47
        try {
48
            featureType = featureStore.getDefaultFeatureType();
49
        } catch (DataException e) {
50
            // TODO Auto-generated catch block
51
            throw new LoadException(null, e);
52
        }
53
        
54
        GeometryType geomType = featureType.getDefaultGeometryAttribute().getGeomType();
55
        if(geomType.isTypeOf(TYPES.LINE) || geomType.isTypeOf(TYPES.MULTILINE)) {
56
            return new DefaultVectorLineRenderableLayer((VectorLoaderParameters) parameters, featureStore, vectorLegend);
57
        } else if(geomType.isTypeOf(TYPES.POINT) || geomType.isTypeOf(TYPES.MULTIPOINT)) {
58
            return new DefeaultVectorPointRenderableLayer((VectorLoaderParameters) parameters, featureStore, vectorLegend);
59
        } else {
60
            return null;
61
        }
62
    }
63
}