Package org.jbpm.jsf.core.impl

Source Code of org.jbpm.jsf.core.impl.JbpmJsfContextImpl

package org.jbpm.jsf.core.impl;

import java.security.Principal;
import java.util.ArrayList;
import java.util.List;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.identity.hibernate.IdentitySession;
import org.jbpm.jsf.JbpmJsfContext;
import org.jbpm.jsf.core.config.ConfigurationLocator;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
*/
public final class JbpmJsfContextImpl implements JbpmJsfContext {

    private JbpmContext jbpmContext;
    private IdentitySession identitySession;
    private List<FacesMessage> messages = new ArrayList<FacesMessage>();
    private String outcome;
    private boolean error;
    private String actionName;
    private String outcomeActionName;
    private boolean enableNavigation;

    public boolean hasJbpmContext() {
        return jbpmContext != null;
    }

    public JbpmContext getJbpmContext() {
        final boolean debug = log.isLoggable(Level.FINE);
        if (jbpmContext==null) {
            jbpmContext = JbpmConfiguration.getInstance().createJbpmContext();
            final Principal userPrincipal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
            if (userPrincipal != null && ConfigurationLocator.getInstance().useJsfActorId()) {
                jbpmContext.setActorId(userPrincipal.getName());
            }
            if (debug) log.fine(toString() + " using NEW " + jbpmContext.toString());
        } else {
            if (debug) log.fine(toString() + " using cached " + jbpmContext.toString());
        }
        return jbpmContext;
    }

    public IdentitySession getIdentitySession() {
        if (identitySession==null) {
          identitySession = new IdentitySession(getJbpmContext().getSession());
        }
        return identitySession;
    }

    public void addSuccessMessage(String message) {
        if (message != null) {
            messages.add(new FacesMessage(message, null));
            if (log.isLoggable(Level.FINE)) {
                log.fine("Added success message: " + message);
            }
        }
    }

    public void addSuccessMessage(String message, String detail) {
        if (message != null) {
            messages.add(new FacesMessage(message, detail));
            if (log.isLoggable(Level.FINE)) {
                log.fine("Added success message: " + message + " (detail: " + detail + ")");
            }
        }
    }

    public void addSuccessMessage(FacesMessage.Severity severity, String message, String detail) {
        if (severity == null) {
            throw new NullPointerException("addSuccessMessage cannot accept null as the value of the severity parameter");
        }
        if (message != null) {
            messages.add(new FacesMessage(severity, message, detail));
            if (log.isLoggable(Level.FINE)) {
                log.fine("Added success message: severity " + severity + ", message: " + message + " (detail: " + detail + ")");
            }
        }
    }

    public void selectOutcome(String outcomeName) {
        if (outcomeName != null && enableNavigation) {
            outcome = outcomeName;
            outcomeActionName = actionName;
            if (log.isLoggable(Level.FINE)) {
                log.fine("Selected outcome " + outcomeName);
            }
        }
    }

    public String getOutcome() {
        return outcome;
    }

    public boolean isError() {
        return error;
    }

    public void setError(String message) {
        error = true;
        if (message != null) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, null));
        }
        if (log.isLoggable(Level.FINE)) {
            log.log(Level.FINE, "Error message \"" + message + "\"");
        }
    }

    public void setError(String message, String detail) {
        error = true;
        if (message != null) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, detail));
        }
        if (log.isLoggable(Level.FINE)) {
            log.log(Level.FINE, "Error message \"" + message + "\" (" + detail + ")");
        }
    }

    public void setError(String message, Throwable cause) {
        error = true;
        StringBuilder detailBuilder = new StringBuilder();
        detailBuilder.append("An exception of type \"");
        detailBuilder.append(cause.getClass().getName());
        detailBuilder.append("\" was thrown.");
        final String exMsg = cause.getMessage();
        if (exMsg != null) {
            detailBuilder.append("  The message is: ");
            detailBuilder.append(exMsg);
        }
        if (message != null) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, detailBuilder.toString()));
        }
        if (log.isLoggable(Level.FINE)) {
            log.log(Level.FINE, "Error message \"" + message + "\" (exception thrown: " + cause.getMessage() + ")", cause);
        }
    }

    public String getActionName() {
        return actionName;
    }

    public void setActionName(final String actionName) {
        this.actionName = actionName;
    }

    public String getOutcomeActionName() {
        return outcomeActionName;
    }

    public void setEnableNavigation(final boolean enableNavigation) {
        this.enableNavigation = enableNavigation;
    }

    public void reset() {
        messages = new ArrayList<FacesMessage>();
        error = false;
        outcome = null;
        outcomeActionName = null;
        actionName = null;
    }

    private static final Logger log = Logger.getLogger("org.jbpm.jsf.core.impl.JbpmJsfContextImpl");

    public List<FacesMessage> getMessages() {
        return messages;
    }
}
TOP

Related Classes of org.jbpm.jsf.core.impl.JbpmJsfContextImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.