¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.springblade.core.mongo.utils; |
| | | |
| | | import com.fasterxml.jackson.databind.JsonNode; |
| | | import lombok.Getter; |
| | | import org.springframework.util.Assert; |
| | | |
| | | import java.util.LinkedList; |
| | | import java.util.StringJoiner; |
| | | |
| | | /** |
| | | * json tree èç¹ä¿¡æ¯ |
| | | * |
| | | * @author L.cm |
| | | */ |
| | | public class JsonNodeInfo { |
| | | /** |
| | | * mongo keys: class1.class2.item |
| | | */ |
| | | private volatile String nodeKeys; |
| | | /** |
| | | * jsonPathè¯æ³ï¼/class1/class2/item |
| | | */ |
| | | private volatile String nodePath; |
| | | /** |
| | | * èç¹å
³ç³» |
| | | */ |
| | | @Getter |
| | | private final LinkedList<String> elements; |
| | | /** |
| | | * tree ç å¶åèç¹ï¼æ¤å¤ä¸ºå¼ç¨ |
| | | */ |
| | | @Getter |
| | | private final JsonNode leafNode; |
| | | |
| | | public JsonNodeInfo(LinkedList<String> elements, JsonNode leafNode) { |
| | | Assert.notNull(elements, "elements can not be null."); |
| | | this.nodeKeys = null; |
| | | this.nodePath = null; |
| | | this.elements = elements; |
| | | this.leafNode = leafNode; |
| | | } |
| | | |
| | | /** |
| | | * è·å mongo dbç key è¯æ³ |
| | | * @return mongo dbç key è¯æ³ |
| | | */ |
| | | public String getNodeKeys() { |
| | | if (nodeKeys == null) { |
| | | synchronized (this) { |
| | | if (nodeKeys == null) { |
| | | StringJoiner nodeKeysJoiner = new StringJoiner("."); |
| | | elements.forEach(nodeKeysJoiner::add); |
| | | nodeKeys = nodeKeysJoiner.toString(); |
| | | } |
| | | } |
| | | } |
| | | return nodeKeys; |
| | | } |
| | | |
| | | /** |
| | | * è·å json path è¯æ³è·¯å¾ |
| | | * @return jsonPath è·¯å¾ |
| | | */ |
| | | public String getNodePath() { |
| | | if (nodePath == null) { |
| | | synchronized (this) { |
| | | if (nodePath == null) { |
| | | StringJoiner nodePathJoiner = new StringJoiner("/", "/", ""); |
| | | elements.forEach(nodePathJoiner::add); |
| | | nodePath = nodePathJoiner.toString(); |
| | | } |
| | | } |
| | | } |
| | | return nodePath; |
| | | } |
| | | |
| | | /** |
| | | * è·å第ä¸ä¸ªå
ç´ |
| | | * @return element |
| | | */ |
| | | public String getFirst() { |
| | | return elements.getFirst(); |
| | | } |
| | | |
| | | } |