Package org.gudy.azureus2.ui.console.multiuser

Source Code of org.gudy.azureus2.ui.console.multiuser.MultiUserConsoleInput

/*
* Created on 3/02/2005
* Created by Paul Duran
* Copyright (C) 2004 Aelitis, All Rights Reserved.
*
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* AELITIS, SARL au capital de 30,000 euros
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*
*/

package org.gudy.azureus2.ui.console.multiuser;

import java.io.PrintStream;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.gudy.azureus2.ui.console.ConsoleInput;
import org.gudy.azureus2.ui.console.UserProfile;
import org.gudy.azureus2.ui.console.commands.IConsoleCommand;
import org.gudy.azureus2.ui.console.multiuser.commands.Show;

import com.aelitis.azureus.core.AzureusCore;

/**
* subclass of the ConsoleInput object that is used for multi users.
* in this particular subclass, we replace some commands with our own versions
* and disable some commands.
* @author pauld
*/
public class MultiUserConsoleInput extends ConsoleInput
{
  // commands that are executable with admin role
  private List adminCommands;
 
  // commands that are executable with user role
  private List userCommands;
 
  /**
   * set up the lists of commands that we prohibit, based upon the user type.
   * @param con
   * @param _azureus_core
   * @param _in
   * @param _out
   * @param _controlling
   * @param profile
   */
  public MultiUserConsoleInput(String con, AzureusCore _azureus_core,
      Reader _in, PrintStream _out, Boolean _controlling,
      UserProfile profile) {
    super(con, _azureus_core, _in, _out, _controlling, profile);
  }

  /**
   * initialize our list of commands that need specific roles
   */
  protected void initialise() {
   
    adminCommands = new ArrayList();
    adminCommands.add("quit");
    adminCommands.add("share");
    adminCommands.add("user");
    // move command is admin only so that standard users cannot
    // prioritise their torrents
    adminCommands.add("move");
    adminCommands.add("log");
    adminCommands.add("ui");
   
    userCommands = new ArrayList();
    userCommands.add("set");
    userCommands.add("alias");
    userCommands.add("add");
   
    super.initialise();
  }
 
  /**
   * add some multi-user specific commands
   */
  protected void registerCommands() {
    super.registerCommands();
    // this will override the original Show command
    registerCommand(new Show());
  }
 
  /**
   * check whether the specified command is one of our banned commands for
   * this particular user type. some commands are able to handle different
   * user types, others are not relevant to anybody but admin
   */
  public void registerCommand(IConsoleCommand command) {
    if( ! UserProfile.ADMIN.equals( getUserProfile().getUserType() ) )
    {
      Set commandNames = command.getCommandNames();
      for (Iterator iter = commandNames.iterator(); iter.hasNext();) {
        String cmdName = (String) iter.next();
        if( adminCommands.contains(cmdName) )
          return;
        if( ! UserProfile.USER.equals( getUserProfile().getUserType() ) )
        {
          if( userCommands.contains(cmdName))
            return;
        }
      }
    } 
    super.registerCommand(command);
  }
}
TOP

Related Classes of org.gudy.azureus2.ui.console.multiuser.MultiUserConsoleInput

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.