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") );
+	}
+
+}