Revision 10626 trunk/extensions/extPublish/src/com/iver/cit/gvsig/publish/servers/mapserver/MapServerPublishControler.java

View differences:

MapServerPublishControler.java
60 60
import org.gvsig.remoteservices.conf.mapserver.MapServerConfiguration.WebMap;
61 61
import org.gvsig.remoteservices.conf.mapserver.test.AddFieldToDBF;
62 62

  
63
import com.iver.cit.gvsig.exceptions.layers.DriverLayerException;
64
import com.iver.cit.gvsig.exceptions.layers.FileLayerException;
65
import com.iver.cit.gvsig.exceptions.layers.LegendLayerException;
66
import com.iver.cit.gvsig.exceptions.layers.LoadLayerException;
67
import com.iver.cit.gvsig.exceptions.layers.NameLayerException;
68
import com.iver.cit.gvsig.exceptions.layers.ProjectionLayerException;
69
import com.iver.cit.gvsig.exceptions.layers.TypeLayerException;
70
import com.iver.cit.gvsig.exceptions.layers.XMLLayerException;
63 71
import com.iver.cit.gvsig.fmap.drivers.RasterDriver;
64 72
import com.iver.cit.gvsig.fmap.layers.FLayer;
65 73
import com.iver.cit.gvsig.fmap.layers.FLayers;
66 74
import com.iver.cit.gvsig.fmap.layers.FLyrRaster;
67
import com.iver.cit.gvsig.publish.layers.LayerException;
68 75
import com.iver.cit.gvsig.publish.layers.LayerLoader;
76
import com.iver.cit.gvsig.publish.layers.ParamsPostGisLayerException;
69 77
import com.iver.cit.gvsig.publish.model.LayerInfo;
70 78
import com.iver.cit.gvsig.publish.model.LayerInfoFactory;
71 79
import com.iver.cit.gvsig.publish.model.ServiceInfo;
72 80
import com.iver.cit.gvsig.publish.model.ServiceInfoFactory;
73
import com.iver.cit.gvsig.publish.model.WMSServiceInfo;
74 81
import com.iver.cit.gvsig.publish.persistence.PublishPersistence;
75 82
import com.iver.cit.gvsig.publish.servers.GenericServer;
76 83
import com.iver.cit.gvsig.publish.servers.PublishControler;
......
78 85
import com.iver.utiles.swing.jcomboServer.ServerData;
79 86

  
80 87
/**
81
 * This class implements the mapserver publication. It has to 
88
 * This class implements the mapserver publication. It has to
82 89
 * retrieve the current layers from gvSIG and create the
83
 * map file 
84
 * 
90
 * map file
91
 *
85 92
 * @author jvhigon
86
 * 
93
 *
87 94
 */
88 95
public class MapServerPublishControler extends PublishControler{
89 96
	private String dataPath = null; //"C:/ms4w/test/";
......
111 118
			serverData.getProperty(MapServer.WMS_IMAGEURL),
112 119
			serverData.getProperty(MapServer.WMS_IMAGEPATH));
113 120
	}
114
	
121

  
115 122
	/**
116
	 * 
123
	 *
117 124
	 * @param url
118 125
	 * @param path
119 126
	 * @param mapFile
......
121 128
	 * @param fontsFile
122 129
	 * @param ImageURL
123 130
	 * @param imagePath
124
	 * @throws LayerException 
125
	 * @throws LayerException 
131
	 * @throws LayerException
132
	 * @throws LayerException
126 133
	 */
127 134
	private ConfigFile publish(String onlineResource, String path, String mapFile,
128 135
			String symbolsFile, String fontsFile, String ImageURL,
129 136
			String imagePath) {
130 137
		dataPath = path;
131 138
		this.mapFile = mapFile;
132
				
133
		map = getConfigFile(dataPath);		
139

  
140
		map = getConfigFile(dataPath);
134 141
		map.www = getWebMapVect(onlineResource,imagePath,ImageURL);
135 142
		OutputFormat o = new OutputFormat("GEOTIFFINT16","GDAL/GTiff","INT16","tif");
136 143
		map.add(o);
......
149 156
							MapLayer mapLayer = (MapLayer)layers.get(j);
150 157
							if (mapLayer != null){
151 158
								map.add(mapLayer);
152
							}	
159
							}
153 160
						}
154 161
					}else{
155 162
						MapLayer mapLayer = publishSimpleLayer(lyr);
......
157 164
							map.add(mapLayer);
158 165
						}
159 166
					}
160
				}catch(LayerException e){					
161
					
167
				}catch(NameLayerException e){
168
					e.printStackTrace();
169
				}catch(DriverLayerException e){
170
					e.printStackTrace();
171
				}catch(FileLayerException e){
172
					e.printStackTrace();
173
				}catch(LegendLayerException e){
174
					e.printStackTrace();
175
				}catch(ParamsPostGisLayerException e){
176
					e.printStackTrace();
177
				}catch(ProjectionLayerException e){
178
					e.printStackTrace();
179
				}catch(TypeLayerException e){
180
					e.printStackTrace();
181
				}catch(XMLLayerException e){
182
					e.printStackTrace();
183
				}catch(LoadLayerException e){
184
					e.printStackTrace();
162 185
				}
163 186
			}
164
		} 
187
		}
165 188
		return map;
166
	}	
167
	
168
	private MapLayer publishSimpleLayer(FLayer layer) throws LayerException{
189
	}
190

  
191
	private MapLayer publishSimpleLayer(FLayer layer) throws LoadLayerException{
169 192
		MapLayer mapLayer = new MapServerLayerFactory().getMapLayer(layer,getService());
170 193
		if (mapLayer != null){
171 194
			if (getService().compareTo(ServerData.SERVER_TYPE_WMS) == 0){
......
182 205
		}
183 206
		return mapLayer;
184 207
	}
185
	
186
	private ArrayList publishGroupLayer(ConfigFile config,FLayers layers) throws LayerException{
208

  
209
	private ArrayList publishGroupLayer(ConfigFile config,FLayers layers) throws LoadLayerException{
187 210
		ArrayList mapLayers = new ArrayList();
188 211
		if (layers.getName().startsWith("[")){
189 212
			if (layers.getName().startsWith("[" + LayerLoader.GROUP_LAYER_TIME)){
......
203 226
		}
204 227
		return mapLayers;
205 228
	}
206
	
207
	
208
	private MapLayer publishMosaicLayer(ConfigFile config,FLayers layers) throws LayerException{
229

  
230

  
231
	private MapLayer publishMosaicLayer(ConfigFile config,FLayers layers) throws LoadLayerException{
209 232
		fileIndex = layers.getName().split("]")[1] + "_index.shp";
210 233
		MapLayer mapLayer = publishSimpleLayer(layers.getLayer(0));
211 234
		String[] sFiles = new String[layers.getLayersCount()];
212 235
		for (int i=0 ; i<sFiles.length ; i++){
213 236
			sFiles[i] = getRasterFile(layers.getLayer(i));
214 237
		}
215
		
238

  
216 239
		mapLayer.name = layers.getName().split("]")[1];
217 240
		mapLayer.tileIndex = fileIndex;
218 241
		mapLayer.tileItem = "location";
......
227 250
		}*/
228 251
		mapLayer.metadata.setExtent(extent);
229 252
		//We'll write on the same directory as mapfile
230
		
253

  
231 254
		generateIndex(dataPath + "/" + fileIndex,sFiles,null);
232
		return mapLayer;		
255
		return mapLayer;
233 256
	}
234
	
235
	private MapLayer publishTimeLayer(ConfigFile config,FLayers layers) throws LayerException{
257

  
258
	private MapLayer publishTimeLayer(ConfigFile config,FLayers layers) throws LoadLayerException{
236 259
		fileIndex = layers.getName().split("]")[1] + "_index.shp";
237 260
		MapLayer mapLayer = publishSimpleLayer(layers.getLayer(0));
238
		
261

  
239 262
		SortedSet times = new TreeSet();
240 263
		Hashtable files = new Hashtable();
241 264
		times.add(getTime(layers.getLayer(0).getName()));
......
243 266
		for (int i = 1; i < layers.getLayersCount(); i++) {
244 267
			times.add(getTime(layers.getLayer(i).getName()));
245 268
			files.put(getTime(layers.getLayer(i).getName()),getRasterFile(layers.getLayer(i)));
246
		}			
269
		}
247 270
		//Recuperar los files y los times en orden:
248 271
		Iterator it = times.iterator();
249 272
		String[] sFiles = new String[times.size()];
......
258 281
	        	timeExtent = timeExtent + ",";
259 282
	        }
260 283
	        i++;
261
	    }	    
284
	    }
262 285
		String sOptions = layers.getName().split("]")[0];
263 286
		String[] options = sOptions.split(",");
264 287
		mapLayer.name = layers.getName().split("]")[1];
......
270 293
		mapLayer.metadata.title = mapLayer.name;
271 294
		mapLayer.metadata.timeDefault = options[2];
272 295
		mapLayer.metadata.timeExtent = timeExtent;
273
		mapLayer.metadata.timeItem = "date";	
296
		mapLayer.metadata.timeItem = "date";
274 297
		generateIndex(dataPath + "/" + fileIndex,sFiles,sTimes);
275 298
		return mapLayer;
276 299
	}
277
	
278
	
279
	
300

  
301

  
302

  
280 303
	private String getRasterFile(FLayer layer){
281 304
		RasterDriver driver = ((RasterDriver)((FLyrRaster)layer).getSource().getDriver());
282 305
		return driver.getFiles()[0].getName();
283 306
	}
284
	
307

  
285 308
	private void generateIndex(String fileIndex,String[] fNames, String[] times){
286 309
		String cmd = getGDalPath() + "gdaltindex";
287 310
		String params =  fileIndex;
......
319 342
		}
320 343
		System.out.println("done.");
321 344
	}
322
	
345

  
323 346
	private void deleteIndexFile(String fileIndex) {
324 347
		File f = new File(fileIndex);
325 348
		if (f.exists()) {
......
330 353
				f.delete();
331 354
			}
332 355
		}
333
	}	
334
	
356
	}
357

  
335 358
	private String getTime(String layerName){
336 359
		String time = layerName.split("]")[0];
337 360
		return StringUtilities.replace(time,"[","");
338 361
	}
339
	
362

  
340 363
	private ConfigFile getConfigFile(String path){
341 364
		ConfigFile map = new ConfigFile();
342 365
		map.mapName = "TEST_MAPSERVER";
......
348 371
		map.setExtent(getMapCtrl().getMapContext().getViewPort().getAdjustedExtent());
349 372
		return map;
350 373
	}
351
	
374

  
352 375
	private WebMap getWebMapVect(String onlineResource,
353 376
			String imagePath,
354 377
			String imageURL){
......
369 392
		}
370 393
		return webMap;
371 394
	}
372
	
395

  
373 396
	private String getGDalPath(){
374 397
		PublishPersistence persistence = new PublishPersistence(this);
375
		return persistence.getGdalPath();	
398
		return persistence.getGdalPath();
376 399
	}
377 400

  
378 401
	/*
......
393 416
				layerInfo.setSrs(layer.crs.getCrs());
394 417
				layerInfo.setExtent(layer.metadata.extent);
395 418
				serviceInfo.addLayer(layerInfo);
396
			}		
419
			}
397 420
		}
398 421
		return serviceInfo;
399 422
	}
......
413 436
			layer.name = layerInfo.getName();
414 437
			layer.metadata.name = layerInfo.getName();
415 438
			layer.metadata.title = layerInfo.getTitle();
416
			layer.metadata.abstrac = layerInfo.getAbstrac();			
417
			layer.metadata.extent = layerInfo.getExtent();	
439
			layer.metadata.abstrac = layerInfo.getAbstrac();
440
			layer.metadata.extent = layerInfo.getExtent();
418 441
			layer.crs.setCrs(layerInfo.getSrs());
419
		}		
420
		map.generate(mapFile);		
442
		}
443
		map.generate(mapFile);
421 444
	}
422 445

  
423 446
}

Also available in: Unified diff