package org.exitsoft.showcase.vcsadmin.common;
import java.util.Iterator;
import java.util.List;
import javax.annotation.PostConstruct;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.exitsoft.showcase.vcsadmin.common.enumeration.SystemDictionaryCode;
import org.exitsoft.showcase.vcsadmin.common.model.CommonVariableModel;
import org.exitsoft.showcase.vcsadmin.entity.foundation.DataDictionary;
import org.exitsoft.showcase.vcsadmin.service.foundation.SystemDictionaryManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 系统变量工具类
*
* @author vincent
*
*/
@Component
public class SystemVariableUtils {
static public String DefaultDictionaryValue = "无";
static private SystemDictionaryManager systemDictionaryManager;
@Autowired
public void setSystemDictionaryManager(SystemDictionaryManager systemDictionaryManager) {
SystemVariableUtils.systemDictionaryManager = systemDictionaryManager;
}
/**
* 为了能够借助Spring自动注入systemDictionaryManager这个Bean.写一个空方法借助@PostConstruct注解注入
*/
@PostConstruct
public void init() {
}
/**
* 获取数据字典名称
*
* @param categoryCode 列别代码
* @param value 值
*
* @return String
*/
public static String getDictionaryNameByValue(SystemDictionaryCode systemDictionaryCode,Object value) {
if (value == null || systemDictionaryCode == null) {
return DefaultDictionaryValue;
}
if (value instanceof String && StringUtils.isEmpty(value.toString())) {
return DefaultDictionaryValue;
}
List<DataDictionary> dataDictionaries = systemDictionaryManager.getDataDictionariesByCategoryCode(systemDictionaryCode);
for (Iterator<DataDictionary> iterator = dataDictionaries.iterator(); iterator.hasNext();) {
DataDictionary dataDictionary = iterator.next();
if (StringUtils.equals(dataDictionary.getValue(), value.toString())) {
return dataDictionary.getName();
}
}
return DefaultDictionaryValue;
}
/**
* 通过字典类别代码获取数据字典集合
*
* @param code 字典类别
* @param ignoreValue 忽略字典的值
*
* @return List
*/
public static List<DataDictionary> getDataDictionariesByCategoryCode(SystemDictionaryCode code, String ignoreValue) {
return systemDictionaryManager.getDataDictionariesByCategoryCode(code, ignoreValue);
}
/**
* 通过字典类别代码获取数据字典集合
*
* @param code 字典类别
*
* @return List
*/
public static List<DataDictionary> getDataDictionariesByCategoryCode(SystemDictionaryCode code) {
return systemDictionaryManager.getDataDictionariesByCategoryCode(code);
}
/**
* 获取当前安全模型
*
* @return {@link SecurityModel}
*/
public static CommonVariableModel getCommonVariableModel() {
Subject subject = SecurityUtils.getSubject();
if (subject != null && subject.getPrincipal() != null && subject.getPrincipal() instanceof CommonVariableModel) {
return (CommonVariableModel) subject.getPrincipal();
}
return null;
}
/**
* 判断当前会话是否登录
*
* @return boolean
*/
public static boolean isAuthenticated() {
return SecurityUtils.getSubject().isAuthenticated();
}
}