package me.zhengjie.common.exception;

import org.springframework.util.StringUtils;

import java.util.HashMap;
import java.util.Map;
import java.util.stream.IntStream; /**
* @author jie
* @date 2018-11-23
*/
public class EntityNotFoundException extends RuntimeException { public EntityNotFoundException(Class clazz, Object... searchParamsMap) {
super(EntityNotFoundException.generateMessage(clazz.getSimpleName(), toMap(String.class, String.class, searchParamsMap)));
} private static String generateMessage(String entity, Map<String, String> searchParams) {
return StringUtils.capitalize(entity) +
" 不存在 " +
searchParams;
} private static <K, V> Map<K, V> toMap(
Class<K> keyType, Class<V> valueType, Object... entries) {
if (entries.length % 2 == 1)
throw new IllegalArgumentException("Invalid entries");
return IntStream.range(0, entries.length / 2).map(i -> i * 2)
.collect(HashMap::new,
(m, i) -> m.put(keyType.cast(entries[i]), valueType.cast(entries[i + 1])),
Map::putAll);
} }
package me.zhengjie.common.exception;

import org.springframework.util.StringUtils;

import java.util.HashMap;
import java.util.Map;
import java.util.stream.IntStream; /**
* @author jie
* @date 2018-11-23
*/
public class EntityExistException extends RuntimeException { public EntityExistException(Class clazz, Object... saveBodyParamsMap) {
super(EntityExistException.generateMessage(clazz.getSimpleName(), toMap(String.class, String.class, saveBodyParamsMap)));
} private static String generateMessage(String entity, Map<String, String> saveBodyParams) {
return StringUtils.capitalize(entity) +
" 已存在 " +
saveBodyParams;
} private static <K, V> Map<K, V> toMap(
Class<K> keyType, Class<V> valueType, Object... entries) {
if (entries.length % 2 == 1)
throw new IllegalArgumentException("Invalid entries");
return IntStream.range(0, entries.length / 2).map(i -> i * 2)
.collect(HashMap::new,
(m, i) -> m.put(keyType.cast(entries[i]), valueType.cast(entries[i + 1])),
Map::putAll);
}
}
throw new EntityNotFoundException(User.class, "name", username);

最新文章

  1. springboot + mysql 编写
  2. div非弹出框半透明遮罩实现全屏幕遮盖css实现
  3. js中for in的用法
  4. sizeof()与strlen()的区别
  5. 技术博客rss订阅源收集
  6. 浅谈stream数据流
  7. wpf通过VisualTreeHelper找到控件内所有CheckBox和TextBox并做相应绑定
  8. go get golang.org被墙问题解决
  9. 【Java并发.6】结构化并发应用程序
  10. 外机连接本机的虚拟机服务器_VM端口映射
  11. docker log directory
  12. 在电脑上查看小米手机连接wifi时保存的密码
  13. SQL Server Management Studio 教程二: 创建新登录名
  14. dialog提交表单
  15. 用Python写单向链表和双向链表
  16. winform datagridview 打印
  17. 封装常用的跨浏览器的事件对象EventUtil
  18. Python 爬虫的集中简单方式
  19. QQ空间|qq人气号怎么赚钱?
  20. position: absolute、relative的问题

热门文章

  1. POJ 3013 SPFA算法,邻接表的使用
  2. mint linux的几个问题
  3. getitem
  4. IO读写
  5. Django2.0模型基础——(一)
  6. Linux(CENTOS7) RabbitMq安装
  7. goahead调试经验
  8. 【转载】Github上优秀的.NET Core项目
  9. 如何在 main() 执行之前先运行其它函数
  10. PAT Advanced 1081 Rational Sum (20) [数学问题-分数的四则运算]