diff --git a/bindings/json/pom.xml b/bindings/json/pom.xml index 48894f4bf3..ca52731192 100644 --- a/bindings/json/pom.xml +++ b/bindings/json/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos bindings - 4.1.0 + 4.1.1 binding-json 52°North SOS - JSON Binding diff --git a/bindings/kvp/pom.xml b/bindings/kvp/pom.xml index 5498050255..119f7424d6 100644 --- a/bindings/kvp/pom.xml +++ b/bindings/kvp/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos bindings - 4.1.0 + 4.1.1 4.0.0 binding-kvp diff --git a/bindings/pom.xml b/bindings/pom.xml index a6ffdcfeda..c56690b3d4 100644 --- a/bindings/pom.xml +++ b/bindings/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 bindings pom diff --git a/bindings/pox/pom.xml b/bindings/pox/pom.xml index eb299c7e4f..36106bf960 100644 --- a/bindings/pox/pom.xml +++ b/bindings/pox/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos bindings - 4.1.0 + 4.1.1 4.0.0 binding-pox diff --git a/bindings/rest/code/pom.xml b/bindings/rest/code/pom.xml index b95bc81934..06f905a851 100644 --- a/bindings/rest/code/pom.xml +++ b/bindings/rest/code/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos rest - 4.1.0 + 4.1.1 rest-code 52°North SOS - Extension REST Binding - Core diff --git a/bindings/rest/pom.xml b/bindings/rest/pom.xml index b4322ace71..115f6dcd84 100644 --- a/bindings/rest/pom.xml +++ b/bindings/rest/pom.xml @@ -4,12 +4,12 @@ org.n52.sensorweb.sos bindings - 4.1.0 + 4.1.1 4.0.0 rest pom - 4.1.0 + 4.1.1 52°North SOS - Extension REST Binding RESTful binding for the 52°North SOS http://52north.org/communities/sensorweb/sosREST/ diff --git a/bindings/rest/xml/pom.xml b/bindings/rest/xml/pom.xml index 316405590d..ccf1a446ad 100644 --- a/bindings/rest/xml/pom.xml +++ b/bindings/rest/xml/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos rest - 4.1.0 + 4.1.1 rest-xml 52°North SOS - Extension REST Binding - XML diff --git a/bindings/soap/pom.xml b/bindings/soap/pom.xml index b4e6720bea..911be02457 100644 --- a/bindings/soap/pom.xml +++ b/bindings/soap/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos bindings - 4.1.0 + 4.1.1 4.0.0 binding-soap diff --git a/coding/json-common/pom.xml b/coding/json-common/pom.xml index befc35fbbf..406c15cb44 100644 --- a/coding/json-common/pom.xml +++ b/coding/json-common/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos coding - 4.1.0 + 4.1.1 4.0.0 coding-json-common diff --git a/coding/json/pom.xml b/coding/json/pom.xml index 7cb9a95512..07485d7aab 100644 --- a/coding/json/pom.xml +++ b/coding/json/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos coding - 4.1.0 + 4.1.1 4.0.0 coding-json diff --git a/coding/ows-v110/pom.xml b/coding/ows-v110/pom.xml index c158133ea7..e612822cff 100644 --- a/coding/ows-v110/pom.xml +++ b/coding/ows-v110/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos coding - 4.1.0 + 4.1.1 4.0.0 coding-ows-v110 diff --git a/coding/pom.xml b/coding/pom.xml index e3e5e5a267..f5f424a77f 100644 --- a/coding/pom.xml +++ b/coding/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 coding pom diff --git a/coding/sensorML-v101/pom.xml b/coding/sensorML-v101/pom.xml index 7f2df345d8..73537a37c5 100644 --- a/coding/sensorML-v101/pom.xml +++ b/coding/sensorML-v101/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos coding - 4.1.0 + 4.1.1 4.0.0 coding-sensorML-v101 diff --git a/coding/sos-v100/pom.xml b/coding/sos-v100/pom.xml index 31c966de49..2554f9cba7 100644 --- a/coding/sos-v100/pom.xml +++ b/coding/sos-v100/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos coding - 4.1.0 + 4.1.1 4.0.0 coding-sos-v100 diff --git a/coding/sos-v20/pom.xml b/coding/sos-v20/pom.xml index 637ab4af44..206f3d68c2 100644 --- a/coding/sos-v20/pom.xml +++ b/coding/sos-v20/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos coding - 4.1.0 + 4.1.1 4.0.0 coding-sos-v20 diff --git a/coding/wml-v20/pom.xml b/coding/wml-v20/pom.xml index 83f2a59690..ab640d37d3 100644 --- a/coding/wml-v20/pom.xml +++ b/coding/wml-v20/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos coding - 4.1.0 + 4.1.1 4.0.0 coding-wml-v20 diff --git a/core/admin/pom.xml b/core/admin/pom.xml index c87fb85112..b3511e3443 100644 --- a/core/admin/pom.xml +++ b/core/admin/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos core - 4.1.0 + 4.1.1 admin 52°North SOS - Administrator Service Operator diff --git a/core/api/pom.xml b/core/api/pom.xml index 2247d3ef3f..b2104db5f7 100644 --- a/core/api/pom.xml +++ b/core/api/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos core - 4.1.0 + 4.1.1 4.0.0 api diff --git a/core/api/src/main/java/org/n52/sos/request/GetFeatureOfInterestRequest.java b/core/api/src/main/java/org/n52/sos/request/GetFeatureOfInterestRequest.java index f5f1d85bab..b8fb8eabcc 100644 --- a/core/api/src/main/java/org/n52/sos/request/GetFeatureOfInterestRequest.java +++ b/core/api/src/main/java/org/n52/sos/request/GetFeatureOfInterestRequest.java @@ -211,7 +211,7 @@ public boolean containsOnlyFeatureParameter() { return !isSetObservableProperties() && !isSetProcedures() && !isSetTemporalFilters(); } - public boolean hasParameter() { + public boolean hasNoParameter() { return !isSetObservableProperties() && !isSetProcedures() && !isSetTemporalFilters() && !isSetFeatureOfInterestIdentifiers(); } diff --git a/core/cache/pom.xml b/core/cache/pom.xml index 8d9ef40081..49d85cc1cb 100644 --- a/core/cache/pom.xml +++ b/core/cache/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos core - 4.1.0 + 4.1.1 cache 52°North SOS - Cache diff --git a/core/gc-dao/pom.xml b/core/gc-dao/pom.xml index 35af0226e9..f310c7af1e 100644 --- a/core/gc-dao/pom.xml +++ b/core/gc-dao/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos core - 4.1.0 + 4.1.1 4.0.0 gc-dao diff --git a/core/pom.xml b/core/pom.xml index b8fcd43cdf..dabf3fff3b 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 core pom diff --git a/core/profile/coding/pom.xml b/core/profile/coding/pom.xml index a16d6dd8d5..84f9dbc169 100644 --- a/core/profile/coding/pom.xml +++ b/core/profile/coding/pom.xml @@ -4,7 +4,7 @@ profile org.n52.sensorweb.sos - 4.1.0 + 4.1.1 4.0.0 profile-coding diff --git a/core/profile/pom.xml b/core/profile/pom.xml index 190e3cebcd..f05a4dfd5d 100644 --- a/core/profile/pom.xml +++ b/core/profile/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos core - 4.1.0 + 4.1.1 4.0.0 profile diff --git a/core/profile/xml/pom.xml b/core/profile/xml/pom.xml index e4f38c9332..12be24794d 100644 --- a/core/profile/xml/pom.xml +++ b/core/profile/xml/pom.xml @@ -4,7 +4,7 @@ profile org.n52.sensorweb.sos - 4.1.0 + 4.1.1 4.0.0 profile-xml diff --git a/core/sqlite-config/pom.xml b/core/sqlite-config/pom.xml index e71e1391c5..e74a1875b0 100644 --- a/core/sqlite-config/pom.xml +++ b/core/sqlite-config/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos core - 4.1.0 + 4.1.1 sqlite-config 52°North SOS - SQLite Configuration diff --git a/core/test/pom.xml b/core/test/pom.xml index e03e5e3781..bc53245086 100644 --- a/core/test/pom.xml +++ b/core/test/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos core - 4.1.0 + 4.1.1 test 52°North SOS - Test Module diff --git a/extensions/do/core/pom.xml b/extensions/do/core/pom.xml index a78273125a..9d8b06cfb1 100644 --- a/extensions/do/core/pom.xml +++ b/extensions/do/core/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos do - 4.1.0 + 4.1.1 4.0.0 do-core diff --git a/extensions/do/hibernate/pom.xml b/extensions/do/hibernate/pom.xml index d99840a23f..164ece3a5a 100644 --- a/extensions/do/hibernate/pom.xml +++ b/extensions/do/hibernate/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos do - 4.1.0 + 4.1.1 4.0.0 do-hibernate diff --git a/extensions/do/json/pom.xml b/extensions/do/json/pom.xml index 5f65ae0216..5dfc7cfbdd 100644 --- a/extensions/do/json/pom.xml +++ b/extensions/do/json/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos do - 4.1.0 + 4.1.1 4.0.0 do-json diff --git a/extensions/do/kvp/pom.xml b/extensions/do/kvp/pom.xml index c2eb7e44f0..5903900140 100644 --- a/extensions/do/kvp/pom.xml +++ b/extensions/do/kvp/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos do - 4.1.0 + 4.1.1 4.0.0 do-kvp diff --git a/extensions/do/pom.xml b/extensions/do/pom.xml index d97bcfd7ed..d007d1e183 100644 --- a/extensions/do/pom.xml +++ b/extensions/do/pom.xml @@ -3,12 +3,12 @@ org.n52.sensorweb.sos extensions - 4.1.0 + 4.1.1 4.0.0 pom do - 4.1.0 + 4.1.1 52°North SOS - Extension Delete Observation 52°North SOS Extension Delete Observation diff --git a/extensions/do/xml/pom.xml b/extensions/do/xml/pom.xml index 27545dbe3e..f0fa82b957 100644 --- a/extensions/do/xml/pom.xml +++ b/extensions/do/xml/pom.xml @@ -3,7 +3,7 @@ org.n52.sensorweb.sos do - 4.1.0 + 4.1.1 4.0.0 do-xml diff --git a/extensions/gda/hibernate/pom.xml b/extensions/gda/hibernate/pom.xml index a8831f3f08..c1568eb34c 100644 --- a/extensions/gda/hibernate/pom.xml +++ b/extensions/gda/hibernate/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos gda - 4.1.0 + 4.1.1 gda-hibernate 52°North SOS - Extension GetDataAvailability - Hibernate DAO diff --git a/extensions/gda/operation/pom.xml b/extensions/gda/operation/pom.xml index 7ecc51aba0..541f6c601c 100644 --- a/extensions/gda/operation/pom.xml +++ b/extensions/gda/operation/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos gda - 4.1.0 + 4.1.1 gda-operation 52°North SOS - Extension GetDataAvailability - SOS 2.0 Operation diff --git a/extensions/gda/pom.xml b/extensions/gda/pom.xml index e2ab0b2c3b..2ae3129c0f 100644 --- a/extensions/gda/pom.xml +++ b/extensions/gda/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos extensions - 4.1.0 + 4.1.1 4.0.0 gda diff --git a/extensions/pom.xml b/extensions/pom.xml index 5556a6d5ea..ba4ea89767 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 extensions pom diff --git a/hibernate/common/pom.xml b/hibernate/common/pom.xml index 9e1a5066f3..e2ddbc6b4a 100644 --- a/hibernate/common/pom.xml +++ b/hibernate/common/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate - 4.1.0 + 4.1.1 4.0.0 hibernate-common diff --git a/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/AbstractObservationDAO.java b/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/AbstractObservationDAO.java index c0e491fc98..b4d92c1abf 100644 --- a/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/AbstractObservationDAO.java +++ b/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/AbstractObservationDAO.java @@ -30,6 +30,7 @@ import java.sql.Timestamp; import java.util.Collection; +import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -50,7 +51,6 @@ import org.joda.time.DateTimeZone; import org.n52.sos.ds.hibernate.entities.AbstractObservation; import org.n52.sos.ds.hibernate.entities.AbstractObservationTime; -import org.n52.sos.ds.hibernate.entities.AbstractSpatialFilteringProfile; import org.n52.sos.ds.hibernate.entities.Codespace; import org.n52.sos.ds.hibernate.entities.FeatureOfInterest; import org.n52.sos.ds.hibernate.entities.ObservableProperty; @@ -874,7 +874,26 @@ protected Criteria addIndeterminateTimeRestriction(Criteria c, SosIndeterminateT // get extrema indeterminate time c.setProjection(getIndeterminateTimeExtremaProjection(sosIndeterminateTime)); Timestamp indeterminateExtremaTime = (Timestamp) c.uniqueResult(); + return addIndeterminateTimeRestriction(c, sosIndeterminateTime, indeterminateExtremaTime); + } + /** + * Add an indeterminate time restriction to a criteria. This allows for + * multiple results if more than one observation has the extrema time (max + * for latest, min for first). Note: use this method *after* adding all + * other applicable restrictions so that they will apply to the min/max + * observation time determination. + * + * @param c + * Criteria to add the restriction to + * @param sosIndeterminateTime + * Indeterminate time restriction to add + * @param indeterminateExtremaTime + * Indeterminate time extrema + * @return Modified criteria + */ + protected Criteria addIndeterminateTimeRestriction(Criteria c, SosIndeterminateTime sosIndeterminateTime, + Date indeterminateExtremaTime) { // reset criteria // see http://stackoverflow.com/a/1472958/193435 c.setProjection(null); @@ -1162,5 +1181,5 @@ protected SosEnvelope getSpatialFilteringProfileEnvelopeForOfferingId(Class claz return null; } - public abstract List getSamplingGeometries(String feature, Session session); + public abstract List getSamplingGeometries(String feature, Session session); } diff --git a/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/series/SeriesObservationDAO.java b/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/series/SeriesObservationDAO.java index 7908455003..bb7e8e9256 100644 --- a/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/series/SeriesObservationDAO.java +++ b/hibernate/common/src/main/java/org/n52/sos/ds/hibernate/dao/series/SeriesObservationDAO.java @@ -266,21 +266,22 @@ public List getSeriesObservationsFor(GetObservationRequest re Collection features, Session session) throws OwsExceptionReport { return getSeriesObservationsFor(request, features, null, null, session); } - + /** - * Query series observations {@link ScrollableResults} for GetObservation request and features + * Query series observations {@link ScrollableResults} for GetObservation + * request and features * * @param request - * GetObservation request + * GetObservation request * @param features - * Collection of feature identifiers resolved from the request + * Collection of feature identifiers resolved from the request * @param session - * Hibernate session + * Hibernate session * @return {@link ScrollableResults} of Series observations that fit - * @throws OwsExceptionReport + * @throws OwsExceptionReport */ - public ScrollableResults getStreamingSeriesObservationsFor(GetObservationRequest request, Collection features, - Session session) throws OwsExceptionReport { + public ScrollableResults getStreamingSeriesObservationsFor(GetObservationRequest request, + Collection features, Session session) throws OwsExceptionReport { return getStreamingSeriesObservationsFor(request, features, null, null, session); } @@ -304,23 +305,25 @@ public List getSeriesObservationsFor(GetObservationRequest re Collection features, Criterion filterCriterion, Session session) throws OwsExceptionReport { return getSeriesObservationsFor(request, features, filterCriterion, null, session); } - + /** - * Query series observations {@link ScrollableResults} for GetObservation request, features, and a filter criterion (typically a temporal filter) + * Query series observations {@link ScrollableResults} for GetObservation + * request, features, and a filter criterion (typically a temporal filter) * * @param request - * GetObservation request + * GetObservation request * @param features - * Collection of feature identifiers resolved from the request + * Collection of feature identifiers resolved from the request * @param filterCriterion - * Criterion to apply to criteria query (typically a temporal filter) + * Criterion to apply to criteria query (typically a temporal + * filter) * @param session - * Hibernate session + * Hibernate session * @return {@link ScrollableResults} of Series observations that fit - * @throws OwsExceptionReport + * @throws OwsExceptionReport */ - public ScrollableResults getStreamingSeriesObservationsFor(GetObservationRequest request, Collection features, - Criterion filterCriterion, Session session) throws OwsExceptionReport { + public ScrollableResults getStreamingSeriesObservationsFor(GetObservationRequest request, + Collection features, Criterion filterCriterion, Session session) throws OwsExceptionReport { return getStreamingSeriesObservationsFor(request, features, filterCriterion, null, session); } @@ -366,85 +369,101 @@ public List getSeriesObservationsFor(GetObservationRequest re * @throws OwsExceptionReport */ @SuppressWarnings("unchecked") - private List getSeriesObservationsFor(GetObservationRequest request, Collection features, - Criterion filterCriterion, SosIndeterminateTime sosIndeterminateTime, Session session) throws OwsExceptionReport { - return getSeriesObservationCriteriaFor(request, features, filterCriterion, sosIndeterminateTime, session).list(); + private List getSeriesObservationsFor(GetObservationRequest request, + Collection features, Criterion filterCriterion, SosIndeterminateTime sosIndeterminateTime, + Session session) throws OwsExceptionReport { + return getSeriesObservationCriteriaFor(request, features, filterCriterion, sosIndeterminateTime, session) + .list(); } - + /** - * Query series observations for GetObservation request, features, and filter criterion (typically a temporal filter) or - * an indeterminate time (first/latest). This method is private and accepts all possible arguments for request-based - * getSeriesObservationFor. Other public methods overload this method with sensible combinations of arguments. + * Query series observations for GetObservation request, features, and + * filter criterion (typically a temporal filter) or an indeterminate time + * (first/latest). This method is private and accepts all possible arguments + * for request-based getSeriesObservationFor. Other public methods overload + * this method with sensible combinations of arguments. * * @param request - * GetObservation request + * GetObservation request * @param features - * Collection of feature identifiers resolved from the request + * Collection of feature identifiers resolved from the request * @param filterCriterion - * Criterion to apply to criteria query (typically a temporal filter) + * Criterion to apply to criteria query (typically a temporal + * filter) * @param sosIndeterminateTime - * Indeterminate time to use in a temporal filter (first/latest) + * Indeterminate time to use in a temporal filter (first/latest) * @param session * @return {@link ScrollableResults} of Series observations that fits - * @throws OwsExceptionReport + * @throws OwsExceptionReport */ - private ScrollableResults getStreamingSeriesObservationsFor(GetObservationRequest request, Collection features, - Criterion filterCriterion, SosIndeterminateTime sosIndeterminateTime, Session session) throws OwsExceptionReport { - return getSeriesObservationCriteriaFor(request, features, filterCriterion, sosIndeterminateTime, session).setReadOnly(true).scroll(ScrollMode.FORWARD_ONLY); + private ScrollableResults getStreamingSeriesObservationsFor(GetObservationRequest request, + Collection features, Criterion filterCriterion, SosIndeterminateTime sosIndeterminateTime, + Session session) throws OwsExceptionReport { + return getSeriesObservationCriteriaFor(request, features, filterCriterion, sosIndeterminateTime, session) + .setReadOnly(true).scroll(ScrollMode.FORWARD_ONLY); } - + /** - * Create series observations {@link Criteria} for GetObservation request, features, and filter criterion (typically a temporal filter) or - * an indeterminate time (first/latest). This method is private and accepts all possible arguments for request-based - * getSeriesObservationFor. Other public methods overload this method with sensible combinations of arguments. + * Create series observations {@link Criteria} for GetObservation request, + * features, and filter criterion (typically a temporal filter) or an + * indeterminate time (first/latest). This method is private and accepts all + * possible arguments for request-based getSeriesObservationFor. Other + * public methods overload this method with sensible combinations of + * arguments. * * @param request - * GetObservation request + * GetObservation request * @param features - * Collection of feature identifiers resolved from the request + * Collection of feature identifiers resolved from the request * @param filterCriterion - * Criterion to apply to criteria query (typically a temporal filter) + * Criterion to apply to criteria query (typically a temporal + * filter) * @param sosIndeterminateTime - * Indeterminate time to use in a temporal filter (first/latest) + * Indeterminate time to use in a temporal filter (first/latest) * @param session * @return Series observations {@link Criteria} - * @throws OwsExceptionReport + * @throws OwsExceptionReport */ private Criteria getSeriesObservationCriteriaFor(GetObservationRequest request, Collection features, - Criterion filterCriterion, SosIndeterminateTime sosIndeterminateTime, Session session) throws OwsExceptionReport { - final Criteria c = getDefaultObservationCriteria(SeriesObservation.class, session) - .createAlias(SeriesObservation.SERIES, "s"); - - checkAndAddSpatialFilteringProfileCriterion(c, request, session); - - if (CollectionHelper.isNotEmpty(request.getProcedures())) { - c.createCriteria("s." + Series.PROCEDURE).add(Restrictions.in(Procedure.IDENTIFIER, request.getProcedures())); - } - - if (CollectionHelper.isNotEmpty(request.getObservedProperties())) { - c.createCriteria("s." + Series.OBSERVABLE_PROPERTY).add(Restrictions.in(ObservableProperty.IDENTIFIER, - request.getObservedProperties())); - } - - if (CollectionHelper.isNotEmpty(features)) { - c.createCriteria("s." + Series.FEATURE_OF_INTEREST).add(Restrictions.in(FeatureOfInterest.IDENTIFIER, features)); - } - - if (CollectionHelper.isNotEmpty(request.getOfferings())) { - c.createCriteria(SeriesObservation.OFFERINGS).add(Restrictions.in(Offering.IDENTIFIER, request.getOfferings())); - } - - String logArgs = "request, features, offerings"; - if (filterCriterion != null) { - logArgs += ", filterCriterion"; - c.add(filterCriterion); - } - if (sosIndeterminateTime != null) { - logArgs += ", sosIndeterminateTime"; - addIndeterminateTimeRestriction(c, sosIndeterminateTime); - } - LOGGER.debug("QUERY getSeriesObservationFor({}): {}", logArgs, HibernateHelper.getSqlString(c)); - return c; + Criterion filterCriterion, SosIndeterminateTime sosIndeterminateTime, Session session) + throws OwsExceptionReport { + final Criteria c = + getDefaultObservationCriteria(SeriesObservation.class, session).createAlias(SeriesObservation.SERIES, + "s"); + + checkAndAddSpatialFilteringProfileCriterion(c, request, session); + + if (CollectionHelper.isNotEmpty(request.getProcedures())) { + c.createCriteria("s." + Series.PROCEDURE).add( + Restrictions.in(Procedure.IDENTIFIER, request.getProcedures())); + } + + if (CollectionHelper.isNotEmpty(request.getObservedProperties())) { + c.createCriteria("s." + Series.OBSERVABLE_PROPERTY).add( + Restrictions.in(ObservableProperty.IDENTIFIER, request.getObservedProperties())); + } + + if (CollectionHelper.isNotEmpty(features)) { + c.createCriteria("s." + Series.FEATURE_OF_INTEREST).add( + Restrictions.in(FeatureOfInterest.IDENTIFIER, features)); + } + + if (CollectionHelper.isNotEmpty(request.getOfferings())) { + c.createCriteria(SeriesObservation.OFFERINGS).add( + Restrictions.in(Offering.IDENTIFIER, request.getOfferings())); + } + + String logArgs = "request, features, offerings"; + if (filterCriterion != null) { + logArgs += ", filterCriterion"; + c.add(filterCriterion); + } + if (sosIndeterminateTime != null) { + logArgs += ", sosIndeterminateTime"; + addIndeterminateTimeRestriction(c, sosIndeterminateTime); + } + LOGGER.debug("QUERY getSeriesObservationFor({}): {}", logArgs, HibernateHelper.getSqlString(c)); + return c; } @SuppressWarnings("unchecked") @@ -461,12 +480,79 @@ public List getSeriesObservationsFor(Series series, GetObserv } String logArgs = "request, features, offerings"; logArgs += ", sosIndeterminateTime"; - addIndeterminateTimeRestriction(c, sosIndeterminateTime); + addIndeterminateTimeRestriction(c, sosIndeterminateTime, series); LOGGER.debug("QUERY getSeriesObservationFor({}): {}", logArgs, HibernateHelper.getSqlString(c)); return c.list(); } + /** + * Add an indeterminate time restriction to a criteria for series support. + * + * + * This allows for multiple results if more than one observation has the + * extrema time (max for latest, min for first). Note: use this method + * *after* adding all other applicable restrictions so that they will apply + * to the min/max observation time determination. + * + * @param c + * Criteria to add the restriction to + * @param sosIndeterminateTime + * Indeterminate time restriction to add + * @param series + * Series to ch + * @return Modified criteria + */ + protected Criteria addIndeterminateTimeRestriction(Criteria c, SosIndeterminateTime sosIndeterminateTime, + Series series) { + if (checkIndeterminateTimeAndSeries(sosIndeterminateTime, series)) { + // get extrema indeterminate time + Date indeterminateExtremaTime = getFirstLastestTimeStamp(sosIndeterminateTime, series); + return addIndeterminateTimeRestriction(c, sosIndeterminateTime, indeterminateExtremaTime); + } else { + return super.addIndeterminateTimeRestriction(c, sosIndeterminateTime); + } + + } + + /** + * Check if {@link Series} contains first or last timestamp for + * {@link SosIndeterminateTime}. + * + * @param indetTime + * {@link SosIndeterminateTime} to check + * @param series + * {@link Series} to check + * @return true, if the {@link Series} contains the appropriate + * {@link SosIndeterminateTime} timestamp + */ + protected boolean checkIndeterminateTimeAndSeries(SosIndeterminateTime indetTime, Series series) { + if (indetTime.equals(SosIndeterminateTime.first) && series.isSetFirstTimeStamp()) { + return true; + } else if (indetTime.equals(SosIndeterminateTime.latest) && series.isSetLastTimeStamp()) { + return true; + } + return false; + } + + /** + * Get the first or last timestamp from {@link Series} + * + * @param indetTime + * {@link SosIndeterminateTime} to get timestamp for + * @param series + * {@link Series} to get timestamp from + * @return the appropriate {@link SosIndeterminateTime} timestamp + */ + protected Date getFirstLastestTimeStamp(SosIndeterminateTime indetTime, Series series) { + if (indetTime.equals(SosIndeterminateTime.first) && series.isSetFirstTimeStamp()) { + return series.getFirstTimeStamp(); + } else if (indetTime.equals(SosIndeterminateTime.latest) && series.isSetLastTimeStamp()) { + return series.getLastTimeStamp(); + } + return null; + } + /** * Query the min time from series observations for series * @@ -782,7 +868,9 @@ public Collection getObservationIdentifiers(String procedureIdentifier, public ScrollableResults getSeriesNotMatchingSeries(Set seriesIDs, GetObservationRequest request, Set features, Criterion temporalFilterCriterion, Session session) throws OwsExceptionReport { - Criteria c = getSeriesObservationCriteriaFor(request, features, temporalFilterCriterion, null, session).createAlias(SeriesObservation.SERIES, "s"); + Criteria c = + getSeriesObservationCriteriaFor(request, features, temporalFilterCriterion, null, session) + .createAlias(SeriesObservation.SERIES, "s"); c.add(Restrictions.not(Restrictions.in("s." + Series.ID, seriesIDs))); c.setProjection(Projections.property(SeriesObservation.SERIES)); return c.setReadOnly(true).scroll(ScrollMode.FORWARD_ONLY); @@ -790,19 +878,23 @@ public ScrollableResults getSeriesNotMatchingSeries(Set seriesIDs, GetObse public ScrollableResults getSeriesNotMatchingSeries(Set seriesIDs, GetObservationRequest request, Set features, Session session) throws OwsExceptionReport { - Criteria c = getSeriesObservationCriteriaFor(request, features, null, null, session).createAlias(SeriesObservation.SERIES, "s"); + Criteria c = + getSeriesObservationCriteriaFor(request, features, null, null, session).createAlias( + SeriesObservation.SERIES, "s"); c.add(Restrictions.not(Restrictions.in("s." + Series.ID, seriesIDs))); return c.setReadOnly(true).scroll(ScrollMode.FORWARD_ONLY); } @Override - public SosEnvelope getSpatialFilteringProfileEnvelopeForOfferingId(String offeringID, Session session) throws OwsExceptionReport { + public SosEnvelope getSpatialFilteringProfileEnvelopeForOfferingId(String offeringID, Session session) + throws OwsExceptionReport { return getSpatialFilteringProfileEnvelopeForOfferingId(SeriesObservationTime.class, offeringID, session); } @Override public List getSamplingGeometries(String feature, Session session) { - Criteria criteria = session.createCriteria(SeriesObservationTime.class).createAlias(SeriesObservation.SERIES, "s"); + Criteria criteria = + session.createCriteria(SeriesObservationTime.class).createAlias(SeriesObservation.SERIES, "s"); criteria.createCriteria("s." + Series.FEATURE_OF_INTEREST).add(eq(FeatureOfInterest.IDENTIFIER, feature)); criteria.addOrder(Order.asc(AbstractObservationTime.PHENOMENON_TIME_START)); criteria.setProjection(Projections.property(AbstractObservationTime.SAMPLING_GEOMETRY)); @@ -810,41 +902,39 @@ public List getSamplingGeometries(String feature, Session session) { return criteria.list(); } - /** - * Get the first not deleted observation for the {@link Series} - * - * @param series - * Series to get observation for - * @param session - * Hibernate session - * @return First not deleted observation - */ - public SeriesObservation getFirstObservationFor(Series series, Session session) { - Criteria c = getDefaultObservationCriteria(session); - c.add(Restrictions.eq(SeriesObservation.SERIES, series)); - c.addOrder(Order.asc(AbstractObservation.PHENOMENON_TIME_START)); - c.setMaxResults(1); - LOGGER.debug("QUERY getFirstObservationFor(series): {}", - HibernateHelper.getSqlString(c)); - return (SeriesObservation)c.uniqueResult(); - } - - /** - * Get the last not deleted observation for the {@link Series} - * - * @param series - * Series to get observation for - * @param session - * Hibernate session - * @return Last not deleted observation - */ - public SeriesObservation getLastObservationFor(Series series, Session session) { - Criteria c = getDefaultObservationCriteria(session); - c.add(Restrictions.eq(SeriesObservation.SERIES, series)); - c.addOrder(Order.desc(AbstractObservation.PHENOMENON_TIME_END)); - c.setMaxResults(1); - LOGGER.debug("QUERY getLastObservationFor(series): {}", - HibernateHelper.getSqlString(c)); - return (SeriesObservation)c.uniqueResult(); - } + /** + * Get the first not deleted observation for the {@link Series} + * + * @param series + * Series to get observation for + * @param session + * Hibernate session + * @return First not deleted observation + */ + public SeriesObservation getFirstObservationFor(Series series, Session session) { + Criteria c = getDefaultObservationCriteria(session); + c.add(Restrictions.eq(SeriesObservation.SERIES, series)); + c.addOrder(Order.asc(AbstractObservation.PHENOMENON_TIME_START)); + c.setMaxResults(1); + LOGGER.debug("QUERY getFirstObservationFor(series): {}", HibernateHelper.getSqlString(c)); + return (SeriesObservation) c.uniqueResult(); + } + + /** + * Get the last not deleted observation for the {@link Series} + * + * @param series + * Series to get observation for + * @param session + * Hibernate session + * @return Last not deleted observation + */ + public SeriesObservation getLastObservationFor(Series series, Session session) { + Criteria c = getDefaultObservationCriteria(session); + c.add(Restrictions.eq(SeriesObservation.SERIES, series)); + c.addOrder(Order.desc(AbstractObservation.PHENOMENON_TIME_END)); + c.setMaxResults(1); + LOGGER.debug("QUERY getLastObservationFor(series): {}", HibernateHelper.getSqlString(c)); + return (SeriesObservation) c.uniqueResult(); + } } diff --git a/hibernate/dao/pom.xml b/hibernate/dao/pom.xml index a919b8f3f1..7257cc5fe0 100644 --- a/hibernate/dao/pom.xml +++ b/hibernate/dao/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate - 4.1.0 + 4.1.1 4.0.0 hibernate-dao diff --git a/hibernate/dao/src/main/java/org/n52/sos/ds/hibernate/GetFeatureOfInterestDAO.java b/hibernate/dao/src/main/java/org/n52/sos/ds/hibernate/GetFeatureOfInterestDAO.java index b612f5e6a3..ff57931820 100644 --- a/hibernate/dao/src/main/java/org/n52/sos/ds/hibernate/GetFeatureOfInterestDAO.java +++ b/hibernate/dao/src/main/java/org/n52/sos/ds/hibernate/GetFeatureOfInterestDAO.java @@ -91,7 +91,7 @@ public class GetFeatureOfInterestDAO extends AbstractGetFeatureOfInterestDAO imp private static final String SQL_QUERY_GET_FEATURE_FOR_IDENTIFIER_PROCEDURE = "getFeatureForIdentifierProcedure"; private static final String SQL_QUERY_GET_FEATURE_FOR_IDENTIFIER_OBSERVED_PROPERTY = - "getFeatureForIdentifieObservableProperty"; + "getFeatureForIdentifierObservableProperty"; private static final String SQL_QUERY_GET_FEATURE_FOR_IDENTIFIER_PROCEDURE_OBSERVED_PROPERTY = "getFeatureForIdentifierProcedureObservableProperty"; @@ -268,7 +268,7 @@ private void addRequestedRelatedFeatures(final Set foiIDs, final List queryFeatureIdentifiersForParameter(final GetFeatureOfInterestRequest req, final Session session) throws OwsExceptionReport { - if (req.hasParameter()) { + if (req.hasNoParameter()) { return new FeatureOfInterestDAO().getFeatureOfInterestIdentifiers(session); } if (req.containsOnlyFeatureParameter() && req.isSetFeatureOfInterestIdentifiers()) { @@ -360,6 +360,9 @@ private Criteria getCriteriaForFeatureIdentifiersOfParameterFromOldObservations( @SuppressWarnings("unchecked") private List queryFeatureIdentifiersForParameterForSeries(GetFeatureOfInterestRequest req, Session session) { final Criteria c = session.createCriteria(FeatureOfInterest.class); + if (req.isSetFeatureOfInterestIdentifiers()) { + c.add(Restrictions.in(FeatureOfInterest.IDENTIFIER, req.getFeatureIdentifiers())); + } c.add(Subqueries.propertyIn(FeatureOfInterest.ID, getDetachedCriteriaForSeriesWithProcedureObservableProperty(req, session))); c.setProjection(Projections.distinct(Projections.property(FeatureOfInterest.IDENTIFIER))); @@ -412,6 +415,9 @@ private List queryFeatureIdentifiersForParameterForSos100(GetFeatureOfIn private Criteria getCriteriaForFeatureIdentifiersOfParameterFromSeriesObservations( GetFeatureOfInterestRequest req, Session session) throws OwsExceptionReport { final Criteria c = session.createCriteria(FeatureOfInterest.class); + if (req.isSetFeatureOfInterestIdentifiers()) { + c.add(Restrictions.in(FeatureOfInterest.IDENTIFIER, req.getFeatureIdentifiers())); + } c.add(Subqueries.propertyIn(FeatureOfInterest.ID, getDetachedCriteriaForFeautreOfInterestForSeries(req, session))); c.setProjection(Projections.distinct(Projections.property(FeatureOfInterest.IDENTIFIER))); diff --git a/hibernate/datasource/common/pom.xml b/hibernate/datasource/common/pom.xml index ae344d7c2a..e7db09ebcf 100644 --- a/hibernate/datasource/common/pom.xml +++ b/hibernate/datasource/common/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate-datasource - 4.1.0 + 4.1.1 4.0.0 hibernate-datasource-common diff --git a/hibernate/datasource/h2/pom.xml b/hibernate/datasource/h2/pom.xml index 01e4116655..d5f35b858a 100644 --- a/hibernate/datasource/h2/pom.xml +++ b/hibernate/datasource/h2/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate-datasource - 4.1.0 + 4.1.1 4.0.0 hibernate-datasource-h2 diff --git a/hibernate/datasource/mysql/pom.xml b/hibernate/datasource/mysql/pom.xml index f5e4b781f1..2657e0fd36 100644 --- a/hibernate/datasource/mysql/pom.xml +++ b/hibernate/datasource/mysql/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate-datasource - 4.1.0 + 4.1.1 4.0.0 hibernate-datasource-mysql diff --git a/hibernate/datasource/oracle/pom.xml b/hibernate/datasource/oracle/pom.xml index 45dbc6b98a..753e72264c 100644 --- a/hibernate/datasource/oracle/pom.xml +++ b/hibernate/datasource/oracle/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate-datasource - 4.1.0 + 4.1.1 4.0.0 hibernate-datasource-oracle diff --git a/hibernate/datasource/pom.xml b/hibernate/datasource/pom.xml index e108489d8a..770e19697d 100644 --- a/hibernate/datasource/pom.xml +++ b/hibernate/datasource/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate - 4.1.0 + 4.1.1 4.0.0 hibernate-datasource diff --git a/hibernate/datasource/postgres/pom.xml b/hibernate/datasource/postgres/pom.xml index 5893f532ab..f63953e3fd 100644 --- a/hibernate/datasource/postgres/pom.xml +++ b/hibernate/datasource/postgres/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate-datasource - 4.1.0 + 4.1.1 4.0.0 hibernate-datasource-postgres diff --git a/hibernate/datasource/sqlserver/pom.xml b/hibernate/datasource/sqlserver/pom.xml index b0396f1a0e..f91bf8a01c 100644 --- a/hibernate/datasource/sqlserver/pom.xml +++ b/hibernate/datasource/sqlserver/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate-datasource - 4.1.0 + 4.1.1 4.0.0 hibernate-datasource-sqlserver diff --git a/hibernate/feature/pom.xml b/hibernate/feature/pom.xml index 7537bcc2f5..bb289b7120 100644 --- a/hibernate/feature/pom.xml +++ b/hibernate/feature/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate - 4.1.0 + 4.1.1 4.0.0 hibernate-feature diff --git a/hibernate/h2/pom.xml b/hibernate/h2/pom.xml index cce4ae503a..b0e2505c9c 100644 --- a/hibernate/h2/pom.xml +++ b/hibernate/h2/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos hibernate - 4.1.0 + 4.1.1 hibernate-h2 52°North SOS - Hibernate H2 diff --git a/hibernate/mappings/pom.xml b/hibernate/mappings/pom.xml index e2326aa4fd..321b64936d 100644 --- a/hibernate/mappings/pom.xml +++ b/hibernate/mappings/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos hibernate - 4.1.0 + 4.1.1 hibernate-mappings 52°North SOS - Hibernate Mappings diff --git a/hibernate/pom.xml b/hibernate/pom.xml index 4f2aabe3f5..408927e2cc 100644 --- a/hibernate/pom.xml +++ b/hibernate/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 hibernate pom diff --git a/hibernate/session-factory/pom.xml b/hibernate/session-factory/pom.xml index 5e9452f715..6494bdf6cd 100644 --- a/hibernate/session-factory/pom.xml +++ b/hibernate/session-factory/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos hibernate - 4.1.0 + 4.1.1 4.0.0 hibernate-session-factory diff --git a/operations/core-v100/pom.xml b/operations/core-v100/pom.xml index 7c4016a4a7..b04fddb01c 100644 --- a/operations/core-v100/pom.xml +++ b/operations/core-v100/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos operations - 4.1.0 + 4.1.1 4.0.0 core-v100 diff --git a/operations/core-v20/pom.xml b/operations/core-v20/pom.xml index 1852659ae8..b72165b8f9 100644 --- a/operations/core-v20/pom.xml +++ b/operations/core-v20/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos operations - 4.1.0 + 4.1.1 4.0.0 core-v20 diff --git a/operations/enhanced-v20/pom.xml b/operations/enhanced-v20/pom.xml index f72c433505..634c79f558 100644 --- a/operations/enhanced-v20/pom.xml +++ b/operations/enhanced-v20/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos operations - 4.1.0 + 4.1.1 4.0.0 enhanced-v20 diff --git a/operations/pom.xml b/operations/pom.xml index 535b79bc1b..8e0f8b2961 100644 --- a/operations/pom.xml +++ b/operations/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 operations pom diff --git a/operations/resultHandling-v20/pom.xml b/operations/resultHandling-v20/pom.xml index a7e3a56281..47b2fc3a7c 100644 --- a/operations/resultHandling-v20/pom.xml +++ b/operations/resultHandling-v20/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos operations - 4.1.0 + 4.1.1 4.0.0 resultHandling-v20 diff --git a/operations/transactional-v20/pom.xml b/operations/transactional-v20/pom.xml index c0dd06c889..6fce2268dc 100644 --- a/operations/transactional-v20/pom.xml +++ b/operations/transactional-v20/pom.xml @@ -4,7 +4,7 @@ org.n52.sensorweb.sos operations - 4.1.0 + 4.1.1 4.0.0 transactional-v20 diff --git a/pom.xml b/pom.xml index e32ed13325..f0259c92e8 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ 4.0.0 org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 52°North Sensor Observation Service 52°North Sensor Observation Service - Parent POM for defining dependency versions https://wiki.52north.org/bin/view/SensorWeb/SensorObservationServiceIVDocumentation @@ -76,9 +76,9 @@ - 4.1.0 - 4.1.0 - 4.1.0 + 4.1.1 + 4.1.1 + 4.1.1 3.1.4.RELEASE 3.2.6.RELEASE 9.1.0.8 diff --git a/spring/admin-controller/pom.xml b/spring/admin-controller/pom.xml index b57aad7951..15f8b5c1f8 100644 --- a/spring/admin-controller/pom.xml +++ b/spring/admin-controller/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos spring - 4.1.0 + 4.1.1 admin-controller 52°North SOS - Web Admin Controller diff --git a/spring/client-controller/pom.xml b/spring/client-controller/pom.xml index 4206798fd5..b71b7dd4ae 100644 --- a/spring/client-controller/pom.xml +++ b/spring/client-controller/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos spring - 4.1.0 + 4.1.1 client-controller 52°North SOS - Web Client Controller diff --git a/spring/common-controller/pom.xml b/spring/common-controller/pom.xml index 284f1da4a7..9204cc1b37 100644 --- a/spring/common-controller/pom.xml +++ b/spring/common-controller/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos spring - 4.1.0 + 4.1.1 common-controller 52°North SOS - Web Common Controller diff --git a/spring/install-controller/pom.xml b/spring/install-controller/pom.xml index 13ad6841aa..43b67673aa 100644 --- a/spring/install-controller/pom.xml +++ b/spring/install-controller/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos spring - 4.1.0 + 4.1.1 install-controller 52°North SOS - Web Install Controller diff --git a/spring/pom.xml b/spring/pom.xml index edbaaa6cb0..4c535bd72d 100644 --- a/spring/pom.xml +++ b/spring/pom.xml @@ -5,7 +5,7 @@ 52n-sos org.n52.sensorweb.sos - 4.1.0 + 4.1.1 spring pom diff --git a/spring/views/pom.xml b/spring/views/pom.xml index dc4999b702..102542ed7e 100644 --- a/spring/views/pom.xml +++ b/spring/views/pom.xml @@ -5,7 +5,7 @@ org.n52.sensorweb.sos spring - 4.1.0 + 4.1.1 views 52°North SOS - Web Views diff --git a/third-party/pom.xml b/third-party/pom.xml index 4914e6df7e..c46a1cbc65 100644 --- a/third-party/pom.xml +++ b/third-party/pom.xml @@ -3,7 +3,7 @@ org.n52.sensorweb.sos 52n-sos - 4.1.0 + 4.1.1 52n-sos-third-party 52°North Aggregated Third Party modules diff --git a/third-party/third-party-ncname-resolver/pom.xml b/third-party/third-party-ncname-resolver/pom.xml index 640059fa75..e5ec4b26c9 100644 --- a/third-party/third-party-ncname-resolver/pom.xml +++ b/third-party/third-party-ncname-resolver/pom.xml @@ -3,7 +3,7 @@ org.n52.sensorweb.sos 52n-sos-third-party - 4.1.0 + 4.1.1 third-party-ncname-resolver 52°North Third Party - NCName resolver diff --git a/webapp/pom.xml b/webapp/pom.xml index dbd7b3f163..a9012a82cf 100644 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -4,7 +4,7 @@ 52n-sos org.n52.sensorweb.sos - 4.1.0 + 4.1.1 4.0.0 webapp