@Override public int size() { return delegate.size(); }
public boolean isEmpty() { return size() == 0; }
@Override protected boolean equalsOptimization(@Nonnull KVArray other) { if (other instanceof ListKVArray) { return this.size() == other.size(); } return true; }
@Override public BsonValue<?> visit(KVArray value, Void arg) { List<BsonValue<?>> list = new ArrayList<>(value.size()); for (KVValue<?> kVValue : value) { list.add(kVValue.accept(this, arg)); } return newArray(list); }
/** * @return * {@linkplain Hashing#goodFastHash(int) Hashing.goodFastHash(32).newHasher().putInt(size()).putInt(getElementType().hashCode()).hash().asInt();} */ @Override public int hashCode() { return Hashing.goodFastHash(32).newHasher().putInt(size()).putInt(getElementType().hashCode()).hash().asInt(); }
@Override public Boolean visit(SizeIsQueryCriteria criteria, KVValue<?> arg) { KVValue<?> referenced = resolve(criteria.getAttributeReference(), arg); if (referenced == null) { return false; } if (!(referenced instanceof KVArray)) { return false; } return ((KVArray) referenced).size() == criteria.getValue().getValue(); }
assert result.size() == value.size();
return null; if (castedAtt.getIndex() >= value.size()) { return null;
@Override public Void visit(KVArray value, TranslatorConsumer arg) { List<ScalarValue<?>> valueBuilder = new ArrayList<>(value.size()); ArrayStructure.Builder structureBuilder = new ArrayStructure.Builder(); ArrayTranslatorConsumer consumer = new ArrayTranslatorConsumer( valueBuilder, structureBuilder); int i = 0; for (KVValue<?> child : value) { consumer.setIndex(i); child.accept(this, consumer); i++; //i is 0-based! } arg.consume(new ListScalarArray(valueBuilder)); arg.consume(structureBuilder.built()); return null; }
@Override public Void visit(KVArray value, LinkedList<AttributeReference.Key> arg) { if (!containsObjects(value)) { ScalarValue<?> arrValue = KVValueToScalarValue.fromDocValue(value); conjunctionBuilder.add( new IsEqualQueryCriteria( basicAttRef.append(arg), arrValue ) ); } for (int i = 0; i < value.size(); i++) { arg.addLast(new AttributeReference.ArrayKey(i)); KVValue<?> docValue = value.get(i); if (docValue.getType().equals(DocumentType.INSTANCE)) { docValue.accept(this, arg); } else if (docValue.getType() instanceof ArrayType) { docValue.accept(this, arg); } arg.removeLast(); } return null; }