@Override public final boolean contains(DataQuery path) { checkNotNull(path, "path"); List<String> queryParts = path.getParts(); String key = queryParts.get(0); if (queryParts.size() == 1) { return this.map.containsKey(key); } Optional<DataView> subViewOptional = this.getUnsafeView(key); return subViewOptional.isPresent() && subViewOptional.get().contains(path.popFirst()); }
@Override public DataView remove(DataQuery path) { checkNotNull(path, "path"); List<String> parts = path.getParts(); if (parts.size() > 1) { String subKey = parts.get(0); DataQuery subQuery = of(subKey); Optional<DataView> subViewOptional = this.getUnsafeView(subQuery); if (!subViewOptional.isPresent()) { return this; } DataView subView = subViewOptional.get(); subView.remove(path.popFirst()); } else { this.map.remove(parts.get(0)); } return this; }
@Override public DataView createView(DataQuery path) { checkNotNull(path, "path"); List<String> queryParts = path.getParts(); int sz = queryParts.size(); checkArgument(sz != 0, "The size of the query must be at least 1"); String key = queryParts.get(0); DataQuery keyQuery = of(key); if (sz == 1) { DataView result = new MemoryDataView(this, keyQuery, this.safety); this.map.put(key, result); return result; } DataQuery subQuery = path.popFirst(); DataView subView = (DataView) this.map.get(key); if (subView == null) { subView = new MemoryDataView(this.parent, keyQuery, this.safety); this.map.put(key, subView); } return subView.createView(subQuery); }
return subView.get(path.popFirst());
subView = subViewOptional.get(); subView.set(path.popFirst(), value); return this;
@Override public final boolean contains(DataQuery path) { checkNotNull(path, "path"); List<String> queryParts = path.getParts(); String key = queryParts.get(0); if (queryParts.size() == 1) { return this.map.containsKey(key); } Optional<DataView> subViewOptional = this.getUnsafeView(key); if (!subViewOptional.isPresent()) { return false; } return subViewOptional.get().contains(path.popFirst()); }
@Override public DataView remove(DataQuery path) { checkNotNull(path, "path"); List<String> parts = path.getParts(); if (parts.size() > 1) { String subKey = parts.get(0); DataQuery subQuery = of(subKey); Optional<DataView> subViewOptional = this.getUnsafeView(subQuery); if (!subViewOptional.isPresent()) { return this; } DataView subView = subViewOptional.get(); subView.remove(path.popFirst()); } else { this.map.remove(parts.get(0)); } return this; }
@Override public DataView createView(DataQuery path) { checkNotNull(path, "path"); List<String> queryParts = path.getParts(); int sz = queryParts.size(); checkArgument(sz != 0, "The size of the query must be at least 1"); String key = queryParts.get(0); DataQuery keyQuery = of(key); if (sz == 1) { DataView result = new MemoryDataView(this, keyQuery, this.safety); this.map.put(key, result); return result; } DataQuery subQuery = path.popFirst(); DataView subView = (DataView) this.map.get(key); if (subView == null) { subView = new MemoryDataView(this.parent, keyQuery, this.safety); this.map.put(key, subView); } return subView.createView(subQuery); }
return subView.get(path.popFirst());
subView = subViewOptional.get(); subView.set(path.popFirst(), value); return this;