package com.sunda.spmsweb.config;

import java.sql.Connection;
import java.sql.SQLException;

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;

import com.bstek.ureport.console.UReportServlet;
import com.bstek.ureport.definition.datasource.BuildinDatasource;
import com.bstek.ureport.provider.report.ReportProvider;
import com.sunda.spmsweb.ureport.CustomFileReportProvider;

@Configuration
@ImportResource("classpath:ureport-console-context.xml")//不加项目能够启动但是会导致加载数据源报错或加载不了
public class UreportConfig implements BuildinDatasource {
	
	private Logger log = LoggerFactory.getLogger(getClass());
	
	@Resource
	DataSource dataSource;
	
	@SuppressWarnings({ "rawtypes", "unchecked" })
	@Bean //定义ureport的启动servlet
	public ServletRegistrationBean buildUreportServlet(){
	   return new ServletRegistrationBean(new UReportServlet(),"/ureport/*");// /ureport/* 不可更改
	}
	
	@Bean
	@ConditionalOnMissingBean
	public ReportProvider reportProvider() {
		return new CustomFileReportProvider();
	}
	

	@Override
	public String name() {
		return "ureport2 数据源";
	}

	@Override
	public Connection getConnection() {
		try {
	      return dataSource.getConnection();
	    } catch (SQLException e) {
	      log.error("Ureport 数据源 获取连接失败！");
	      e.printStackTrace();
	    }
	    return null;
	}

}
