package com.intrbiz.bergamot.ui.router; import java.util.UUID; import com.intrbiz.balsa.engine.route.Router; import com.intrbiz.balsa.metadata.WithDataAdapter; import com.intrbiz.bergamot.data.BergamotDB; import com.intrbiz.bergamot.metadata.IsaObjectId; import com.intrbiz.bergamot.model.Check; import com.intrbiz.bergamot.ui.BergamotApp; import com.intrbiz.metadata.Any; import com.intrbiz.metadata.CoalesceMode; import com.intrbiz.metadata.IsaLong; import com.intrbiz.metadata.Param; import com.intrbiz.metadata.Prefix; import com.intrbiz.metadata.RequireValidPrincipal; import com.intrbiz.metadata.Template; @Prefix("/stats") @Template("layout/main") @RequireValidPrincipal() public class StatsRouter extends Router<BergamotApp> { @Any("/transitions/check/id/:id") @WithDataAdapter(BergamotDB.class) public void trap( BergamotDB db, @IsaObjectId UUID id, @Param("offset") @IsaLong(min = 0, mandatory = true, coalesce = CoalesceMode.ALWAYS, defaultValue = 0L) long offset, @Param("limit") @IsaLong(min = 1, mandatory = true, coalesce = CoalesceMode.ALWAYS, defaultValue = 100L) long limit ) { Check<?,?> check = model("check", notNull(db.getCheck(id))); require(permission("read", check)); model("transitions", db.listCheckTransitionsForCheck(id, offset, limit)); var("offset", offset); var("limit", limit); encode("stats/transitions"); } }