diff --git a/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OutageRestService.java b/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OutageRestService.java index e3d6defa3826..ff1c2e43be00 100644 --- a/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OutageRestService.java +++ b/opennms-webapp-rest/src/main/java/org/opennms/web/rest/v1/OutageRestService.java @@ -31,10 +31,12 @@ import java.util.Date; import java.util.List; +import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; @@ -44,12 +46,14 @@ import org.opennms.core.criteria.Alias.JoinType; import org.opennms.core.criteria.CriteriaBuilder; -import org.opennms.core.criteria.restrictions.Restrictions; import org.opennms.netmgt.dao.api.OutageDao; import org.opennms.netmgt.model.OnmsOutage; import org.opennms.netmgt.model.OnmsOutageCollection; import org.opennms.netmgt.model.outage.OutageSummary; import org.opennms.netmgt.model.outage.OutageSummaryCollection; +import org.opennms.web.rest.support.MultivaluedMapImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -73,6 +77,7 @@ @Component("outageRestService") @Path("outages") public class OutageRestService extends OnmsRestService { + private static final Logger LOG = LoggerFactory.getLogger(OutageRestService.class); @Autowired private OutageDao m_outageDao; @@ -147,25 +152,48 @@ public OnmsOutageCollection getOutages(@Context final UriInfo uriInfo) { *
forNodeId
* * @param nodeId a int. + * @param dateRange a long. + * @param startTs a java.lang.Long. + * @param endTs a java.lang.Long. * @return a {@link org.opennms.netmgt.model.OnmsOutageCollection} object. */ @GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_ATOM_XML}) @Transactional @Path("forNode/{nodeId}") - public OnmsOutageCollection forNodeId(@Context final UriInfo uriInfo, @PathParam("nodeId") final int nodeId) { + public OnmsOutageCollection forNodeId(@Context final UriInfo uriInfo, + @PathParam("nodeId") final int nodeId, + @DefaultValue("604800000") @QueryParam("dateRange") final long dateRange, + @QueryParam("start") final Long startTs, + @QueryParam("end") final Long endTs) { final CriteriaBuilder builder = new CriteriaBuilder(OnmsOutage.class); builder.eq("node.id", nodeId); - final Date d = new Date(System.currentTimeMillis() - (60 * 60 * 24 * 7)); - builder.or(Restrictions.isNull("ifRegainedService"), Restrictions.gt("ifRegainedService", d)); builder.alias("monitoredService", "monitoredService"); builder.alias("monitoredService.ipInterface", "ipInterface"); builder.alias("monitoredService.ipInterface.node", "node"); builder.alias("monitoredService.serviceType", "serviceType"); - applyQueryFilters(uriInfo.getQueryParameters(), builder); + final MultivaluedMap