Package org.richfaces.renderkit

Source Code of org.richfaces.renderkit.RichMessageBaseRenderer

package org.richfaces.renderkit;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.context.ResponseWriter;

import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.ajax4jsf.renderkit.RendererUtils;
import org.ajax4jsf.resource.InternetResource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.richfaces.renderkit.html.HtmlRichMessageRenderer;

/**
* @author Anton Belevich
*
*/

public abstract class RichMessageBaseRenderer extends HeaderResourcesRendererBase{
 
  protected static final Log log = LogFactory.getLog(HtmlRichMessageRenderer.class);
 
  public static final String COMPONENT_NOT_FOUND_IN_VIEW_WARN_MESSAGE = "component not found in the view WARNING";
 
  private static final String ERROR_NAME = "ERROR";
 
  private static final String WARN_NAME = "WARN";
 
  private static final String FATAL_NAME = "FATAL";
 
  private static final String INFO_NAME = "INFO";
 
  private static final String ALL_NAME = "ALL";
 
//  protected List acceptLevels = new ArrayList();
 
 
  private final InternetResource[] styles = {getResource("/org/richfaces/renderkit/html/css/msg.css"),getResource("/org/richfaces/renderkit/html/css/msgs.css")};
 
  private InternetResource[] stylesAll = null;
 
 
  protected InternetResource[] getStyles(){
    synchronized (this){
      if(stylesAll == null){
       
        InternetResource[] rsrcs = super.getStyles();
        boolean ignoreSuper = rsrcs == null || rsrcs.length == 0;
        boolean ignoreThis = styles == null || styles.length == 0;
       
        if(ignoreSuper){
         
          if (ignoreThis) {
            stylesAll = new InternetResource[0]
          } else {
            stylesAll = styles;
          }
         
        }else{
       
          if(ignoreThis){
            stylesAll = rsrcs;
          }else{
            Set<InternetResource> rsrcsSet = new java.util.LinkedHashSet<InternetResource>();
            for(int i = 0; i < rsrcs.length; i++ ){
              rsrcsSet.add(rsrcs[i]);
            }

            for(int i = 0; i < styles.length; i++ ){
              rsrcsSet.add(styles[i]);
            }
            stylesAll = (InternetResource[]) rsrcsSet.toArray(new InternetResource[rsrcsSet.size()]);
          }
        }
      }
    }
   
    return stylesAll;
  }
   
  protected Iterator<FacesMessage> getMessageIterator(FacesContext context, String forClientId, UIComponent component) throws IOException{
   
    Iterator<FacesMessage> msgIter = null;
   
    if(forClientId != null){
     
      if(forClientId.length() != 0){
       
        UIComponent result = RendererUtils.getInstance().
          findComponentFor(component, forClientId);
        if (result == null) {
          msgIter = Collections.<FacesMessage>emptyList().iterator();
        } else {
          msgIter = context.getMessages(result.getClientId(context));
        }
       
      }else{
        msgIter = context.getMessages(null);
      }
     
    }else{
      msgIter = context.getMessages();
    }
       
    return msgIter;
  }
 
  protected void renderMarkerFacet(UIComponent uiMsg, FacesContext context, ResponseWriter writer,FacesMessage facesMsg) throws IOException{

    UIComponent marker = null;
   
    String markerClass = null;
   
    String markerStyle = null;
   
    Severity severity = null;
   
   
    if(facesMsg != null){
     
      severity = facesMsg.getSeverity();
     
      if(severity == FacesMessage.SEVERITY_ERROR){
       
        markerClass = (String)uiMsg.getAttributes().get("errorMarkerClass");
        markerStyle = (String)uiMsg.getAttributes().get("errorMarkerStyle");
        marker = uiMsg.getFacet("errorMarker");
         
      }else if (severity == FacesMessage.SEVERITY_FATAL) {
       
        markerClass = (String)uiMsg.getAttributes().get("fatalMarkerClass");
        markerStyle = (String)uiMsg.getAttributes().get("fatalMarkerStyle");
        marker = uiMsg.getFacet("fatalMarker");
       
      }else if (severity == FacesMessage.SEVERITY_INFO) {
       
        markerClass = (String)uiMsg.getAttributes().get("infoMarkerClass");
        markerStyle = (String)uiMsg.getAttributes().get("infoMarkerStyle");
        marker = uiMsg.getFacet("infoMarker");
         
      }else if (severity == FacesMessage.SEVERITY_WARN) {
       
        markerClass = (String)uiMsg.getAttributes().get("warnMarkerClass");
        markerStyle = (String)uiMsg.getAttributes().get("warnMarkerStyle");
        marker = uiMsg.getFacet("warnMarker");
       
      }
     
    }else if(uiMsg.getFacet("passedMarker") != null){
     
      marker = uiMsg.getFacet("passedMarker");
      markerClass = (String) uiMsg.getAttributes().get("markerClass");
      markerStyle = (String) uiMsg.getAttributes().get("markerStyle");
       
    }
   
    if(marker == null){
      return;
    }
   
    if(!marker.isRendered()){
      return;
    }
   
    renderMarkerHtml(uiMsg, marker, context, writer, markerClass, markerStyle);
  }
 
  protected void renderLabel(UIComponent component, FacesContext context, ResponseWriter writer,FacesMessage facesMsg) throws IOException{
   
    String labelClass = null;
      
    String labelStyle = null;
      
    String passLabel = null;
      
    Severity severity = null;
      
          
    if(facesMsg != null){
      
      severity = facesMsg.getSeverity();
        
      if(severity == FacesMessage.SEVERITY_ERROR){
         
        labelClass = (String)component.getAttributes().get("errorLabelClass");
        labelStyle = (String)component.getAttributes().get("errorLabelStyle");
             
      }else if(severity == FacesMessage.SEVERITY_FATAL){
         
        labelClass = (String)component.getAttributes().get("fatalLabelClass");
        labelStyle = (String)component.getAttributes().get("fatalLabelStyle");
             
      }else if(severity == FacesMessage.SEVERITY_WARN){
         
        labelClass = (String)component.getAttributes().get("warnLabelClass");
        labelStyle = (String)component.getAttributes().get("warnLabelStyle");
             
      }else if(severity == FacesMessage.SEVERITY_INFO){
         
        labelClass = (String)component.getAttributes().get("infoLabelClass");
        labelStyle = (String)component.getAttributes().get("infoLabelStyle");
         
      }
        
    }else if(component.getAttributes().get("passedLabel") != null){
     
      passLabel = (String) component.getAttributes().get("passedLabel");       
      labelClass = (String) component.getAttributes().get("labelClass");
      labelStyle = (String) component.getAttributes().get("labelStyle");
       
    }

    renderLabelHtml(component, context, writer, facesMsg, labelClass, labelStyle, passLabel);
  }
 
  protected void  outerStyles(UIComponent component, FacesContext context, ResponseWriter writer,FacesMessage facesMsg) throws IOException{
   
    String outerClass = null;
      
    String outerStyle = null;
      
    Severity severity = null;
      
      
    if(facesMsg != null){
        
      severity = facesMsg.getSeverity();
      if(severity == FacesMessage.SEVERITY_ERROR){
         
        outerClass = (String)component.getAttributes().get("errorClass");
        outerStyle = (String)component.getAttributes().get("errorStyle");
             
      }else if(severity == FacesMessage.SEVERITY_FATAL){
         
        outerClass = (String)component.getAttributes().get("fatalClass");
        outerStyle = (String)component.getAttributes().get("fatalStyle");
               
      }else if(severity == FacesMessage.SEVERITY_WARN){
         
        outerClass = (String)component.getAttributes().get("warnClass");
        outerStyle = (String)component.getAttributes().get("warnStyle");
             
      }else if(severity == FacesMessage.SEVERITY_INFO){
         
        outerClass = (String)component.getAttributes().get("infoClass");
        outerStyle = (String)component.getAttributes().get("infoStyle");
      }
    }
   
    renderOuterStyles(component, context, writer, outerStyle, outerClass);
   
  }
 
  protected boolean isAcceptableMessagesPresent(List<String> acceptLevels, Iterator<FacesMessage> messagesIter) {
    while(messagesIter.hasNext()){
      FacesMessage message = (messagesIter.next());
      boolean exist = isAcceptableMessage(message, acceptLevels);
      if (exist) {
        return true;
      }
    }
    return false;
  }
 
  protected boolean isAcceptableMessage(FacesMessage message, List<String> acceptLevels){
   
    boolean accept = false;
   
    if(acceptLevels.contains(ALL_NAME) || message == null){
      return true;
    }
   
    Severity severity = message.getSeverity();
   
    if(severity == FacesMessage.SEVERITY_ERROR
        && acceptLevels.contains(ERROR_NAME)){
      accept = true;
     
    }else if(severity == FacesMessage.SEVERITY_FATAL
        && acceptLevels.contains(FATAL_NAME)){
      accept = true;
     
    }else if(severity == FacesMessage.SEVERITY_INFO
        && acceptLevels.contains(INFO_NAME)){
      accept = true;
     
    }else if(severity == FacesMessage.SEVERITY_WARN
        && acceptLevels.contains(WARN_NAME)){
      accept = true;
    }
   
    return accept;
  }
 
  protected List<String> creatAcceptLevels(String [] levels){

    List<String> acceptLevels = new ArrayList<String>();

    for (int i = 0; i < levels.length; i++) {
      acceptLevels.add(levels[i].toUpperCase());
    }
 
    return acceptLevels;
  }
 
  
 
  public abstract void renderMarkerHtml(UIComponent component, UIComponent markerFacet, FacesContext context, ResponseWriter writer,
                        String markerClass, String markerStyle) throws IOException;

  public abstract void renderLabelHtml(UIComponent component, FacesContext context, ResponseWriter writer,
                     FacesMessage facesMsg, String labelClass, String labelStyle, String passLabel) throws IOException;
 
  public abstract void renderOuterStyles(UIComponent component, FacesContext context, ResponseWriter writer, String outerStyle, String outerClass) throws IOException;
}
TOP

Related Classes of org.richfaces.renderkit.RichMessageBaseRenderer

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.