Statistics
| Revision:

svn-gvsig-desktop / branches / v10 / extensions / extPublishMapserver / src / org / gvsig / publish / mapserver / model / wcs / MapserverWCSLayer.java @ 16281

History | View | Annotate | Download (3.71 KB)

1
package org.gvsig.publish.mapserver.model.wcs;
2

    
3
import java.awt.geom.Rectangle2D;
4

    
5
import org.gvsig.publish.infoproject.IDataSourceInfo;
6
import org.gvsig.publish.infoproject.ILayerInfo;
7
import org.gvsig.publish.infoproject.datasources.IFileInfo;
8
import org.gvsig.publish.infoproject.datasources.IRasterDSInfo;
9
import org.gvsig.publish.mapserver.conf.MapFile.CRS;
10
import org.gvsig.publish.mapserver.conf.MapFile.ConfigFile;
11
import org.gvsig.publish.mapserver.conf.MapFile.MapLayer;
12
import org.gvsig.publish.mapserver.conf.MapFile.ShpLayer;
13
import org.gvsig.publish.mapserver.model.Mapserver;
14
import org.gvsig.publish.ogcmetadata.CommonOGCMetadata;
15
import org.gvsig.publish.serversmodel.PublishException;
16
import org.gvsig.publish.serversmodel.RemoteResource;
17

    
18
import com.iver.utiles.XMLEntity;
19

    
20
public class MapserverWCSLayer extends RemoteResource {
21

    
22
        public final static String MAPSERVER_WCS_LAYER="mapserver_wcs_layer";
23
        /*
24
         * Properties
25
         */
26
        private CommonOGCMetadata ogcMetadata = null;
27
        /**
28
         * Constructor
29
         * 
30
         * @param service
31
         */
32
        public MapserverWCSLayer(MapserverWCS service) {
33
                super(service);
34
                ogcMetadata = new CommonOGCMetadata();
35
        }
36
        /**
37
         * @return string which identifies the remote resource
38
         */
39
        public String getType() {
40
                return MAPSERVER_WCS_LAYER;
41
        }
42
        
43
        public CommonOGCMetadata getOgcMetadata() {
44
                return ogcMetadata;
45
        }
46

    
47

    
48
        public void setOgcMetadata(CommonOGCMetadata ogcMetadata) {
49
                this.ogcMetadata = ogcMetadata;
50
        }        
51
        
52
        public String toString() {                
53
                return getLayerInfo().getTitle();
54
        }
55
        /**
56
         * Initializes the remote resource name and title with the name and title of the layer
57
         */
58
        public void setLayerInfo(ILayerInfo layerInfo) {
59
                super.setLayerInfo(layerInfo);
60
                getOgcMetadata().setName(getLayerInfo().getName());
61
                getOgcMetadata().setTitle(getLayerInfo().getTitle());
62
        }
63
        
64
        
65
        public XMLEntity getXMLEntity() {
66
                XMLEntity xml=super.getXMLEntity();
67
                //put the specific properties
68
                //put ogcmetadata
69
                ogcMetadata.addXMLEntity(xml);                
70
                return xml;
71
        }
72

    
73

    
74
        public void setXMLEntity(XMLEntity xml) {
75
                super.setXMLEntity(xml);                                                
76
                //set ogcmetadata                
77
                ogcMetadata.setXMLEntity(xml);                
78
        }
79
        
80
        
81
        public void publish() throws PublishException {        
82
                IDataSourceInfo dataSource = getLayerInfo().getDataSource();
83

    
84
                if (dataSource == null){
85

    
86
                        //TODO: I must put a exception
87

    
88
                        return;
89
                }
90
                if (dataSource.getDataType() == IDataSourceInfo.RASTER_DATA){
91
                        generateRasterLayer(dataSource);
92
                }
93
                
94
                //publish all its childs                
95
                super.publish();
96

    
97
        }
98
        
99
        private void generateRasterLayer(IDataSourceInfo ds){
100
                //get the mapfile
101
                ConfigFile mapfile = ((Mapserver)getService().getServer()).getConfigFile();
102
                //get the raster info
103
                IRasterDSInfo iraster = (IRasterDSInfo)ds;
104
                //get the file  info 
105
                IFileInfo ifile = (IFileInfo)ds;
106

    
107
                //LAYER
108
                ShpLayer lyr = new ShpLayer();
109
                lyr.name = getOgcMetadata().getName();
110
                lyr.data = ifile.getAbsolutePath(); 
111
                lyr.type = "RASTER";
112
                lyr.dump = true;
113
                lyr.transparency = getLayerInfo().getOpacityPercent();
114

    
115
                //PROJECTION
116
                lyr.layercrs = new CRS(ds.getCRS(),true);                                                                
117

    
118
                //METADATA
119
                generateMetadata(lyr);
120

    
121
                //adds the layer into the map
122
                mapfile.add(lyr);                
123

    
124
        }
125
        /**
126
         * Generates the METADATA object
127
         * @param mapLayer
128
         */
129
        private void generateMetadata(MapLayer mapLayer){
130
                //add metadata
131
                mapLayer.metadata.wcs_name = getOgcMetadata().getName();
132
                mapLayer.metadata.wcs_label = getOgcMetadata().getTitle();
133
                mapLayer.metadata.wcs_description = getOgcMetadata().getAbstract();
134
                Rectangle2D aux = getLayerInfo().getBBox();
135
                String bbox = aux.getMinX() + " " + aux.getMinY() + " " + aux.getMaxX() + " " + aux.getMaxY();
136
                //mapLayer.metadata.wcs_extent = bbox;        
137
                mapLayer.metadata.wcs_srs= getLayerInfo().getDataSource().getCRS();
138
                mapLayer.metadata.wcs_rangeset_axes = "bands";
139
        }
140

    
141
}