/** * @param key * @return the value associated with that key or null if there is no entry with that key */ @Nullable public KvValue<?> get(String key) { for (DocEntry<?> entry : this) { if (entry.getKey().equals(key)) { return entry.getValue(); } } return null; }
public Builder(KvDocument other) { for (DocEntry<?> docEntry : other) { values.put(docEntry.getKey(), docEntry.getValue()); } }
@Override public BsonValue<?> visit(KvDocument value, Void arg) { List<Entry<?>> entryList = new ArrayList<>(value.size()); for (DocEntry<?> docEntry : value) { entryList.add(new SimpleEntry<>(docEntry.getKey(), docEntry.getValue().accept(this, arg))); } return newDocument(entryList); }
@Override public Boolean visit(KvDocument value, KvValue<?> other) { if (other == value) { return true; } if (other == null) { return false; } if (!(other instanceof KvDocument)) { return false; } KvDocument otherDoc = (KvDocument) other; if (value.size() != otherDoc.size()) { return false; } for (KvDocument.DocEntry<?> myEntry : value) { KvValue<?> otherValue = otherDoc.get(myEntry.getKey()); if (otherValue == null) { return false; } if (!otherValue.accept(this, myEntry.getValue())) { return false; } } return true; }
/** * Two entries are equals if their keys and values are equal. * * @param obj * @return */ @Override public boolean equals(Object obj) { if (obj == this) { return true; } if (obj == null) { return false; } if (!(obj instanceof DocEntry)) { return false; } DocEntry<?> other = (DocEntry<?>) obj; return this.getKey().equals(other.getKey()) && this.getValue().equals(other.getValue()); }
@Override public Void visit(KvDocument value, A arg) { preKvValue(value, arg); preDoc(value, arg); for (DocEntry<?> entry : value) { entry.getValue().accept(this, arg); } postDoc(value, arg); postKvValue(value, arg); return null; }
@Override public String toString() { return getKey() + " : " + getValue(); } }