package com.intrbiz.bergamot.ui.router; import java.io.IOException; 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.GetBergamotSite; import com.intrbiz.bergamot.metadata.IsaObjectId; import com.intrbiz.bergamot.model.Service; import com.intrbiz.bergamot.model.Site; import com.intrbiz.bergamot.ui.BergamotApp; import com.intrbiz.metadata.Any; import com.intrbiz.metadata.Prefix; import com.intrbiz.metadata.RequireValidPrincipal; import com.intrbiz.metadata.Template; @Prefix("/service") @Template("layout/main") @RequireValidPrincipal() public class ServiceRouter extends Router<BergamotApp> { @Any("/name/:host/:service") @WithDataAdapter(BergamotDB.class) public void service(BergamotDB db, String hostName, String serviceName, @GetBergamotSite() Site site) { Service service = model("service", notNull(db.getServiceOnHostByName(site.getId(), hostName, serviceName))); require(permission("read", service)); model("alerts", db.getAllAlertsForCheck(service.getId(), 3, 0)); encode("service/detail"); } @Any("/id/:id") @WithDataAdapter(BergamotDB.class) public void service(BergamotDB db, @IsaObjectId UUID id) { Service service = model("service", notNull(db.getService(id))); require(permission("read", service)); model("alerts", db.getAllAlertsForCheck(id, 3, 0)); encode("service/detail"); } @Any("/execute/:id") @WithDataAdapter(BergamotDB.class) public void executeService(BergamotDB db, @IsaObjectId UUID id) throws IOException { Service service = notNull(db.getService(id)); require(permission("execute", service)); action("execute-check", service); redirect("/service/id/" + id); } @Any("/enable/:id") @WithDataAdapter(BergamotDB.class) public void enableService(BergamotDB db, @IsaObjectId UUID id) throws IOException { Service service = notNull(db.getService(id)); require(permission("enable", service)); service.setEnabled(true); db.setService(service); action("enable-check", service); redirect("/service/id/" + id); } @Any("/disable/:id") @WithDataAdapter(BergamotDB.class) public void disableService(BergamotDB db, @IsaObjectId UUID id) throws IOException { Service service = notNull(db.getService(id)); require(permission("disable", service)); service.setEnabled(false); db.setService(service); action("disable-check", service); redirect("/service/id/" + id); } @Any("/suppress/:id") @WithDataAdapter(BergamotDB.class) public void suppressService(BergamotDB db, @IsaObjectId UUID id) throws IOException { Service service = notNull(db.getService(id)); require(permission("suppress", service)); action("suppress-check", service); redirect("/service/id/" + id); } @Any("/unsuppress/:id") @WithDataAdapter(BergamotDB.class) public void unsuppressService(BergamotDB db, @IsaObjectId UUID id) throws IOException { Service service = db.getService(id); require(permission("unsuppress", service)); action("unsuppress-check", service); redirect("/service/id/" + id); } }