package com.ruituo.config;
import org.apache.log4j.Logger;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.ext.handler.ContextPathHandler;
import com.jfinal.ext.interceptor.SessionInViewInterceptor;
import com.jfinal.kit.PathKit;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
import com.jfinal.plugin.c3p0.C3p0Plugin;
import com.ruituo.controller.IndexController;
import com.ruituo.controller.MobileController;
import com.ruituo.controller.WxController;
import com.ruituo.controller.admin.AadviceController;
import com.ruituo.controller.admin.ColumnController;
import com.ruituo.controller.admin.LinkController;
import com.ruituo.controller.admin.MessageController;
import com.ruituo.controller.admin.NewsController;
import com.ruituo.controller.admin.ProductController;
import com.ruituo.controller.admin.QQController;
import com.ruituo.controller.admin.ResumeController;
import com.ruituo.controller.admin.ThemeController;
import com.ruituo.controller.admin.VideoController;
import com.ruituo.controller.admin.WebController;
import com.ruituo.controller.admin.WelcomeController;
import com.ruituo.controller.login.LoginController;
import com.ruituo.model.Aadvice;
import com.ruituo.model.Column;
import com.ruituo.model.Link;
import com.ruituo.model.Message;
import com.ruituo.model.News;
import com.ruituo.model.Product;
import com.ruituo.model.QQ;
import com.ruituo.model.Resume;
import com.ruituo.model.Theme;
import com.ruituo.model.User;
import com.ruituo.model.Video;
import com.ruituo.model.Web;
import com.ruituo.util.UpImgUtil;
public class SystemConfig extends JFinalConfig {
	
	private static final Logger log = Logger.getLogger(SystemConfig.class);
	public final static String relativePath = "upload/";   //相对路径
    public final static String absolutePath = PathKit.getWebRootPath() + "/" + relativePath;
	
	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		PropKit.use("a_little_config.txt");
		me.setDevMode(true);   //调试模式(开发时候设置为true)
		me.setEncoding("UTF-8");
		me.setError404View("/404.html");
        me.setError500View("/500.html");
	}
	
	/**
	 * 配置路由
	 */
	public void configRoute(Routes me) {
		me.add("/",IndexController.class);
		//后台路由
		me.add("/img",UpImgUtil.class);
		me.add("/wel",WelcomeController.class);
		me.add("/web",WebController.class);
		me.add("/mes",MessageController.class);
		me.add("/column",ColumnController.class);
		me.add("/qq",QQController.class);
		me.add("/link",LinkController.class);
		me.add("/theme",ThemeController.class);
		me.add("/news",NewsController.class);
		me.add("/pro",ProductController.class);
		me.add("/adv",AadviceController.class);
		me.add("/resume",ResumeController.class);
		me.add("/video",VideoController.class);
		//登陆路由
		me.add("/login",LoginController.class);
		me.add("/mobile",MobileController.class);
		me.add("/wx",WxController.class);
		
	}
	
	public static C3p0Plugin createC3p0Plugin() {
		return new C3p0Plugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
	}
	
	/**
	 * 配置插件
	 */
	public void configPlugin(Plugins me) {
		C3p0Plugin C3p0Plugin = createC3p0Plugin();
		me.add(C3p0Plugin);
		
		log.warn("MySql数据库链接启动...");
		ActiveRecordPlugin arp = new ActiveRecordPlugin(C3p0Plugin);
		me.add(arp);
		arp.addMapping("t_web", Web.class);
		arp.addMapping("t_message", Message.class);
		arp.addMapping("t_column", Column.class);
		arp.addMapping("t_qq", QQ.class);
		arp.addMapping("t_link", Link.class);
		arp.addMapping("t_theme", Theme.class);
		arp.addMapping("t_news", News.class);
		arp.addMapping("t_product", Product.class);
		arp.addMapping("t_user", User.class);
		arp.addMapping("t_advice", Aadvice.class);
		arp.addMapping("t_resume", Resume.class);
		arp.addMapping("t_video", Video.class);
	}
	
	/**
	 * 配置全局拦截器
	 */
	public void configInterceptor(Interceptors me) {
		me.add(new SessionInViewInterceptor()); //全局Session
	}
	
	/**
	 * 配置处理器
	 */
	public void configHandler(Handlers me){
		me.add(new ContextPathHandler("ctx_path"));
	}
	
}