001 /* 002 * CDDL HEADER START 003 * 004 * The contents of this file are subject to the terms of the 005 * Common Development and Distribution License, Version 1.0 only 006 * (the "License"). You may not use this file except in compliance 007 * with the License. 008 * 009 * You can obtain a copy of the license at 010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE 011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE. 012 * See the License for the specific language governing permissions 013 * and limitations under the License. 014 * 015 * When distributing Covered Code, include this CDDL HEADER in each 016 * file and include the License file at 017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, 018 * add the following below this CDDL HEADER, with the fields enclosed 019 * by brackets "[]" replaced with your own identifying information: 020 * Portions Copyright [yyyy] [name of copyright owner] 021 * 022 * CDDL HEADER END 023 * 024 * 025 * Copyright 2006-2008 Sun Microsystems, Inc. 026 */ 027 package org.opends.server.admin.client.cli; 028 029 import java.io.OutputStream; 030 import java.util.Set; 031 032 import org.opends.admin.ads.ADSContextException; 033 import org.opends.server.util.args.ArgumentException; 034 import org.opends.server.util.args.BooleanArgument; 035 import org.opends.server.util.args.SubCommand; 036 037 /** 038 * This Interface defines method that a group of subcommand shoud implement. 039 */ 040 public interface DsFrameworkCliSubCommandGroup 041 { 042 043 /** 044 * Initialize subcommand related to server group management. 045 * 046 * @param argParser 047 * The parser in which we should be registered. 048 * @param verboseArg 049 * The verbose Argument. 050 * @throws ArgumentException 051 * If there is a problem with any of the parameters used 052 * to create this argument. 053 */ 054 public void initializeCliGroup(DsFrameworkCliParser argParser, 055 BooleanArgument verboseArg) throws ArgumentException; 056 057 /** 058 * Indicates if the provided suncommand is part of this group. 059 * 060 * @param subCmd 061 * The actual subcommand with input parameter. 062 * @return True if the provided suncommand is part of this group. 063 */ 064 public boolean isSubCommand(SubCommand subCmd); 065 066 /** 067 * Handle the subcommand. 068 * @param subCmd 069 * The actual subcommand with input parameter 070 * @param outStream The output stream to use for standard output. 071 * @param errStream The output stream to use for standard error. 072 * @return the return code 073 * @throws ADSContextException 074 * If there is a problem with when trying to perform the 075 * operation. 076 * @throws ArgumentException 077 * If there is a problem with any of the parameters used 078 * to execute this subcommand. 079 */ 080 public DsFrameworkCliReturnCode performSubCommand(SubCommand subCmd, 081 OutputStream outStream, OutputStream errStream) 082 throws ADSContextException, ArgumentException; 083 084 /** 085 * Get the subcommands list. 086 * @return the subcommand list. 087 */ 088 public Set<SubCommand> getSubCommands(); 089 090 /** 091 * Indicates whether this subcommand group should be hidden from the usage 092 * information. 093 * 094 * @return <CODE>true</CODE> if this subcommand group should be hidden 095 * from the usage information, or <CODE>false</CODE> if 096 * not. 097 */ 098 public boolean isHidden(); 099 100 /** 101 * Indicates subcommand group name. 102 * 103 * @return the subcommand group name 104 */ 105 public String getGroupName(); 106 107 }