# HG changeset patch # User cli # Date 1315743559 -7200 # Node ID e118b4d60029c6065d5def39bd7d0eb47cde1e2c # Parent 28870db3b9fdb3398e7a3cdfa338814e421a587e Complete XDAEMON GROUPFLAG subcommand. diff -r 28870db3b9fd -r e118b4d60029 src/org/sonews/daemon/command/XDaemonCommand.java --- a/src/org/sonews/daemon/command/XDaemonCommand.java Sat Sep 10 20:20:19 2011 +0200 +++ b/src/org/sonews/daemon/command/XDaemonCommand.java Sun Sep 11 14:19:19 2011 +0200 @@ -132,23 +132,24 @@ String flagName = commands[4]; if(commands[3].equalsIgnoreCase("SET")) { if(flagName.equals("MAILINGLIST")) { - + group.setFlag(Channel.MAILINGLIST); } else if(flagName.equals("DELETED")) { - + group.setFlag(Channel.DELETED); } else if(flagName.equals("READONLY")) { - + group.setFlag(Channel.READONLY); } } else if(commands[3].equalsIgnoreCase("UNSET")) { if(flagName.equals("MAILINGLIST")) { - + group.unsetFlag(Channel.MAILINGLIST); } else if(flagName.equals("DELETED")) { - + group.unsetFlag(Channel.DELETED); } else if(flagName.equals("READONLY")) { - + group.unsetFlag(Channel.READONLY); } } else { conn.println("500 invalid command usage"); } + StorageManager.current().update(group); } else if (commands.length == 4 && commands[1].equalsIgnoreCase("SET")) { String key = commands[2]; String val = commands[3]; diff -r 28870db3b9fd -r e118b4d60029 src/org/sonews/storage/Group.java --- a/src/org/sonews/storage/Group.java Sat Sep 10 20:20:19 2011 +0200 +++ b/src/org/sonews/storage/Group.java Sun Sep 11 14:19:19 2011 +0200 @@ -27,9 +27,28 @@ * @author Christian Lins * @since sonews/0.5.0 */ -// TODO: This class should not be public! public class Group extends Channel { + /** + * If this flag is set the Group is no real newsgroup but a mailing list + * mirror. In that case every posting and receiving mails must go through + * the mailing list gateway. + */ + public static final int MAILINGLIST = 0x1; + + /** + * If this flag is set the Group is marked as readonly and the posting + * is prohibited. This can be useful for groups that are synced only in + * one direction. + */ + public static final int READONLY = 0x2; + + /** + * If this flag is set the Group is marked as deleted and must not occur + * in any output. The deletion is done lazily by a low priority daemon. + */ + public static final int DELETED = 0x80; + private long id = 0; private int flags = -1; private String name = null; @@ -47,8 +66,10 @@ } /** + * Constructor. * @param name * @param id + * @param flags */ public Group(final String name, final long id, final int flags) { this.id = id; @@ -99,7 +120,6 @@ */ public long getInternalID() { assert id > 0; - return id; } @@ -133,6 +153,10 @@ this.flags |= flag; } + public void unsetFlag(final int flag) { + this.flags &= ~flag; + } + public void setName(final String name) { this.name = name; }