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
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