Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 2013-2014 sagyf Yang. The Four Group.
   */
  
  package com.github.sog.config;
  
 
 import java.net.URL;
 import java.util.List;
 
 import static com.github.sog.initalizer.InitConst.*;

.

Author(s):
walter yang
Version:
1.0 2013-12-12 13:50
Since:
JDK 1.5
 
 public class JFinalApp extends JFinalConfig {
 
     private static final Logger logger = LoggerFactory.getLogger(JFinalApp.class);
     private static final String DEFAULT_DOMAIN = "http://127.0.0.1:8080/app";
     public static boolean initlization = false;
     public static Properties configuration;
    
The application mode
 
     public static Mode mode;
     public static String  viewPath;
     public static String  domain;
     public static boolean setViewPath;
     public static String  appName;
     private static FlashManager flashManager;
    
Global routing system configuration.
 
     private Routes routes;
 
     public static FlashManager flashManager() {
        if ( == null) {
             = new SessionFlashManager();
        }
        return ;
    }
    @Override
    public void configConstant(Constants constants) {
        // set config propertis.
         = ConfigProperties.getConfigProps();
         = true;
        constants.setLoggerFactory(new LogbackLoggerFactory());
        // dev_mode
        final boolean dev_mode = ConfigProperties.getPropertyToBoolean(false);
         = dev_mode ? . : .;
        constants.setDevMode(dev_mode);
         = ConfigProperties.getProperty("/WEB-INF/views/");
        if (!StringKit.isBlank()) {
             = true;
            constants.setBaseViewPath();
        }
         = ConfigProperties.getProperty("app");
         = ConfigProperties.getProperty();
        String flash = ConfigProperties.getProperty("session");
         = StringUtils.equals("session"flash) ? new SessionFlashManager()
                : new EhCacheFlashManager("flash_cache_val");
        String view_type = ConfigProperties.getProperty();
        if (!StringKit.isBlank(view_type)) {
            setViewType(constantsview_type);
        } else {
            constants.setFreeMarkerViewExtension(".ftl");
            setFtlSharedVariable();
        }
        String view_404 = ConfigProperties.getProperty();
        if (!Strings.isNullOrEmpty(view_404)) {
            constants.setError401View(view_404);
        }
        String view_500 = ConfigProperties.getProperty();
        if (!Strings.isNullOrEmpty(view_500)) {
            constants.setError500View(view_500);
        }
    }
    @Override
    public void configRoute(Routes routes) {
        this. = routes;
        routes.add(new AutoBindRoutes());
    }
    @Override
    public void configPlugin(Plugins plugins) {
        String db_url = ConfigProperties.getProperty();
        initDataSource(pluginsdb_url);
        if (ConfigProperties.getPropertyToBoolean(false)) {
            plugins.add(new ShiroPlugin(this.));
        }
        if (ConfigProperties.getPropertyToBoolean(false)) {
            plugins.add(new EhCachePlugin());
        }
        if (ConfigProperties.getPropertyToBoolean(false)) {
            plugins.add(new QuartzPlugin());
        }
        final String mongo_host = ConfigProperties.getProperty(.);
        final String mongo_url = ConfigProperties.getProperty(.);
        if (!Strings.isNullOrEmpty(mongo_host) || !Strings.isNullOrEmpty(mongo_url)) {
            int mongo_port = ConfigProperties.getPropertyToInt(.);
            String mongo_db = ConfigProperties.getProperty("test");
            boolean moriph = ConfigProperties.getPropertyToBoolean(false);
            String pkgs = ConfigProperties.getProperty(.);
            final MongodbPlugin mongodb = new MongodbPlugin(mongo_hostmongo_portmongo_dbmoriphpkgs);
            plugins.add(mongodb);
        }
        final String redis_host = ConfigProperties.getProperty(.);
        if (!Strings.isNullOrEmpty(redis_host)) {
            int port = ConfigProperties.getPropertyToInt(.);
            final JedisPlugin jedis = new JedisPlugin(redis_hostport, 2000);
            plugins.add(jedis);
        }
    }
    @Override
    public void configInterceptor(Interceptors interceptors) {
        try {
            URL config_url = com.google.common.io.Resources.getResource("syslog.json");
            if (config_url != null) {
                SysLogInterceptor sysLogInterceptor = new SysLogInterceptor();
                sysLogInterceptor = sysLogInterceptor.setLogProcesser(new SystemLogProcessor(), config_url.getPath());
                if (sysLogInterceptor != null) {
                    interceptors.add(sysLogInterceptor);
                }
            }
        } catch (IllegalArgumentException ignored) {
            // ingored.
        }
        interceptors.add(new ContextInterceptor());
        new AutoOnLoadInterceptor(interceptors).load();
    }
    @Override
    public void configHandler(Handlers handlers) {
        //访问路径是/admin/monitor
        DruidStatViewHandler dvh = new DruidStatViewHandler("/admin/monitor"new IDruidStatViewAuth() {
            public boolean isPermitted(HttpServletRequest request) {//获得查看权限
//				HttpSession hs = request.getSession(false);
//				return (hs != null && hs.getAttribute("$admin$") != null);
                return true;
            }
        });
        handlers.add(dvh);
    }
    @Override
    public void afterJFinalStart() {
        super.afterJFinalStart();
        List<ClassappCliasses = ClassBox.getInstance().getClasses(.);
        if (appCliasses != null && !appCliasses.isEmpty()) {
            for (Class appCliass : appCliasses) {
                AppLoadEvent event;
                try {
                    event = (AppLoadEventappCliass.newInstance();
                    event.load();
                } catch (Throwable t) {
                    .error("load event is error!"t);
                    // ingore
                }
            }
        }
        ClassBox.getInstance().clearBox();
    }
    @Override
    public void beforeJFinalStop() {
        super.beforeJFinalStop();
    }

    
init databases.

Parameters:
plugins plugin.
db_url db_url
    private void initDataSource(Plugins pluginsString db_url) {
        if (!Strings.isNullOrEmpty(db_url)) {
            String dbtype = JdbcUtils.getDbType(db_url.);
            String driverClassName;
            try {
                driverClassName = JdbcUtils.getDriverClassName(db_url);
            } catch (SQLException e) {
                throw new DatabaseException(e.getMessage(), e);
            }
            final DruidPlugin druidPlugin = new DruidPlugin(
                    db_url
                    , ConfigProperties.getProperty()
                    , ConfigProperties.getProperty()
                    , driverClassName);
            druidPlugin.setFilters("stat,wall");
            final WallFilter wall = new WallFilter();
            wall.setDbType(.);
            druidPlugin.addFilter(wall);
            plugins.add(druidPlugin);
            //  setting db table name like 'dev_info'
            final AutoTableBindPlugin atbp = new AutoTableBindPlugin(druidPlugin.);
            if (!StringUtils.equals(dbtype.)) {
                if (StringUtils.equals(dbtype.)) {
                    atbp.setDialect(new OracleDialect());
                } else if (StringUtils.equals(dbtype.)) {
                    atbp.setDialect(new PostgreSqlDialect());
                } else if (StringUtils.equals(dbtype.)) {
                    atbp.setDialect(new DB2Dialect());
                } else if (StringUtils.equals(dbtype.)) {
                    atbp.setDialect(new H2Dialect());
                } else if (StringUtils.equals(dbtype"sqlite")) {
                    atbp.setDialect(new Sqlite3Dialect());
                } else {
                    ..println("database type is use mysql.");
                }
            }
            atbp.setShowSql(.isDev());
            plugins.add(atbp);
            if (ConfigProperties.getPropertyToBoolean(false)) {
                plugins.add(new SqlInXmlPlugin());
            }
        }
    }

    
set view type.

Parameters:
constants jfinal constant.
view_type view type.
    private void setViewType(Constants constantsString view_type) {
        final ViewType viewType = ViewType.valueOf(view_type.toUpperCase());
        if (viewType == .) {
            constants.setFreeMarkerViewExtension(".ftl");
            setFtlSharedVariable();
        }
        constants.setViewType(viewType);
    }

    
set freemarker variable.
    private void setFtlSharedVariable() {
        // custmer variable
        final Configuration config = FreeMarkerRender.getConfiguration();
        config.setSharedVariable("block"new BlockDirective());
        config.setSharedVariable("extends"new ExtendsDirective());
        config.setSharedVariable("override"new OverrideDirective());
        config.setSharedVariable("super"new SuperDirective());
        // 增加日期美化指令(类似 几分钟前)
        config.setSharedVariable("prettyTime"new PrettyTimeDirective());
    }

    
2 modes
    public enum Mode {

        
Enable development-specific features, e.g. view the documentation at the URL "/@documentation".
        DEV,
        
Disable development-specific features.
        PROD;
        public boolean isDev() {
            return this == ;
        }
    }
New to GrepCode? Check out our FAQ X