diff -r 9f0b95aafaa3 -r ed84c8bdd87b org/sonews/daemon/command/ListCommand.java
--- a/org/sonews/daemon/command/ListCommand.java Sun Aug 29 17:04:25 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
- * SONEWS News Server
- * see AUTHORS for the list of contributors
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package org.sonews.daemon.command;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-import org.sonews.daemon.NNTPConnection;
-import org.sonews.storage.Channel;
-import org.sonews.storage.StorageBackendException;
-import org.sonews.util.Log;
-
-/**
- * Class handling the LIST command.
- * @author Christian Lins
- * @author Dennis Schwerdel
- * @since n3tpd/0.1
- */
-public class ListCommand implements Command
-{
-
- @Override
- public String[] getSupportedCommandStrings()
- {
- return new String[]{"LIST"};
- }
-
- @Override
- public boolean hasFinished()
- {
- return true;
- }
-
- @Override
- public String impliedCapability()
- {
- return null;
- }
-
- @Override
- public boolean isStateful()
- {
- return false;
- }
-
- @Override
- public void processLine(NNTPConnection conn, final String line, byte[] raw)
- throws IOException, StorageBackendException
- {
- final String[] command = line.split(" ");
-
- if(command.length >= 2)
- {
- if(command[1].equalsIgnoreCase("OVERVIEW.FMT"))
- {
- conn.println("215 information follows");
- conn.println("Subject:\nFrom:\nDate:\nMessage-ID:\nReferences:\nBytes:\nLines:\nXref");
- conn.println(".");
- }
- else if(command[1].equalsIgnoreCase("NEWSGROUPS"))
- {
- conn.println("215 information follows");
- final List list = Channel.getAll();
- for (Channel g : list)
- {
- conn.println(g.getName() + "\t" + "-");
- }
- conn.println(".");
- }
- else if(command[1].equalsIgnoreCase("SUBSCRIPTIONS"))
- {
- conn.println("215 information follows");
- conn.println(".");
- }
- else if(command[1].equalsIgnoreCase("EXTENSIONS"))
- {
- conn.println("202 Supported NNTP extensions.");
- conn.println("LISTGROUP");
- conn.println("XDAEMON");
- conn.println("XPAT");
- conn.println(".");
- }
- else if(command[1].equalsIgnoreCase("ACTIVE"))
- {
- String pattern = command.length == 2
- ? null : command[2].replace("*", "\\w*");
- printGroupInfo(conn, pattern);
- }
- else
- {
- conn.println("500 unknown argument to LIST command");
- }
- }
- else
- {
- printGroupInfo(conn, null);
- }
- }
-
- private void printGroupInfo(NNTPConnection conn, String pattern)
- throws IOException, StorageBackendException
- {
- final List groups = Channel.getAll();
- if(groups != null)
- {
- conn.println("215 list of newsgroups follows");
- for(Channel g : groups)
- {
- try
- {
- Matcher matcher = pattern == null ?
- null : Pattern.compile(pattern).matcher(g.getName());
- if(!g.isDeleted() &&
- (matcher == null || matcher.find()))
- {
- String writeable = g.isWriteable() ? " y" : " n";
- // Indeed first the higher article number then the lower
- conn.println(g.getName() + " " + g.getLastArticleNumber() + " "
- + g.getFirstArticleNumber() + writeable);
- }
- }
- catch(PatternSyntaxException ex)
- {
- Log.get().info(ex.toString());
- }
- }
- conn.println(".");
- }
- else
- {
- conn.println("500 server backend malfunction");
- }
- }
-
-}