Revision 2316 org.gvsig.raster.wmts/branches/org.gvsig.raster.wmts_dataaccess_refactoring/org.gvsig.raster.wmts.app.wmtsclient/src/main/java/org/gvsig/raster/wmts/app/wmtsclient/layer/FLyrWMTS.java

View differences:

FLyrWMTS.java
24 24
import org.gvsig.fmap.dal.DataStoreParameters;
25 25
import org.gvsig.fmap.dal.coverage.RasterLocator;
26 26
import org.gvsig.fmap.dal.coverage.RasterManager;
27
import org.gvsig.fmap.dal.coverage.datastruct.BandList;
28 27
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
29 28
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
30 29
import org.gvsig.fmap.dal.coverage.datastruct.ViewPortData;
......
33 32
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
34 33
import org.gvsig.fmap.dal.coverage.exception.QueryException;
35 34
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
36
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
37
import org.gvsig.fmap.dal.coverage.grid.render.Render;
38 35
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
39 36
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
40 37
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
41 38
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
42
import org.gvsig.fmap.dal.coverage.store.props.Metadata;
43 39
import org.gvsig.fmap.dal.exception.DataException;
44 40
import org.gvsig.fmap.dal.exception.InitializeException;
45 41
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
......
62 58
import org.gvsig.raster.fmap.layers.NotAvailableStateException;
63 59
import org.gvsig.raster.fmap.legend.ImageLegend;
64 60
import org.gvsig.raster.util.CancelTaskImpl;
65
import org.gvsig.raster.util.persistence.PersistencyFilterParam;
66 61
import org.gvsig.raster.wmts.io.WMTSDataParameters;
67 62
import org.gvsig.raster.wmts.io.WMTSServerExplorer;
68 63
import org.gvsig.raster.wmts.io.WMTSServerExplorerParameters;
69
import org.gvsig.raster.wmts.ogc.exception.WMTSException;
70 64
import org.gvsig.tools.ToolsLocator;
71 65
import org.gvsig.tools.dynobject.DynObjectSet;
72 66
import org.gvsig.tools.dynobject.DynStruct;
73 67
import org.gvsig.tools.persistence.PersistenceManager;
74
import org.gvsig.tools.persistence.PersistentState;
75
import org.gvsig.tools.persistence.exception.PersistenceException;
76 68
import org.gvsig.tools.task.Cancellable;
77 69
import org.gvsig.tools.task.SimpleTaskStatus;
78 70
import org.gvsig.tools.task.TaskStatusManager;
......
86 78
 *
87 79
 */
88 80
public class FLyrWMTS extends DefaultFLyrRaster implements IHasImageLegend {
89
	public static final String           PERSISTENT_NAME           = "FLyrWMTS_Persistent";
90
	public static final String           PERSISTENT_DESCRIPTION    = "FLyrWMTS Persistent Definition";
91
	
92 81
	private static final GeometryManager geomManager               = GeometryLocator.getGeometryManager();
93 82
	private static final Logger          logger                    = LoggerFactory.getLogger(FLyrWMTS.class);
94 83
	private List<WeakReference<Thread>>	 disableUpdateDrawVersion;
......
96 85
	private boolean						 firstLoad                 = false;
97 86
	private RasterManager                rManager                  = RasterLocator.getManager();
98 87
	private DataStoreParameters          params                    = null;
99
	private WMTSServerExplorer           explorer                  = null;
88
	private WMTSServerExplorer           wmtsExplorer              = null;
100 89
	private boolean                      deleteCache               = false;
101 90

  
102
	@Override
103
	public void loadFromState(PersistentState state) throws PersistenceException {
104
		String host = state.getString("host");
105
		Object obj = state.get("parameters");
106
		WMTSDataParameters storedParams = null;
107
		if(obj instanceof WMTSDataParameters) {
108
			storedParams = (WMTSDataParameters) obj;
109
		}
110
		if(obj instanceof TileDataParameters) {
111
			DataParameters p = ((TileDataParameters) obj).getDataParameters();
112
			if(p instanceof WMTSDataParameters)
113
				storedParams = (WMTSDataParameters) p;
114
		}
115
		
116
		try {
117
			DataManager datamanager = DALLocator.getDataManager();
118
			WMTSServerExplorerParameters explorerParams = null;
119
			explorerParams = (WMTSServerExplorerParameters) datamanager.createServerExplorerParameters(WMTSServerExplorer.NAME);
120
			explorerParams.setHost("");
121
			explorerParams.setLongitudeFirst(new Boolean(false));
122
			explorer = (WMTSServerExplorer) datamanager.createServerExplorer(explorerParams);
123
			WMTSServerExplorerParameters params = (WMTSServerExplorerParameters)explorer.getParameters();
124
			params.setHost(host);
125
			
126
			if(!explorer.isHostReachable()) {
127
				loadLayer = false;
128
				super.loadFromState(state);
129
				return;
130
			}
131
			
132
			try {
133
				explorer.connect(new CancelTaskImpl());
134
			} catch (WMTSException e) {
135
				loadLayer = false;
136
				super.loadFromState(state);
137
				return;
138
			}
139
			
140
		} catch (Exception e) {
141
			throw new PersistenceException("Server comunication error", e);
142
		}
143

  
144
		loadLayer = true;
145
		
146
		DataStoreParameters paramsFromExplorer = explorer.getStoreParameters();
147
		WMTSDataParameters wmtsParamsFromExplorer = null;
148
		if(paramsFromExplorer instanceof WMTSDataParameters) {
149
			wmtsParamsFromExplorer = (WMTSDataParameters) paramsFromExplorer;
150
		}
151
		if(paramsFromExplorer instanceof TileDataParameters) {
152
			DataParameters p = ((TileDataParameters) paramsFromExplorer).getDataParameters();
153
			if(p instanceof WMTSDataParameters)
154
				wmtsParamsFromExplorer = (WMTSDataParameters) p;
155
		}
156
		
157
		String layerName = state.getString("layername");
158
		setName(layerName);
159
		wmtsParamsFromExplorer.setLayer(explorer.getOGCClient().getLayer(layerName));
160
		wmtsParamsFromExplorer.assignFields(storedParams);
161
		/*wmtsParamsFromExplorer.setImageFormat(state.getString(WMTSDataParameters.FIELD_IMAGE_FORMAT));
162
		wmtsParamsFromExplorer.setInfoFormat(state.getString(WMTSDataParameters.FIELD_INFO_FORMAT));
163
		wmtsParamsFromExplorer.setName(state.getString(WMTSDataParameters.FIELD_NAME));
164
		wmtsParamsFromExplorer.setSRS(state.getString(WMTSDataParameters.FIELD_SRSSTR));
165
		wmtsParamsFromExplorer.setOverrideHost(state.getBoolean(WMTSDataParameters.FIELD_OVERRIDE));
166
		wmtsParamsFromExplorer.setExtent((Rectangle2D)state.get(WMTSDataParameters.FIELD_EXTENT));*/
167
		params = wmtsParamsFromExplorer;
168
		
169
		dataStore = RasterLocator.getManager().getDataStructFactory().createDataStore();
170
		getDataStore().setParameters(wmtsParamsFromExplorer);
171
		getDataStore().loadFromState(state);
172
		
173
		super.loadFromState(state);
174
		this.fullEnvelope = (Envelope) state.get("fullEnvelope");
175
	}
176

  
177
	@Override
178
	public void saveToState(PersistentState state) throws PersistenceException {
179
		super.saveToState(state);
180
		WMTSDataParameters p = getWMTSParameters(params);
181
		
182
		state.set("fullEnvelope", this.fullEnvelope);
183
		state.set("host", p.getURI());
184
		state.set("layername", p.getLayer().getTitle());
185
		state.set("parameters", getParameters());
186
		/*state.set(WMTSDataParameters.FIELD_EXTENT, p.getExtent());
187
		state.set(WMTSDataParameters.FIELD_IMAGE_FORMAT, p.getImageFormat());
188
		state.set(WMTSDataParameters.FIELD_INFO_FORMAT, p.getInfoFormat());
189
		state.set(WMTSDataParameters.FIELD_NAME, p.getName());
190
		state.set(WMTSDataParameters.FIELD_SRSSTR, p.getSRSCode());
191
		state.set(WMTSDataParameters.FIELD_OVERRIDE, p.isOverridingHost());*/
192
		
193
		getDataStore().saveToState(state);
194
	}
195

  
196 91
	public static void registerPersistent() {
197 92
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
198
		DynStruct definition = manager.getDefinition(PERSISTENT_NAME);
93
		DynStruct definition = manager.getDefinition("FLyrWMTS_Persistent");
199 94
		if( definition == null ) {
200
			if (manager.getDefinition(FLyrDefault.class) == null) {
201
				FLyrDefault.registerPersistent();
95
			if (manager.getDefinition(DefaultFLyrRaster.class) == null) {
96
				DefaultFLyrRaster.registerPersistent();
202 97
			}
203 98

  
204 99
			definition = manager.addDefinition(
205 100
					FLyrWMTS.class,
206
					PERSISTENT_NAME,
207
					PERSISTENT_DESCRIPTION,
101
					"FLyrWMTS_Persistent",
102
					"FLyrWMTS Persistent Definition",
208 103
					null, 
209 104
					null
210 105
			);
211 106
			
212
			definition.extend(PersistenceManager.PERSISTENCE_NAMESPACE, "FLyrDefault");
107
			definition.extend(PersistenceManager.PERSISTENCE_NAMESPACE, DefaultFLyrRaster.PERSISTENT_NAME);
213 108
		}
214 109

  
215 110
		DefaultFLyrRaster.registerPersistence(definition);
216
		definition.addDynFieldObject("fullEnvelope").setClassOfValue(Envelope.class).setMandatory(false);
217
		definition.addDynFieldString("host").setMandatory(false);
218
		definition.addDynFieldString("layername").setMandatory(false);
219
		
220
		/*definition.addDynFieldObject(WMTSDataParameters.FIELD_EXTENT).setClassOfValue(Rectangle2D.class).setMandatory(false);
221
		definition.addDynFieldString(WMTSDataParameters.FIELD_IMAGE_FORMAT).setMandatory(false);
222
		definition.addDynFieldString(WMTSDataParameters.FIELD_INFO_FORMAT).setMandatory(false);
223
		definition.addDynFieldString(WMTSDataParameters.FIELD_NAME).setMandatory(false);			
224
		definition.addDynFieldString(WMTSDataParameters.FIELD_SRSSTR).setMandatory(false);
225
		definition.addDynFieldBoolean(WMTSDataParameters.FIELD_OVERRIDE).setMandatory(false);*/
226
		
227
		definition.addDynFieldObject("parameters").setClassOfValue(RasterDataParameters.class).setMandatory(true);
228
		definition.addDynFieldObject("bandList").setClassOfValue(BandList.class).setMandatory(false);
229
		definition.addDynFieldObject("metadata").setClassOfValue(Metadata.class).setMandatory(false);
230
		definition.addDynFieldObject("render").setClassOfValue(Render.class).setMandatory(true);
231
		definition.addDynFieldObject("filterList").setClassOfValue(RasterFilterList.class).setMandatory(false);
232
		definition.addDynFieldList("paramlist").setClassOfItems(PersistencyFilterParam.class).setMandatory(false);
233 111
	}
234

  
112
	
235 113
	public FLyrWMTS() {
236 114
		super();
237 115
		this.updateDrawVersion();
......
291 169
		if(!firstLoad) {
292 170
			try {
293 171
				initFilters();
172
				try {
173
					if(!isOpen())
174
						enableOpen();
175
				} catch (NotAvailableStateException e) {
176
					throw new ReadException("Fallo el estado de open. Closed=" + isClosed() + " Awake=" + isAwake(), e);
177
				}
294 178
			} catch (FilePaletteException e) {
295 179
				throw new ReadException(e.getMessage(), e);
296 180
			}
......
638 522
			try {
639 523
				explorerParams = (WMTSServerExplorerParameters) datamanager.createServerExplorerParameters(WMTSServerExplorer.NAME);
640 524
				explorerParams.setHost("");
641
				explorer = (WMTSServerExplorer) datamanager.createServerExplorer(explorerParams);
642
				params = explorer.getStoreParameters();
525
				wmtsExplorer = (WMTSServerExplorer) datamanager.createServerExplorer(explorerParams);
526
				params = wmtsExplorer.getStoredParameters();
643 527
			} catch (InitializeException e) {
644 528
			} catch (ProviderNotRegisteredException e) {
645 529
			} catch (ValidateDataParametersException e) {
......
673 557
     * @param explorer
674 558
     */
675 559
    public void setExplorer(WMTSServerExplorer explorer) {
676
    	this.explorer = explorer;
560
    	this.wmtsExplorer = explorer;
677 561
    }
678 562
    
679 563
    /**
......
681 565
     * @return
682 566
     */
683 567
    public WMTSServerExplorer getExplorer() {
684
    	return this.explorer;
568
    	return this.wmtsExplorer;
685 569
    }
686 570

  
687 571
	public Image getImageLegend() {
......
700 584
		newLayer.fullEnvelope = fullEnvelope;
701 585
		newLayer.params = params;
702 586
		newLayer.firstLoad = firstLoad;
703
		newLayer.explorer = explorer;
587
		newLayer.wmtsExplorer = wmtsExplorer;
704 588
		
705 589
		List<RasterFilter> filters = getRender().getFilterList().getStatusCloned();
706 590

  

Also available in: Unified diff