@Test public void toBuilder() { Key k = Key.of(1, 2).toBuilder().append(3).build(); assertThat(k.size()).isEqualTo(3); assertThat(k.getParts()).containsExactly(1L, 2L, 3L).inOrder(); }
Key k = Key.of(); assertThat(k.size()).isEqualTo(0); assertThat(k.getParts()).isEmpty(); assertThat(k.getParts()).containsExactly("a", "b", "c").inOrder(); assertThat(k.getParts()).containsExactly("a", null, "c").inOrder(); Date.parseDate(date)); assertThat(k.size()).isEqualTo(10); assertThat(k.getParts()) .containsExactly( null, assertThat(k.getParts()).contains(null);
.build(); assertThat(k.size()).isEqualTo(10); assertThat(k.getParts()) .containsExactly( null,
@Override public String toRequestId(Serializable source, Class<?> entityType) { Key id = (Key) source; StringJoiner stringJoiner = new StringJoiner(getUrlIdSeparator()); id.getParts().forEach((p) -> stringJoiner.add(p.toString())); return stringJoiner.toString(); }
private static long sizeOf(Key k) { long result = 0; for (Object part : k.getParts()) { if (part == null) { continue; } if (part instanceof Boolean) { result += 1; } else if (part instanceof Long) { result += 8; } else if (part instanceof Double) { result += 8; } else if (part instanceof String) { result += ((String) part).length(); } else if (part instanceof ByteArray) { result += ((ByteArray) part).length(); } else if (part instanceof Timestamp) { result += 12; } else if (part instanceof Date) { result += 12; } } return result; }
private void verifyChildHasParentId(SpannerPersistentEntity parentEntity, Object parentObject, SpannerPersistentEntity childEntity, Object childObject) { Iterator parentKeyParts = this.spannerSchemaUtils.getKey(parentObject).getParts() .iterator(); Iterator childKeyParts = this.spannerSchemaUtils.getKey(childObject).getParts() .iterator(); int partNum = 1; while (parentKeyParts.hasNext()) { if (!childKeyParts.hasNext() || !parentKeyParts.next().equals(childKeyParts.next())) { throw new SpannerDataException( "A child entity's common primary key parts with its parent must " + "have the same values. Primary key component " + partNum + " does not match for entities: " + parentEntity.getType() + " " + childEntity.getType()); } partNum++; } }
private void verifyChildHasParentId(SpannerPersistentEntity parentEntity, Object parentObject, SpannerPersistentEntity childEntity, Object childObject) { Iterator parentKeyParts = this.spannerSchemaUtils.getKey(parentObject).getParts() .iterator(); Iterator childKeyParts = this.spannerSchemaUtils.getKey(childObject).getParts() .iterator(); int partNum = 1; while (parentKeyParts.hasNext()) { if (!childKeyParts.hasNext() || !parentKeyParts.next().equals(childKeyParts.next())) { throw new SpannerDataException( "A child entity's common primary key parts with its parent must " + "have the same values. Primary key component " + partNum + " does not match for entities: " + parentEntity.getType() + " " + childEntity.getType()); } partNum++; } }
List<SpannerPersistentProperty> childKeyProperties = childPersistentEntity .getFlattenedPrimaryKeyProperties(); Iterator parentKeyParts = parentKey.getParts().iterator(); while (parentKeyParts.hasNext()) { SpannerPersistentProperty keyProp = childKeyProperties.get(tagNum);
List<SpannerPersistentProperty> childKeyProperties = childPersistentEntity .getFlattenedPrimaryKeyProperties(); Iterator parentKeyParts = parentKey.getParts().iterator(); while (parentKeyParts.hasNext()) { SpannerPersistentProperty keyProp = childKeyProperties.get(tagNum);
private void encodeKey(OrderedCode orderedCode, String table, Key key) { List<SpannerSchema.KeyPart> parts = schema.getKeyParts(table); Iterator<Object> it = key.getParts().iterator(); for (SpannerSchema.KeyPart part : parts) { Object value = it.next();
Key getId(Object entity) { PersistentPropertyAccessor accessor = getOwner().getPropertyAccessor(entity); List keyParts = new ArrayList(); for (SpannerPersistentProperty spannerPersistentProperty : this.primaryKeyColumns) { Object value = accessor.getProperty(spannerPersistentProperty); if (spannerPersistentProperty.isEmbedded()) { Key embeddedKeyParts = this.spannerPersistentEntity .getSpannerMappingContext() .getPersistentEntity(spannerPersistentProperty.getType()) .getIdProperty() .getId(value); for (Object keyPart : embeddedKeyParts.getParts()) { keyParts.add(keyPart); } } else if (spannerPersistentProperty.getAnnotatedColumnItemType() == null || value == null) { keyParts.add(value); } else { keyParts.add(this.spannerPersistentEntity.getSpannerEntityWriter().getSpannerWriteConverter() .convert(value, SpannerTypeMapper .getSimpleJavaClassFor(spannerPersistentProperty.getAnnotatedColumnItemType()))); } } return this.spannerPersistentEntity.getSpannerEntityWriter().convertToKey(keyParts); }
Key getId(Object entity) { PersistentPropertyAccessor accessor = getOwner().getPropertyAccessor(entity); List keyParts = new ArrayList(); for (SpannerPersistentProperty spannerPersistentProperty : this.primaryKeyColumns) { Object value = accessor.getProperty(spannerPersistentProperty); if (spannerPersistentProperty.isEmbedded()) { Key embeddedKeyParts = this.spannerPersistentEntity .getSpannerMappingContext() .getPersistentEntity(spannerPersistentProperty.getType()) .getIdProperty() .getId(value); for (Object keyPart : embeddedKeyParts.getParts()) { keyParts.add(keyPart); } } else if (spannerPersistentProperty.getAnnotatedColumnItemType() == null || value == null) { keyParts.add(value); } else { keyParts.add(this.spannerPersistentEntity.getSpannerEntityWriter().getSpannerWriteConverter() .convert(value, SpannerTypeMapper .getSimpleJavaClassFor(spannerPersistentProperty.getAnnotatedColumnItemType()))); } } return this.spannerPersistentEntity.getSpannerEntityWriter().convertToKey(keyParts); }