package org.mifos.reports.pentaho.util; import java.sql.SQLException; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.mifos.application.servicefacade.ApplicationContextHolder; import org.springframework.context.ApplicationContext; import org.springframework.jdbc.datasource.DriverManagerDataSource; public class JNDIException extends RuntimeException { private static final long serialVersionUID = -8518534165760795156L; public JNDIException() { super(); } public JNDIException(final String message) { super(message); } public JNDIException(final String message, final HttpServletRequest request) { super(message); checkConfigurationDwDatabase(request); } public void checkConfigurationDwDatabase(HttpServletRequest request){ new ApplicationContextHolder(); ApplicationContext ach = ApplicationContextHolder.getApplicationContext(); DriverManagerDataSource dsDW = (DriverManagerDataSource) ach.getBean("dataSourcePentahoDW"); Pattern pat = Pattern.compile("(jdbc:mysql://)(.*)(:)([0-9]+)(/)([a-zA-Z]*)(?)(.*)"); Matcher m = pat.matcher(dsDW.getUrl()); String nameOfDataBase = null; if (m.find()) { nameOfDataBase = m.group(6); } if (nameOfDataBase.equals("")) { request.getSession().setAttribute("configureDwDatabase", "false"); } else { try { dsDW.getConnection(); request.getSession().setAttribute("configureDwDatabase", "true"); } catch (SQLException ex) { request.getSession().setAttribute("configureDwDatabase", "false"); } } } }