Mercurial Hosting > nabble
diff src/nabble/view/web/template/InstantMailNamespace.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/nabble/view/web/template/InstantMailNamespace.java Thu Mar 21 19:15:52 2019 -0600 @@ -0,0 +1,54 @@ +package nabble.view.web.template; + +import java.util.List; +import java.util.ArrayList; +import java.util.Map; +import nabble.model.Node; +import nabble.model.Subscription; +import nabble.model.User; +import nabble.naml.compiler.Command; +import nabble.naml.compiler.CommandSpec; +import nabble.naml.compiler.Interpreter; +import nabble.naml.compiler.IPrintWriter; +import nabble.naml.compiler.Namespace; +import nabble.naml.compiler.ScopedInterpreter; + + +@Namespace ( + name = "instant_mail", + global = true +) +public final class InstantMailNamespace { + private final Node node; + private final Map<User,Subscription> subscriptionMap; + + public InstantMailNamespace(Node node,Map<User,Subscription> subscriptionMap) { + this.node = node; + this.subscriptionMap = subscriptionMap; + } + + public static final CommandSpec new_node = CommandSpec.DO; + + @Command public void new_node(IPrintWriter out,ScopedInterpreter<NodeNamespace> interp) { + NodeNamespace nodeNs = new NodeNamespace(node); + out.print( interp.getArg(nodeNs,"do") ); + } + + public static final CommandSpec remove_from_instant_mail = CommandSpec.NO_OUTPUT() + .dotParameter("user") + .build() + ; + + @Command public void remove_from_instant_mail(IPrintWriter out,Interpreter interp) { + UserNamespace ns = interp.getArgAsNamespace(UserNamespace.class,"user"); + subscriptionMap.remove(ns.user()); + } + + public static final CommandSpec subscription_list = CommandSpec.DO; + + @Command public void subscription_list(IPrintWriter out,ScopedInterpreter<SubscriptionNamespace.SubscriptionList> interp) { + List<Subscription> list = new ArrayList<Subscription>(subscriptionMap.values()); + out.print( interp.getArg(new SubscriptionNamespace.SubscriptionList(list),"do") ); + } + +}