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.Site;
import com.intrbiz.bergamot.model.Trap;
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("/trap")
@Template("layout/main")
@RequireValidPrincipal()
public class TrapRouter extends Router<BergamotApp>
{
@Any("/name/:host/:trap")
@WithDataAdapter(BergamotDB.class)
public void trap(BergamotDB db, String hostName, String trapName, @GetBergamotSite() Site site)
{
Trap trap = model("trap", notNull(db.getTrapOnHostByName(site.getId(), hostName, trapName)));
require(permission("read", trap));
model("alerts", db.getAllAlertsForCheck(trap.getId(), 3, 0));
encode("trap/detail");
}
@Any("/id/:id")
@WithDataAdapter(BergamotDB.class)
public void trap(BergamotDB db, @IsaObjectId UUID id)
{
Trap trap = model("trap", notNull(db.getTrap(id)));
require(permission("read", trap));
model("alerts", db.getAllAlertsForCheck(id, 3, 0));
encode("trap/detail");
}
@Any("/enable/:id")
@WithDataAdapter(BergamotDB.class)
public void enableTrap(BergamotDB db, @IsaObjectId UUID id) throws IOException
{
Trap trap = notNull(db.getTrap(id));
require(permission("enable", trap));
trap.setEnabled(true);
db.setTrap(trap);
redirect("/trap/id/" + id);
}
@Any("/disable/:id")
@WithDataAdapter(BergamotDB.class)
public void disableTrap(BergamotDB db, @IsaObjectId UUID id) throws IOException
{
Trap trap = notNull(db.getTrap(id));
require(permission("disable", trap));
trap.setEnabled(false);
db.setTrap(trap);
redirect("/trap/id/" + id);
}
@Any("/suppress/:id")
@WithDataAdapter(BergamotDB.class)
public void suppressTrap(BergamotDB db, @IsaObjectId UUID id) throws IOException
{
Trap trap = notNull(db.getTrap(id));
require(permission("suppress", trap));
action("suppress-check", trap);
redirect("/trap/id/" + id);
}
@Any("/unsuppress/:id")
@WithDataAdapter(BergamotDB.class)
public void unsuppressTrap(BergamotDB db, @IsaObjectId UUID id) throws IOException
{
Trap trap = notNull(db.getTrap(id));
require(permission("unsuppress", trap));
action("unsuppress-check", trap);
redirect("/trap/id/" + id);
}
}