Package org.pentaho.cdf.render

Source Code of org.pentaho.cdf.render.XcdfRenderer

package org.pentaho.cdf.render;

import java.io.IOException;

import org.apache.commons.io.FilenameUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.pentaho.cdf.CdfConstants;
import org.pentaho.cdf.InvalidCdfOperationException;
import org.pentaho.cdf.environment.CdfEngine;

import pt.webdetails.cpf.Util;
import pt.webdetails.cpf.repository.api.FileAccess;
import pt.webdetails.cpf.repository.api.IUserContentAccess;
import pt.webdetails.cpf.utils.XmlDom4JUtils;

public class XcdfRenderer {

  private static final Log logger = LogFactory.getLog( XcdfRenderer.class );

  private static final String NODE_TEMPLATE = "/cdf/template";
  private static final String NODE_MESSAGES = "/cdf/messages";
  private static final String NODE_STYLES = "/cdf/style";

  private String style;
  private String template;
  private String messagesBaseFilename;

  public boolean determineDashboardTemplating( final String solution, final String path, final String action,
      String defaultTemplate ) throws InvalidCdfOperationException {
    return determineDashboardTemplating( FilenameUtils.separatorsToUnix( Util.joinPath( solution, path, action ) ),
        defaultTemplate );
  }

  public boolean determineDashboardTemplating( final String dashboard, String defaultTemplate )
    throws InvalidCdfOperationException {

    boolean success = false;

    IUserContentAccess access = CdfEngine.getUserContentReader( null );

    if ( access.fileExists( dashboard ) ) {

      // Check for access permissions
      if ( !access.hasAccess( dashboard, FileAccess.EXECUTE ) ) {
        throw new InvalidCdfOperationException( "Access denied" );
      }

      try {

        Document doc = XmlDom4JUtils.getDocumentFromFile( access.fetchFile( dashboard ) );

        if ( doc.selectSingleNode( NODE_TEMPLATE ) != null ) {
          template = XmlDom4JUtils.getNodeText( NODE_TEMPLATE, doc, "" );
        }else{
          template = defaultTemplate;
        }
       
        // Get message file base name if any
        if ( doc.selectSingleNode( NODE_MESSAGES ) != null ) {
          messagesBaseFilename = XmlDom4JUtils.getNodeText( NODE_MESSAGES, doc );
        }

        // If a "style" tag exists, use that one
        if ( doc.selectSingleNode( NODE_STYLES ) != null ) {
          style = XmlDom4JUtils.getNodeText( NODE_STYLES, doc );
        } else {
          style = CdfConstants.DEFAULT_DASHBOARD_STYLE;
        }
       
        success = true;

      } catch ( IOException e ) {
        logger.error( e );
        throw new InvalidCdfOperationException( e );
      }
    }

    return success;
  }

  public String getTemplate() {
    return template;
  }
 
  public String getStyle() {
    return style;
  }

  public String getMessagesBaseFilename() {
    return messagesBaseFilename;
  }
}
TOP

Related Classes of org.pentaho.cdf.render.XcdfRenderer

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.