package org.basex;
import static org.basex.core.Text.*;
import java.io.*;
import java.net.*;
import org.basex.api.client.*;
import org.basex.core.*;
import org.basex.util.*;
/**
* This is the starter class for the client console mode.
* All input is sent to the server instance.
*
* @author BaseX Team 2005-17, BSD License
* @author Christian Gruen
*/
public final class BaseXClient extends BaseX {
/**
* Main method of the database client, launching a client instance.
* Command-line arguments are listed with the {@code -h} argument.
* @param args command-line arguments
*/
public static void main(final String... args) {
try {
new BaseXClient(args);
} catch(final IOException ex) {
Util.errln(ex);
System.exit(1);
}
}
/**
* Constructor.
* @param args command-line arguments
* @throws IOException I/O exception
*/
public BaseXClient(final String... args) throws IOException {
super(args);
}
@Override
protected boolean local() {
return false;
}
@Override
protected Session init() throws IOException {
// user/password input
String user = context.soptions.get(StaticOptions.USER);
String pass = context.soptions.get(StaticOptions.PASSWORD);
while(user.isEmpty()) {
Util.out(USERNAME + COLS);
user = Util.input();
}
while(pass.isEmpty()) {
Util.out(PASSWORD + COLS);
pass = Util.password();
}
final String host = context.soptions.get(StaticOptions.HOST);
final int port = context.soptions.get(StaticOptions.PORT);
try {
return new ClientSession(host, port, user, pass, out);
} catch(final ConnectException ex) {
throw new BaseXException(CONNECTION_ERROR_X, port);
}
}
}