2191: Geo Utility enhancements: update json parser to retrieve z-axis property
Task-Url: https://support.d4science.org/issues/2191 Added method to return zAxis bean git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/spatial-data/geo-utility@124012 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
c6df35cdc8
commit
8ab2bab5c8
|
@ -9,11 +9,13 @@ import java.util.Map;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.gcube.spatial.data.geoutility.bean.NcWmsLayerMetadata;
|
import org.gcube.spatial.data.geoutility.bean.NcWmsLayerMetadata;
|
||||||
|
import org.gcube.spatial.data.geoutility.bean.NcWmsLayerMetadata.METADATA;
|
||||||
import org.gcube.spatial.data.geoutility.bean.WmsParameters;
|
import org.gcube.spatial.data.geoutility.bean.WmsParameters;
|
||||||
import org.gcube.spatial.data.geoutility.wms.NcWmsGetMetadata;
|
import org.gcube.spatial.data.geoutility.wms.NcWmsGetMetadata;
|
||||||
import org.gcube.spatial.data.geoutility.wms.NcWmsGetMetadataRequest;
|
import org.gcube.spatial.data.geoutility.wms.NcWmsGetMetadataRequest;
|
||||||
import org.gcube.spatial.data.geoutility.wms.WmsGetStyles;
|
import org.gcube.spatial.data.geoutility.wms.WmsGetStyles;
|
||||||
import org.gcube.spatial.data.geoutility.wms.WmsUrlValidator;
|
import org.gcube.spatial.data.geoutility.wms.WmsUrlValidator;
|
||||||
|
import org.gcube.spatial.data.geoutility.wms.ZAxis;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -173,9 +175,16 @@ public class GeoGetStylesUtility {
|
||||||
logger.debug("Wms GetStyles not found, Trying to get styles by 'NcWmsGetMetadata'");
|
logger.debug("Wms GetStyles not found, Trying to get styles by 'NcWmsGetMetadata'");
|
||||||
isNcWms = true;
|
isNcWms = true;
|
||||||
try{
|
try{
|
||||||
NcWmsLayerMetadata ncMetadata = NcWmsGetMetadata.getMetadata(uriWMSService, layerName, connectionTimeout);
|
|
||||||
|
METADATA[] meta = new METADATA[3];
|
||||||
|
meta[0] = METADATA.SUPPORTEDSTYLES;
|
||||||
|
meta[1] = METADATA.DEFAULTPALETTE;
|
||||||
|
meta[2] = METADATA.PALETTES;
|
||||||
|
|
||||||
|
NcWmsLayerMetadata ncMetadata = NcWmsGetMetadata.getMetadata(uriWMSService, layerName, connectionTimeout, meta);
|
||||||
|
|
||||||
if(ncMetadata!=null && ncMetadata.getResponseCode()==200){
|
if(ncMetadata!=null && ncMetadata.getResponseCode()==200){
|
||||||
|
//STYLES
|
||||||
if(ncMetadata.getSupportedStyles().size()>0){
|
if(ncMetadata.getSupportedStyles().size()>0){
|
||||||
styles.add(ncMetadata.getSupportedStyles().get(0)+"/"+ncMetadata.getDefaultPalette()); //DEFAULT STYLE
|
styles.add(ncMetadata.getSupportedStyles().get(0)+"/"+ncMetadata.getDefaultPalette()); //DEFAULT STYLE
|
||||||
logger.debug("added ncWms default style: "+ncMetadata.getSupportedStyles().get(0)+"/"+ncMetadata.getDefaultPalette());
|
logger.debug("added ncWms default style: "+ncMetadata.getSupportedStyles().get(0)+"/"+ncMetadata.getDefaultPalette());
|
||||||
|
@ -190,6 +199,10 @@ public class GeoGetStylesUtility {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Z-AXIS
|
||||||
|
if(ncMetadata.getZAxis()!=null){
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
logger.error(e);
|
logger.error(e);
|
||||||
|
@ -203,6 +216,30 @@ public class GeoGetStylesUtility {
|
||||||
this.geoStyles = styles;
|
this.geoStyles = styles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load z axis values for a ncWMS layer
|
||||||
|
*
|
||||||
|
* @param connectionTimeout the connection timeout
|
||||||
|
* @return the z axis
|
||||||
|
*/
|
||||||
|
public ZAxis loadZAxis(int connectionTimeout){
|
||||||
|
|
||||||
|
String uriWMSService = validator.getBaseWmsServiceUrl();
|
||||||
|
String layerName = validator.getValueOfParsedWMSParameter(WmsParameters.LAYERS);
|
||||||
|
|
||||||
|
METADATA[] meta = new METADATA[1];
|
||||||
|
meta[0] = METADATA.Z_AXIS;
|
||||||
|
|
||||||
|
try {
|
||||||
|
NcWmsLayerMetadata ncMetadata = NcWmsGetMetadata.getMetadata(uriWMSService, layerName, connectionTimeout, meta);
|
||||||
|
return ncMetadata.getZAxis();
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
logger.error("Exception during ncWMS get zAxis: "+e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the geo styles.
|
* Gets the geo styles.
|
||||||
*
|
*
|
||||||
|
|
|
@ -23,10 +23,32 @@ public class NcWmsLayerMetadata implements Serializable {
|
||||||
private static final long serialVersionUID = 5111586382138532571L;
|
private static final long serialVersionUID = 5111586382138532571L;
|
||||||
|
|
||||||
//GET PARAMETERS
|
//GET PARAMETERS
|
||||||
public static final String SUPPORTEDSTYLES = "supportedStyles";
|
// public static final String SUPPORTEDSTYLES = "supportedStyles";
|
||||||
public static final String PALETTES = "palettes";
|
// public static final String PALETTES = "palettes";
|
||||||
public static final String DEFAULTPALETTE = "defaultPalette";
|
// public static final String DEFAULTPALETTE = "defaultPalette";
|
||||||
public static final String Z_AXIS = "zaxis";
|
// public static final String Z_AXIS = "zaxis";
|
||||||
|
|
||||||
|
public static enum METADATA {
|
||||||
|
SUPPORTEDSTYLES("supportedStyles"),
|
||||||
|
PALETTES("palettes"),
|
||||||
|
DEFAULTPALETTE("defaultPalette"),
|
||||||
|
Z_AXIS("zaxis");
|
||||||
|
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
METADATA(String key){
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the key
|
||||||
|
*/
|
||||||
|
public String getKey() {
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
private String defaultPalette;
|
private String defaultPalette;
|
||||||
private List<String> supportedStyles;
|
private List<String> supportedStyles;
|
||||||
|
|
|
@ -11,12 +11,14 @@ import java.net.SocketTimeoutException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.gcube.spatial.data.geoutility.bean.NcWmsLayerMetadata;
|
import org.gcube.spatial.data.geoutility.bean.NcWmsLayerMetadata;
|
||||||
|
import org.gcube.spatial.data.geoutility.bean.NcWmsLayerMetadata.METADATA;
|
||||||
import org.gcube.spatial.data.geoutility.bean.WmsParameters;
|
import org.gcube.spatial.data.geoutility.bean.WmsParameters;
|
||||||
import org.gcube.spatial.data.geoutility.util.UrlEncoderUtil;
|
import org.gcube.spatial.data.geoutility.util.UrlEncoderUtil;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
|
@ -44,19 +46,21 @@ public class NcWmsGetMetadata {
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public static NcWmsLayerMetadata getMetadata(String wmsServerUri, String layerName) throws Exception {
|
public static NcWmsLayerMetadata getMetadata(String wmsServerUri, String layerName) throws Exception {
|
||||||
return getMetadata(wmsServerUri, layerName, CONNECTION_TIMEOUT);
|
return getMetadata(wmsServerUri, layerName, CONNECTION_TIMEOUT, METADATA.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the metadata.
|
* Gets the metadata.
|
||||||
*
|
*
|
||||||
* @param wmsServerUri the wms server uri
|
* @param wmsServerUri the wms server uri
|
||||||
* @param layerName the layer name
|
* @param layerName the layer name
|
||||||
* @param connectionTimeout the connection timeout sets a specified timeout value, in milliseconds, to be used when opening URLConnection.
|
* @param connectionTimeout the connection timeout
|
||||||
|
* @param meta the meta
|
||||||
* @return the metadata
|
* @return the metadata
|
||||||
* @throws Exception the exception
|
* @throws Exception the exception
|
||||||
*/
|
*/
|
||||||
public static NcWmsLayerMetadata getMetadata(String wmsServerUri, String layerName, int connectionTimeout) throws Exception {
|
public static NcWmsLayerMetadata getMetadata(String wmsServerUri, String layerName, int connectionTimeout, NcWmsLayerMetadata.METADATA...meta) throws Exception {
|
||||||
|
|
||||||
if(wmsServerUri==null || wmsServerUri.isEmpty())
|
if(wmsServerUri==null || wmsServerUri.isEmpty())
|
||||||
throw new Exception("Invalid wms server uri");
|
throw new Exception("Invalid wms server uri");
|
||||||
|
@ -70,7 +74,7 @@ public class NcWmsGetMetadata {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
String query = UrlEncoderUtil.encodeQuery(parameters);
|
String query = UrlEncoderUtil.encodeQuery(parameters);
|
||||||
return openConnectionGetMetadata(wmsServerUri, query, connectionTimeout);
|
return openConnectionGetMetadata(wmsServerUri, query, connectionTimeout, meta);
|
||||||
|
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
logger.error("Error Exception with url " + wmsServerUri);
|
logger.error("Error Exception with url " + wmsServerUri);
|
||||||
|
@ -86,9 +90,10 @@ public class NcWmsGetMetadata {
|
||||||
* @param urlConn the url conn
|
* @param urlConn the url conn
|
||||||
* @param query the query
|
* @param query the query
|
||||||
* @param connectionTimeout the connection timeout sets a specified timeout value, in milliseconds, to be used when opening URLConnection.
|
* @param connectionTimeout the connection timeout sets a specified timeout value, in milliseconds, to be used when opening URLConnection.
|
||||||
|
* @param meta the meta
|
||||||
* @return the nc wms layer metadata
|
* @return the nc wms layer metadata
|
||||||
*/
|
*/
|
||||||
private static NcWmsLayerMetadata openConnectionGetMetadata(String urlConn, String query, int connectionTimeout) {
|
private static NcWmsLayerMetadata openConnectionGetMetadata(String urlConn, String query, int connectionTimeout, NcWmsLayerMetadata.METADATA...meta) {
|
||||||
|
|
||||||
URL url;
|
URL url;
|
||||||
NcWmsLayerMetadata metadata = null;
|
NcWmsLayerMetadata metadata = null;
|
||||||
|
@ -113,7 +118,7 @@ public class NcWmsGetMetadata {
|
||||||
int code = httpConnection.getResponseCode();
|
int code = httpConnection.getResponseCode();
|
||||||
|
|
||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
metadata = getMetadata(httpConnection);
|
metadata = getMetadata(httpConnection, meta);
|
||||||
metadata.setResponseCode(code);
|
metadata.setResponseCode(code);
|
||||||
}else{
|
}else{
|
||||||
logger.warn("openConnectionGetMetadata error, code = " + code +", returning");
|
logger.warn("openConnectionGetMetadata error, code = " + code +", returning");
|
||||||
|
@ -147,10 +152,11 @@ public class NcWmsGetMetadata {
|
||||||
* Gets the metadata.
|
* Gets the metadata.
|
||||||
*
|
*
|
||||||
* @param httpConnection the http connection
|
* @param httpConnection the http connection
|
||||||
|
* @param meta the meta
|
||||||
* @return the metadata
|
* @return the metadata
|
||||||
* @throws IOException Signals that an I/O exception has occurred.
|
* @throws IOException Signals that an I/O exception has occurred.
|
||||||
*/
|
*/
|
||||||
private static NcWmsLayerMetadata getMetadata(HttpURLConnection httpConnection) throws IOException{
|
private static NcWmsLayerMetadata getMetadata(HttpURLConnection httpConnection, METADATA[] meta) throws IOException{
|
||||||
|
|
||||||
InputStream source = null;
|
InputStream source = null;
|
||||||
NcWmsLayerMetadata metadata = new NcWmsLayerMetadata();
|
NcWmsLayerMetadata metadata = new NcWmsLayerMetadata();
|
||||||
|
@ -160,44 +166,57 @@ public class NcWmsGetMetadata {
|
||||||
String jsonTxt = IOUtils.toString(source);
|
String jsonTxt = IOUtils.toString(source);
|
||||||
metadata.setRawJson(jsonTxt);
|
metadata.setRawJson(jsonTxt);
|
||||||
|
|
||||||
|
if(meta==null)
|
||||||
|
meta = METADATA.values();
|
||||||
|
|
||||||
|
List<METADATA> listMeta = Arrays.asList(meta);
|
||||||
|
|
||||||
JSONObject json = new JSONObject(jsonTxt);
|
JSONObject json = new JSONObject(jsonTxt);
|
||||||
|
|
||||||
JSONArray supportedStyles = json.getJSONArray(NcWmsLayerMetadata.SUPPORTEDSTYLES);
|
if(listMeta.contains(NcWmsLayerMetadata.METADATA.SUPPORTEDSTYLES)){
|
||||||
if(supportedStyles!=null){
|
JSONArray supportedStyles = json.getJSONArray(NcWmsLayerMetadata.METADATA.SUPPORTEDSTYLES.getKey());
|
||||||
List<String> s = new ArrayList<String>(supportedStyles.length());
|
if(supportedStyles!=null){
|
||||||
for (int i=0; i<supportedStyles.length(); i++) {
|
List<String> s = new ArrayList<String>(supportedStyles.length());
|
||||||
s.add(supportedStyles.getString(i));
|
for (int i=0; i<supportedStyles.length(); i++) {
|
||||||
}
|
s.add(supportedStyles.getString(i));
|
||||||
metadata.setSupportedStyles(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONArray palettes = json.getJSONArray(NcWmsLayerMetadata.PALETTES);
|
|
||||||
if(palettes!=null){
|
|
||||||
List<String> s = new ArrayList<String>(palettes.length());
|
|
||||||
for (int i=0; i<palettes.length(); i++) {
|
|
||||||
s.add(palettes.getString(i));
|
|
||||||
}
|
|
||||||
metadata.setPalettes(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
metadata.setDefaultPalette(json.getString(NcWmsLayerMetadata.DEFAULTPALETTE));
|
|
||||||
|
|
||||||
JSONObject zaxis = json.getJSONObject(NcWmsLayerMetadata.Z_AXIS);
|
|
||||||
if(zaxis!=null){
|
|
||||||
System.out.println(zaxis);
|
|
||||||
ZAxis zAxis = new ZAxis();
|
|
||||||
zAxis.setUnits(zaxis.getString(ZAxis.UNITS));
|
|
||||||
zAxis.setPositive(zaxis.getBoolean(ZAxis.POSITIVE));
|
|
||||||
JSONArray values = zaxis.getJSONArray(ZAxis.VALUES);
|
|
||||||
System.out.println(values);
|
|
||||||
if(values!=null){
|
|
||||||
List<Integer> s = new ArrayList<Integer>(values.length());
|
|
||||||
for (int i=0; i<values.length(); i++) {
|
|
||||||
s.add(values.getInt(i));
|
|
||||||
}
|
}
|
||||||
zAxis.setValues(s);
|
metadata.setSupportedStyles(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(listMeta.contains(NcWmsLayerMetadata.METADATA.PALETTES)){
|
||||||
|
JSONArray palettes = json.getJSONArray(NcWmsLayerMetadata.METADATA.PALETTES.getKey());
|
||||||
|
if(palettes!=null){
|
||||||
|
List<String> s = new ArrayList<String>(palettes.length());
|
||||||
|
for (int i=0; i<palettes.length(); i++) {
|
||||||
|
s.add(palettes.getString(i));
|
||||||
|
}
|
||||||
|
metadata.setPalettes(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(listMeta.contains(NcWmsLayerMetadata.METADATA.DEFAULTPALETTE)){
|
||||||
|
metadata.setDefaultPalette(json.getString(NcWmsLayerMetadata.METADATA.DEFAULTPALETTE.getKey()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(listMeta.contains(NcWmsLayerMetadata.METADATA.Z_AXIS)){
|
||||||
|
JSONObject zaxis = json.getJSONObject(NcWmsLayerMetadata.METADATA.Z_AXIS.getKey());
|
||||||
|
if(zaxis!=null){
|
||||||
|
System.out.println(zaxis);
|
||||||
|
ZAxis zAxis = new ZAxis();
|
||||||
|
zAxis.setUnits(zaxis.getString(ZAxis.UNITS));
|
||||||
|
zAxis.setPositive(zaxis.getBoolean(ZAxis.POSITIVE));
|
||||||
|
JSONArray values = zaxis.getJSONArray(ZAxis.VALUES);
|
||||||
|
System.out.println(values);
|
||||||
|
if(values!=null){
|
||||||
|
List<Integer> s = new ArrayList<Integer>(values.length());
|
||||||
|
for (int i=0; i<values.length(); i++) {
|
||||||
|
s.add(values.getInt(i));
|
||||||
|
}
|
||||||
|
zAxis.setValues(s);
|
||||||
|
}
|
||||||
|
metadata.setZAxis(zAxis);
|
||||||
}
|
}
|
||||||
metadata.setZAxis(zAxis);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.trace("returning: "+metadata.toString());
|
logger.trace("returning: "+metadata.toString());
|
||||||
|
|
Loading…
Reference in New Issue