ExecutePermissionFromUserPage.java

package org.ferris.riviera.console.execute;

import static java.lang.Boolean.FALSE;
import static java.lang.Boolean.TRUE;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.log4j.Logger;
import org.ferris.riviera.console.io.Console;
import org.ferris.riviera.console.messages.Key;

@Singleton
public class ExecutePermissionFromUserPage {

    @Inject
    protected Logger log;

    @Inject
    protected Console console;

    @Inject @Key("ExecutePermissionFromUserPage.YesNo")
    protected String yesNo;

    @Inject @Key("ExecutePermissionFromUserPage.View")
    protected String view;

    @Inject @Key("ExecutePermissionFromUserPage.Title")
    protected String title;

    @Inject
    protected ExecuteProperties executeProperties;

    void showPermissionGrantedAndStartingScriptExecution() {
        console.br();
        console.title(title);
    }

    void askPermissionFromUser(ExecuteEvent event) {
        log.info("ENTER");

        console.br();
        while (!event.isApproved().isPresent())
        {
            // Display the prompt
            if (executeProperties.getExecuteSql()) {
                console.prompt(yesNo);
            } else {
                console.prompt(view);
            }

            // Get user input
            String line = console.readLine();

            // trim, etc
            if (line == null) { line = ""; }
            line = line.trim().toLowerCase();

            // yes
            if ("y".equals(line) || "yes".equals(line)) {
                event.setApproved(TRUE);
            }
            // no
            else
            if ("n".equals(line) || "no".equals(line)) {
                event.setApproved(FALSE);
            }
        }
    }
}