format and commands
Signed-off-by: Emmanuel Bigeon <emmanuel@bigeon.fr>
This commit is contained in:
@@ -54,9 +54,12 @@ import net.bigeon.gclc.utils.ReadingRunnable;
|
||||
/** A console input where the stream can be plugged.
|
||||
* <p>
|
||||
* This pluggable console input accepts an input and output to be connected to
|
||||
* it. The connexion cannot be concurrent, which mean that any connected stream
|
||||
* it. The connection cannot be concurrent, which mean that any connected stream
|
||||
* must be disconnected before a new call to
|
||||
* {@link #connect(InputStream, PrintStream)} is done.
|
||||
* <p>
|
||||
* On connection, if the prompt is in wait, this console input will provide the
|
||||
* prompting message.
|
||||
*
|
||||
* @author Emmanuel Bigeon */
|
||||
public final class PluggableConsoleInput implements ConsoleInput {
|
||||
@@ -109,15 +112,15 @@ public final class PluggableConsoleInput implements ConsoleInput {
|
||||
throws IOException {
|
||||
synchronized (connexionLock) {
|
||||
if (connected) {
|
||||
// Cannot be connected to several sources
|
||||
throw new IOException("Input already connected to an input stream"); //$NON-NLS-1$
|
||||
}
|
||||
|
||||
output = out;
|
||||
if (prompting) {
|
||||
// print the hint, to indicate we are waiting for a user input.
|
||||
out.print(hint);
|
||||
out.flush();
|
||||
}
|
||||
|
||||
final InputStreamReader streamReader = new InputStreamReader(stream,
|
||||
StandardCharsets.UTF_8);
|
||||
final BufferedReader reader = new BufferedReader(streamReader);
|
||||
@@ -189,19 +192,11 @@ public final class PluggableConsoleInput implements ConsoleInput {
|
||||
if (closed) {
|
||||
throw new IOException();
|
||||
}
|
||||
prompting = true;
|
||||
hint = message;
|
||||
synchronized (connexionLock) {
|
||||
hint = message;
|
||||
if (connected) {
|
||||
output.print(message);
|
||||
output.flush();
|
||||
}
|
||||
}
|
||||
|
||||
preparePrompt(message);
|
||||
String res = null;
|
||||
while (res == null && !interrupted) {
|
||||
try {
|
||||
// Wait for a message or a connection with message
|
||||
res = waitMessageOrConnexion(TIMEOUT, TIMEOUT / TENTH);
|
||||
} catch (final InterruptedException e) {
|
||||
LOGGER.log(Level.FINE, "Interruption of thread", e); //$NON-NLS-1$
|
||||
@@ -215,6 +210,22 @@ public final class PluggableConsoleInput implements ConsoleInput {
|
||||
return res;
|
||||
}
|
||||
|
||||
/** Prepare the new prompt.
|
||||
*
|
||||
* @param message the message to indicate request of prompt. */
|
||||
private void preparePrompt(final String message) {
|
||||
prompting = true;
|
||||
// hold the message
|
||||
synchronized (connexionLock) {
|
||||
hint = message;
|
||||
if (connected) {
|
||||
// print the message
|
||||
output.print(message);
|
||||
output.flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see fr.bigeon.gclc.manager.ConsoleInput#prompt(java.lang.String, long) */
|
||||
@Override
|
||||
@@ -222,15 +233,7 @@ public final class PluggableConsoleInput implements ConsoleInput {
|
||||
if (closed) {
|
||||
throw new IOException();
|
||||
}
|
||||
prompting = true;
|
||||
synchronized (connexionLock) {
|
||||
hint = message;
|
||||
if (connected) {
|
||||
output.print(message);
|
||||
output.flush();
|
||||
}
|
||||
}
|
||||
|
||||
preparePrompt(message);
|
||||
String res = null;
|
||||
final long tic = System.currentTimeMillis();
|
||||
long time = System.currentTimeMillis() - tic;
|
||||
@@ -250,11 +253,16 @@ public final class PluggableConsoleInput implements ConsoleInput {
|
||||
return res;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see net.bigeon.gclc.manager.ConsoleInput#setPrompt(java.lang.String) */
|
||||
@Override
|
||||
public void setPrompt(String prompt) {
|
||||
public void setPrompt(final String prompt) {
|
||||
setPrompt(new ConstantString(prompt));
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see net.bigeon.gclc.manager.ConsoleInput#setPrompt(net.bigeon.gclc.tools.
|
||||
* StringProvider) */
|
||||
@Override
|
||||
public void setPrompt(final StringProvider prompt) {
|
||||
this.prompt = prompt;
|
||||
|
||||
Reference in New Issue
Block a user