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.Resource; 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("/resource") @Template("layout/main") @RequireValidPrincipal() public class ResourceRouter extends Router<BergamotApp> { @Any("/name/:host/:resource") @WithDataAdapter(BergamotDB.class) public void showResourceByName(BergamotDB db, String clusterName, String resourceName, @GetBergamotSite() Site site) { Resource resource = model("resource", notNull(db.getResourceOnClusterByName(site.getId(), clusterName, resourceName))); require(permission("read", resource)); model("alerts", db.getAllAlertsForCheck(resource.getId(), 3, 0)); encode("resource/detail"); } @Any("/id/:id") @WithDataAdapter(BergamotDB.class) public void showResourceById(BergamotDB db, @IsaObjectId UUID id) { Resource resource = model("resource", notNull(db.getResource(id))); require(permission("read", resource)); model("alerts", db.getAllAlertsForCheck(id, 3, 0)); encode("resource/detail"); } @Any("/enable/:id") @WithDataAdapter(BergamotDB.class) public void enableResource(BergamotDB db, @IsaObjectId UUID id) throws IOException { Resource resource = notNull(db.getResource(id)); require(permission("enable", resource)); resource.setEnabled(true); db.setResource(resource); redirect("/resource/id/" + id); } @Any("/disable/:id") @WithDataAdapter(BergamotDB.class) public void disableResource(BergamotDB db, @IsaObjectId UUID id) throws IOException { Resource resource = notNull(db.getResource(id)); require(permission("disable", resource)); resource.setEnabled(false); db.setResource(resource); redirect("/resource/id/" + id); } @Any("/suppress/:id") @WithDataAdapter(BergamotDB.class) public void suppressResource(BergamotDB db, @IsaObjectId UUID id) throws IOException { Resource resource = notNull(db.getResource(id)); require(permission("suppress", resource)); action("suppress-check", resource); redirect("/resource/id/" + id); } @Any("/unsuppress/:id") @WithDataAdapter(BergamotDB.class) public void unsuppressResource(BergamotDB db, @IsaObjectId UUID id) throws IOException { Resource resource = notNull(db.getResource(id)); require(permission("unsuppress", resource)); action("unsuppress-check", resource); redirect("/resource/id/" + id); } }