/** * Copyright © 2015-2020 JeePlus All rights reserved. */ package com.jeeplus.common.config; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.Reader; import java.util.Map; import java.util.Properties; import org.apache.ibatis.io.Resources; import org.springframework.core.io.DefaultResourceLoader; import com.ckfinder.connector.ServletContextFactory; import com.google.common.collect.Maps; import com.jeeplus.common.utils.PropertiesLoader; import com.jeeplus.common.utils.StringUtils; /** * 全局配置类 * @author jeeplus * @version 2014-06-25 */ public class Global { /** * 当前对象实例 */ private static Global global = new Global(); /** * 保存全局属性值 */ private static Map map = Maps.newHashMap(); /** * 属性文件加载对象 */ private static PropertiesLoader loader = new PropertiesLoader("jeeplus.properties"); /** * 显示/隐藏 */ public static final String SHOW = "1"; public static final String HIDE = "0"; /** * 是/否 */ public static final String YES = "1"; public static final String NO = "0"; /** * 对/错 */ public static final String TRUE = "true"; public static final String FALSE = "false"; /** * 上传文件基础虚拟路径 */ public static final String USERFILES_BASE_URL = "/userfiles/"; /** * 获取当前对象实例 */ public static Global getInstance() { return global; } /** * 获取配置 * @see ${fns:getConfig('adminPath')} */ public static String getConfig(String key) { String value = map.get(key); if (value == null){ value = loader.getProperty(key); map.put(key, value != null ? value : StringUtils.EMPTY); } return value; } /** * 获取管理端根路径 */ public static String getAdminPath() { return getConfig("adminPath"); } /** * 获取前端根路径 */ public static String getFrontPath() { return getConfig("frontPath"); } /** * 获取URL后缀 */ public static String getUrlSuffix() { return getConfig("urlSuffix"); } /** * 是否是演示模式,演示模式下不能修改用户、角色、密码、菜单、授权 */ public static Boolean isDemoMode() { String dm = getConfig("demoMode"); return "true".equals(dm) || "1".equals(dm); } /** * 在修改系统用户和角色时是否同步到Activiti */ public static Boolean isSynActivitiIndetity() { String dm = getConfig("activiti.isSynActivitiIndetity"); return "true".equals(dm) || "1".equals(dm); } /** * 页面获取常量 * @see ${fns:getConst('YES')} */ public static Object getConst(String field) { try { return Global.class.getField(field).get(null); } catch (Exception e) { // 异常代表无配置,这里什么也不做 } return null; } /** * 获取上传文件的根目录 * @return */ public static String getUserfilesBaseDir() { String dir = getConfig("userfiles.basedir"); if (StringUtils.isBlank(dir)){ try { dir = ServletContextFactory.getServletContext().getRealPath("/"); } catch (Exception e) { return ""; } } if(!dir.endsWith("/")) { dir += "/"; } // System.out.println("userfiles.basedir: " + dir); return dir; } /** * 获取工程路径 * @return */ public static String getProjectPath(){ // 如果配置了工程路径,则直接返回,否则自动获取。 String projectPath = Global.getConfig("projectPath"); if (StringUtils.isNotBlank(projectPath)){ return projectPath; } try { File file = new DefaultResourceLoader().getResource("").getFile(); if (file != null){ while(true){ File f = new File(file.getPath() + File.separator + "src" + File.separator + "main"); if (f == null || f.exists()){ break; } if (file.getParentFile() != null){ file = file.getParentFile(); }else{ break; } } projectPath = file.toString(); } } catch (IOException e) { e.printStackTrace(); } return projectPath; } /** * 写入properties信息 * * @param key * 名称 * @param value * 值 */ public static void modifyConfig(String key, String value) { try { // 从输入流中读取属性列表(键和元素对) Properties prop = getProperties(); prop.setProperty(key, value); String path = Global.class.getResource("/jeeplus.properties").getPath(); FileOutputStream outputFile = new FileOutputStream(path); prop.store(outputFile, "modify"); outputFile.close(); outputFile.flush(); } catch (Exception e) { e.printStackTrace(); } } /** * 返回 Properties * @param fileName 文件名 (注意:加载的是src下的文件,如果在某个包下.请把包名加上) * @param * @return */ public static Properties getProperties(){ Properties prop = new Properties(); try { Reader reader = Resources.getResourceAsReader("/jeeplus.properties"); prop.load(reader); } catch (Exception e) { return null; } return prop; } }