Search in sources :

Example 6 with RestMessage

use of com.serotonin.m2m2.web.mvc.rest.v1.message.RestMessage in project ma-modules-public by infiniteautomation.

the class RealTimeDataRestController method query.

/**
 * Query the User's Real Time Data
 * @param request
 * @param limit
 * @return
 */
@ApiOperation(value = "Query realtime values", notes = "Check the status member to ensure the point is OK not DISABLED or UNRELIABLE")
@RequestMapping(method = RequestMethod.GET, produces = { "application/json" })
public ResponseEntity<List<RealTimeModel>> query(HttpServletRequest request) {
    RestProcessResult<List<RealTimeModel>> result = new RestProcessResult<List<RealTimeModel>>(HttpStatus.OK);
    User user = this.checkUser(request, result);
    if (result.isOk()) {
        ASTNode model;
        try {
            model = parseRQLtoAST(request.getQueryString());
            if (model == null) {
                result.addRestMessage(new RestMessage(HttpStatus.NOT_ACCEPTABLE, new TranslatableMessage("common.default", "Query Required")));
                return result.createResponseEntity();
            }
            List<RealTimeDataPointValue> values = RealTimeDataPointValueCache.instance.getUserView(user);
            values = model.accept(new RQLToObjectListQuery<RealTimeDataPointValue>(), values);
            List<RealTimeModel> models = new ArrayList<RealTimeModel>();
            UriComponentsBuilder imageServletBuilder = UriComponentsBuilder.fromPath("/imageValue/{ts}_{id}.jpg");
            for (RealTimeDataPointValue value : values) {
                if (value.getDataTypeId() == DataTypes.IMAGE) {
                    models.add(new RealTimeModel(value, imageServletBuilder.buildAndExpand(value.getTimestamp(), value.getDataPointId()).toUri()));
                } else {
                    models.add(new RealTimeModel(value, value.getValue()));
                }
            }
            return result.createResponseEntity(models);
        } catch (Exception e) {
            LOG.error(e.getMessage(), e);
            result.addRestMessage(getInternalServerErrorMessage(e.getMessage()));
            return result.createResponseEntity();
        }
    }
    return result.createResponseEntity();
}
Also used : User(com.serotonin.m2m2.vo.User) RealTimeDataPointValue(com.serotonin.m2m2.rt.dataImage.RealTimeDataPointValue) ArrayList(java.util.ArrayList) RealTimeModel(com.serotonin.m2m2.web.mvc.rest.v1.model.RealTimeModel) RQLToObjectListQuery(com.infiniteautomation.mango.db.query.pojo.RQLToObjectListQuery) RestProcessResult(com.serotonin.m2m2.web.mvc.rest.v1.message.RestProcessResult) RestMessage(com.serotonin.m2m2.web.mvc.rest.v1.message.RestMessage) UriComponentsBuilder(org.springframework.web.util.UriComponentsBuilder) ASTNode(net.jazdw.rql.parser.ASTNode) ArrayList(java.util.ArrayList) List(java.util.List) TranslatableMessage(com.serotonin.m2m2.i18n.TranslatableMessage) ApiOperation(com.wordnik.swagger.annotations.ApiOperation) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

RestMessage (com.serotonin.m2m2.web.mvc.rest.v1.message.RestMessage)6 RestProcessResult (com.serotonin.m2m2.web.mvc.rest.v1.message.RestProcessResult)6 TranslatableMessage (com.serotonin.m2m2.i18n.TranslatableMessage)5 User (com.serotonin.m2m2.vo.User)5 ApiOperation (com.wordnik.swagger.annotations.ApiOperation)5 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)5 DataPointVO (com.serotonin.m2m2.vo.DataPointVO)4 PermissionException (com.serotonin.m2m2.vo.permission.PermissionException)4 PlainRenderer (com.serotonin.m2m2.view.text.PlainRenderer)3 DataPointPropertiesTemplateVO (com.serotonin.m2m2.vo.template.DataPointPropertiesTemplateVO)3 DataPointModel (com.serotonin.m2m2.web.mvc.rest.v1.model.DataPointModel)3 URI (java.net.URI)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 PointValueTimeModel (com.serotonin.m2m2.web.mvc.rest.v1.model.pointValue.PointValueTimeModel)2 RecentPointValueTimeModel (com.serotonin.m2m2.web.mvc.rest.v1.model.pointValue.RecentPointValueTimeModel)2 XidPointValueTimeModel (com.serotonin.m2m2.web.mvc.rest.v1.model.pointValue.XidPointValueTimeModel)2 RQLToObjectListQuery (com.infiniteautomation.mango.db.query.pojo.RQLToObjectListQuery)1 NotFoundRestException (com.infiniteautomation.mango.rest.v2.exception.NotFoundRestException)1 ValidationFailedRestException (com.infiniteautomation.mango.rest.v2.exception.ValidationFailedRestException)1