Package it.eng.spagobi.jpivotaddins.cache

Source Code of it.eng.spagobi.jpivotaddins.cache.FlushCacheServlet

/**
*
* LICENSE: see LICENSE.txt file
*
*/
package it.eng.spagobi.jpivotaddins.cache;

import it.eng.spagobi.jpivotaddins.bean.AnalysisBean;
import it.eng.spagobi.jpivotaddins.bean.ToolbarBean;
import it.eng.spagobi.jpivotaddins.bean.adapter.AnalysisAdapterUtil;

import java.io.IOException;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;

import mondrian.olap.CacheControl;
import mondrian.olap.Connection;
import mondrian.olap.Cube;
import mondrian.olap.Query;

import com.tonbeller.jpivot.chart.ChartComponent;
import com.tonbeller.jpivot.mondrian.ScriptableMondrianDrillThrough;
import com.tonbeller.jpivot.olap.model.OlapModel;
import com.tonbeller.jpivot.olap.navi.MdxQuery;
import com.tonbeller.jpivot.table.TableComponent;

public class FlushCacheServlet extends HttpServlet {
 
  public void service(HttpServletRequest request, HttpServletResponse response) {
   
    Logger logger = Logger.getLogger(this.getClass());
    logger.debug("Entering service method");
   
    // retrieves analysis information from session
    HttpSession session = request.getSession();
    OlapModel olapModel = (OlapModel) session.getAttribute("query01");
    ChartComponent chart = (ChartComponent) session.getAttribute("chart01");
    TableComponent table = (TableComponent) session.getAttribute("table01");
    AnalysisBean analysis = (AnalysisBean) session.getAttribute("analysisBean");
    analysis = AnalysisAdapterUtil.createAnalysisBean(analysis.getConnectionName(), analysis.getCatalogUri(),
      chart, table, olapModel);
    // stores current analysis information on session
    session.setAttribute("analysisBean", analysis);
   
    // retrieves Mondrian connection
    ScriptableMondrianDrillThrough smdt = (ScriptableMondrianDrillThrough) olapModel.getExtension("drillThrough");
    Connection mondrianConnection = smdt.getConnection();
    // retrieves CacheControl object
    CacheControl cacheControl = mondrianConnection.getCacheControl(null);
    // retrieves the MDX query
    MdxQuery mdxQuery = (MdxQuery) olapModel.getExtension("mdxQuery");
    Query mondrianQuery = mondrianConnection.parseQuery(mdxQuery.getMdxQuery());
    // finds the cube in the MDX query
      Cube cube = mondrianQuery.getCube();
      // flush cache on all measures for that cube
      CacheControl.CellRegion measuresRegion = cacheControl.createMeasuresRegion(cube);
      cacheControl.flush(measuresRegion);
     
//    Cube[] cubes = mondrianConnection.getSchema().getCubes();
//    for (int i = 0; i < cubes.length; i++) {
//      Cube aCube = cubes[i];
//      CacheControl.CellRegion measuresRegion = cacheControl.createMeasuresRegion(aCube);
//      cacheControl.flush(measuresRegion);
//    }
   
   
    try {
      response.sendRedirect(request.getContextPath() + "/jpivotOlap.jsp?query=refresh");
    } catch (IOException e) {
      logger.error("Error while redirecting response", e);
    }
   
    logger.debug("Exiting service method");
   
  }
 
}
TOP

Related Classes of it.eng.spagobi.jpivotaddins.cache.FlushCacheServlet

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.