package org.basex.core.cmd;
import static org.basex.core.Text.*;
import java.io.IOException;
import org.basex.core.CommandBuilder;
import org.basex.core.Command;
import org.basex.core.User;
import org.basex.core.Commands.Cmd;
import org.basex.core.Commands.CmdShow;
import org.basex.data.Data;
import org.basex.data.MetaData;
import org.basex.util.Util;
/**
* Evaluates the 'show users' command and shows existing users.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
public final class ShowUsers extends Command {
/**
* Default constructor.
*/
public ShowUsers() {
this(null);
}
/**
* Constructor, specifying a database.
* @param db database (for showing users)
*/
public ShowUsers(final String db) {
super(User.ADMIN, db);
}
@Override
protected boolean run() throws IOException {
final String name = args[0];
if(name != null && !MetaData.validName(name, false))
return error(NAME_INVALID_X, name);
if(name == null) {
out.println(context.users.info(null));
} else {
try {
final Data data = Open.open(name, context);
out.println(data.meta.users.info(context.users));
Close.close(data, context);
return true;
} catch(final IOException ex) {
Util.debug(ex);
final String msg = ex.getMessage();
return msg.isEmpty() ? error(DB_NOT_OPENED_X, name) : error(msg);
}
}
return true;
}
@Override
public void build(final CommandBuilder cb) {
cb.init(Cmd.SHOW + " " + CmdShow.USERS).arg(ON, 0);
}
}