¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the dreamlu.net developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: Chill åºéª (smallchill@163.com) |
| | | */ |
| | | package org.springblade.core.tool.support; |
| | | |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springframework.util.LinkedCaseInsensitiveMap; |
| | | |
| | | import java.sql.Time; |
| | | import java.sql.Timestamp; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * é¾å¼map |
| | | * |
| | | * @author Chill |
| | | */ |
| | | public class Kv extends LinkedCaseInsensitiveMap<Object> { |
| | | |
| | | private Kv() { |
| | | super(); |
| | | } |
| | | |
| | | /** |
| | | * å建Kv |
| | | * |
| | | * @return Kv |
| | | */ |
| | | public static Kv create() { |
| | | return new Kv(); |
| | | } |
| | | |
| | | public static <K, V> HashMap<K, V> newMap() { |
| | | return new HashMap<>(16); |
| | | } |
| | | |
| | | /** |
| | | * 设置å |
| | | * |
| | | * @param attr 屿§ |
| | | * @param value å¼ |
| | | * @return æ¬èº« |
| | | */ |
| | | public Kv set(String attr, Object value) { |
| | | this.put(attr, value); |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置å
¨é¨ |
| | | * |
| | | * @param map 屿§ |
| | | * @return æ¬èº« |
| | | */ |
| | | public Kv setAll(Map<? extends String, ?> map) { |
| | | if (map != null) { |
| | | this.putAll(map); |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | /** |
| | | * 设置åï¼å½é®æå¼ä¸ºnullæ¶å¿½ç¥ |
| | | * |
| | | * @param attr 屿§ |
| | | * @param value å¼ |
| | | * @return æ¬èº« |
| | | */ |
| | | public Kv setIgnoreNull(String attr, Object value) { |
| | | if (attr != null && value != null) { |
| | | set(attr, value); |
| | | } |
| | | return this; |
| | | } |
| | | |
| | | public Object getObj(String key) { |
| | | return super.get(key); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param <T> å¼ç±»å |
| | | * @param attr åæ®µå |
| | | * @param defaultValue é»è®¤å¼ |
| | | * @return åæ®µå¼ |
| | | */ |
| | | @SuppressWarnings("unchecked") |
| | | public <T> T get(String attr, T defaultValue) { |
| | | final Object result = get(attr); |
| | | return (T) (result != null ? result : defaultValue); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public String getStr(String attr) { |
| | | return Func.toStr(get(attr), null); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Integer getInt(String attr) { |
| | | return Func.toInt(get(attr), -1); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Long getLong(String attr) { |
| | | return Func.toLong(get(attr), -1L); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Float getFloat(String attr) { |
| | | return Func.toFloat(get(attr), null); |
| | | } |
| | | |
| | | public Double getDouble(String attr) { |
| | | return Func.toDouble(get(attr), null); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Boolean getBool(String attr) { |
| | | return Func.toBoolean(get(attr), null); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public byte[] getBytes(String attr) { |
| | | return get(attr, null); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Date getDate(String attr) { |
| | | return get(attr, null); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Time getTime(String attr) { |
| | | return get(attr, null); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Timestamp getTimestamp(String attr) { |
| | | return get(attr, null); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¹å®ç±»åå¼ |
| | | * |
| | | * @param attr åæ®µå |
| | | * @return åæ®µå¼ |
| | | */ |
| | | public Number getNumber(String attr) { |
| | | return get(attr, null); |
| | | } |
| | | |
| | | @Override |
| | | public Kv clone() { |
| | | Kv clone = new Kv(); |
| | | clone.putAll(this); |
| | | return clone; |
| | | } |
| | | |
| | | } |