private void verifyEntity(final Object source, final Entity entity) { if (!Objects.equals(source, entity.getVertex())) { throw new IllegalArgumentException("Entity must be added to correct vertex."); } }
@Override public Object getVertex() { loadIdentifiers(); return entity.getVertex(); }
@Override public Object getIdentifier(final IdentifierType identifierType) { switch (identifierType) { case GROUP: return getGroup(); case VERTEX: return getVertex(); default: return null; } }
public boolean equals(final Entity entity) { return null != entity && new EqualsBuilder() .appendSuper(super.equals(entity)) .append(vertex, entity.getVertex()) .isEquals(); }
public Builder entity(final Entity entity) { if (!edges.isEmpty()) { final Object root = edges.getLast().stream().findAny().orElseThrow(RuntimeException::new).getAdjacentMatchedVertexValue(); verifyEntity(root, entity); } if (!entities.isEmpty()) { final Object root = entities.getLast().getKey(); verifyEntity(root, entity); final Entry<Object, Set<Entity>> entry = entities.getLast(); final Set<Entity> currentEntities = entry.getValue(); currentEntities.add(entity); entry.setValue(currentEntities); } else { entities.push(new AbstractMap.SimpleEntry<>(entity.getVertex(), Sets.newHashSet(entity))); } return this; }
@Override public Entity emptyClone() { return new Entity(this.getGroup(), this.getVertex()); }
public Builder entities(final Iterable<Entity> entities) { if (Iterables.isEmpty(entities)) { return this; } if (Iterables.size(entities) == 1) { return entity(entities.iterator().next()); } if (distinct(Streams.toStream(entities).map(EntityId::getVertex).collect(toList()))) { throw new IllegalArgumentException("Entities must all have the same vertex."); } final Entity entity = entities.iterator().next(); if (!edges.isEmpty()) { final Object root = edges.getLast().stream().findAny().orElseThrow(RuntimeException::new).getAdjacentMatchedVertexValue(); verifyEntity(root, entity); } if (!this.entities.isEmpty()) { final Entry<Object, Set<Entity>> entry = this.entities.getLast(); final Object root = entry.getKey(); verifyEntity(root, entity); final Set<Entity> currentEntities = entry.getValue(); currentEntities.addAll(Lists.newArrayList(entities)); entry.setValue(currentEntities); } else { this.entities.push(new AbstractMap.SimpleEntry<>(entity.getVertex(), Sets.newHashSet(entities))); } return this; }
private Entity cloneCoreFields(final Entity entity) { final Entity newEntity = new Entity(entity.getGroup()); newEntity.setVertex(entity.getVertex()); return newEntity; } }
@Test public void shouldDelegateSetIdentifierToEntity() { // Given final Entity entity = new Entity("group"); final ElementValueLoader entityLoader = mock(ElementValueLoader.class); final LazyEntity lazyEntity = new LazyEntity(entity, entityLoader); final String vertex = "vertex"; // When lazyEntity.setVertex(vertex); // Then verify(entityLoader, never()).loadIdentifiers(entity); assertEquals(vertex, entity.getVertex()); }
@Test public void shouldLoadIdentifierWhenNotLoaded() { // Given final Entity entity = mock(Entity.class); given(entity.getProperties()).willReturn(mock(Properties.class)); final ElementValueLoader entityLoader = mock(ElementValueLoader.class); final LazyEntity lazyEntity = new LazyEntity(entity, entityLoader); final IdentifierType identifierType = IdentifierType.VERTEX; final String exceptedIdentifierValue = "identifier value"; given(entity.getVertex()).willReturn(exceptedIdentifierValue); // When Object identifierValue = lazyEntity.getIdentifier(identifierType); // Then assertEquals(exceptedIdentifierValue, identifierValue); assertEquals(identifierValue, entity.getVertex()); verify(entityLoader).loadIdentifiers(entity); }
@Test public void shouldNotLoadIdentifierWhenLoaded() { // Given final Entity entity = new Entity("group"); final ElementValueLoader entityLoader = mock(ElementValueLoader.class); final LazyEntity lazyEntity = new LazyEntity(entity, entityLoader); final IdentifierType identifierType = IdentifierType.VERTEX; final String exceptedIdentifierValue = "identifier value"; lazyEntity.setVertex(exceptedIdentifierValue); // When - should use the loaded value Object identifierValue = lazyEntity.getIdentifier(identifierType); Object identifierValue2 = lazyEntity.getIdentifier(identifierType); // Then assertEquals(exceptedIdentifierValue, identifierValue); assertEquals(exceptedIdentifierValue, identifierValue2); assertEquals(exceptedIdentifierValue, entity.getVertex()); verify(entityLoader, never()).loadIdentifiers(entity); }
@Override @Test public void shouldSetAndGetFields() { // Given final Entity entity = new Entity.Builder() .group("group") .vertex("identifier") .build(); // Then assertEquals("group", entity.getGroup()); assertEquals("identifier", entity.getVertex()); }
@Test public void shouldConstructEntity() { // Given final String vertex = "vertex1"; final String propValue = "propValue"; // When final Entity entity = new Entity(TestGroups.ENTITY, vertex); entity.putProperty(TestPropertyNames.STRING, propValue); // Then assertEquals(TestGroups.ENTITY, entity.getGroup()); assertEquals(vertex, entity.getVertex()); assertEquals(propValue, entity.getProperty(TestPropertyNames.STRING)); }
@Override @Test public void shouldReturnFalseForEqualsWhenGroupIsDifferent() { // Given final Entity entity1 = new Entity("group"); entity1.setVertex("vertex"); final Entity entity2 = new Entity("a different group"); entity2.setVertex(entity1.getVertex()); // When boolean isEqual = entity1.equals((Object) entity2); // Then assertFalse(isEqual); assertFalse(entity1.hashCode() == entity2.hashCode()); }
@Test public void shouldBuildEntity() { // Given final String vertex = "vertex1"; final String propValue = "propValue"; // When final Entity entity = new Entity.Builder() .group(TestGroups.ENTITY) .vertex(vertex) .property(TestPropertyNames.STRING, propValue) .build(); // Then assertEquals(TestGroups.ENTITY, entity.getGroup()); assertEquals(vertex, entity.getVertex()); assertEquals(propValue, entity.getProperty(TestPropertyNames.STRING)); }
private void verifyEntity(final Object source, final Entity entity) { if (!Objects.equals(source, entity.getVertex())) { throw new IllegalArgumentException("Entity must be added to correct vertex."); } }
@Override public Object getIdentifier(final IdentifierType identifierType) { switch (identifierType) { case GROUP: return getGroup(); case VERTEX: return getVertex(); default: return null; } }
public boolean equals(final Entity entity) { return null != entity && new EqualsBuilder() .appendSuper(super.equals(entity)) .append(vertex, entity.getVertex()) .isEquals(); }
@Override protected byte[] getRowKeyFromEntity(final Entity entity) { // No Delimiters but need to escape bytes // because later we check how many delimiter characters there are try { return ByteArrayEscapeUtils.escape(((ToBytesSerialiser) schema.getVertexSerialiser()).serialise(entity.getVertex())); } catch (final SerialisationException e) { throw new AccumuloElementConversionException("Failed to serialise Entity Identifier", e); } }