@JsonIgnore @Override public DirectedType getDirectedType() { if (isDirected()) { return DirectedType.DIRECTED; } return DirectedType.UNDIRECTED; }
@Override public boolean isDirected() { loadIdentifiers(); return edge.isDirected(); }
/** * Note this does not include the matchedVertex field. * * @return a hash code value for this edge. */ @Override public int hashCode() { return new HashCodeBuilder(21, 3) .appendSuper(super.hashCode()) .append(getSource()) .append(getDestination()) .append(isDirected()) .toHashCode(); }
/** * Note this does not include the matchedVertex field. * * @param edge the reference Edge with which to compare. * @return {@code true} if this object is the same as the edge * argument; {@code false} otherwise. */ public boolean equals(final Edge edge) { return null != edge && new EqualsBuilder() .append(isDirected(), edge.isDirected()) .append(getSource(), edge.getSource()) .append(getDestination(), edge.getDestination()) .appendSuper(super.equals(edge)) .isEquals(); }
@Override public String toString() { return new ToStringBuilder(this) .append("source", getSource()) .append("destination", getDestination()) .append("directed", isDirected()) .append("matchedVertex", getMatchedVertex()) .appendSuper(super.toString()) .build(); }
@Test public void shouldDeserialiseFromJsonUsingDirectedTrueField() throws SerialisationException { // Given final String json = "{\"class\": \"uk.gov.gchq.gaffer.data.element.Edge\", \"directed\": true}"; // When final Edge deserialisedEdge = JSONSerialiser.deserialise(json.getBytes(), Edge.class); // Then assertTrue(deserialisedEdge.isDirected()); }
@Test public void shouldDeserialiseFromJsonUsingDirectedFalseField() throws SerialisationException { // Given final String json = "{\"class\": \"uk.gov.gchq.gaffer.data.element.Edge\", \"directed\": false}"; // When final Edge deserialisedEdge = JSONSerialiser.deserialise(json.getBytes(), Edge.class); // Then assertFalse(deserialisedEdge.isDirected()); }
@Test public void shouldDeserialiseFromJsonWhenDirectedTypeIsUndirected() throws SerialisationException { // Given final String json = "{\"class\": \"uk.gov.gchq.gaffer.data.element.Edge\", \"directedType\": \"UNDIRECTED\"}"; // When final Edge deserialisedEdge = JSONSerialiser.deserialise(json.getBytes(), Edge.class); // Then assertFalse(deserialisedEdge.isDirected()); }
@Test public void shouldDeserialiseFromJsonWhenDirectedTypeIsDirected() throws SerialisationException { // Given final String json = "{\"class\": \"uk.gov.gchq.gaffer.data.element.Edge\", \"directedType\": \"DIRECTED\"}"; // When final Edge deserialisedEdge = JSONSerialiser.deserialise(json.getBytes(), Edge.class); // Then assertTrue(deserialisedEdge.isDirected()); }
@Test public void shouldDeserialiseFromJsonWhenDirectedTypeIsEither() throws SerialisationException { // Given final String json = "{\"class\": \"uk.gov.gchq.gaffer.data.element.Edge\", \"directedType\": \"EITHER\"}"; // When final Edge deserialisedEdge = JSONSerialiser.deserialise(json.getBytes(), Edge.class); // Then assertTrue(deserialisedEdge.isDirected()); }
@Override public Object getIdentifier(final IdentifierType identifierType) { switch (identifierType) { case GROUP: return getGroup(); case SOURCE: return getSource(); case DESTINATION: return getDestination(); case DIRECTED: return isDirected(); case MATCHED_VERTEX: return getMatchedVertexValue(); case ADJACENT_MATCHED_VERTEX: return getAdjacentMatchedVertexValue(); default: return null; } }
@Override public Edge emptyClone() { return new Edge( getGroup(), getSource(), getDestination(), isDirected(), getMatchedVertex(), new Properties() ); }
private Edge cloneCoreFields(final Edge edge) { return new Edge.Builder() .group(edge.getGroup()) .source(edge.getSource()) .dest(edge.getDestination()) .directed(edge.isDirected()) .build(); }
@Override @Test public void shouldSetAndGetFields() { // Given final Edge edge = new Edge.Builder() .group("group") .source("source vertex") .dest("destination vertex") .directed(true) .build(); // When/Then assertEquals("group", edge.getGroup()); assertEquals("source vertex", edge.getSource()); assertEquals("destination vertex", edge.getDestination()); assertTrue(edge.isDirected()); }
@Test public void shouldSetAndGetIdentifiersWithMatchedDestination() { // Given final Edge edge = new Edge.Builder() .group("group") .source("source vertex") .dest("destination vertex") .directed(true) .matchedVertex(EdgeId.MatchedVertex.DESTINATION) .build(); // When/Then assertEquals("destination vertex", edge.getMatchedVertexValue()); assertEquals("destination vertex", edge.getIdentifier(IdentifierType.MATCHED_VERTEX)); assertEquals("source vertex", edge.getIdentifier(IdentifierType.ADJACENT_MATCHED_VERTEX)); assertEquals("source vertex", edge.getAdjacentMatchedVertexValue()); assertTrue(edge.isDirected()); }
@Test public void shouldSetAndGetIdentifiersWithMatchedSource() { // Given final Edge edge = new Edge.Builder() .group("group") .source("source vertex") .dest("destination vertex") .directed(true) .matchedVertex(EdgeId.MatchedVertex.SOURCE) .build(); // When/Then assertEquals("source vertex", edge.getMatchedVertexValue()); assertEquals("source vertex", edge.getIdentifier(IdentifierType.MATCHED_VERTEX)); assertEquals("destination vertex", edge.getAdjacentMatchedVertexValue()); assertEquals("destination vertex", edge.getIdentifier(IdentifierType.ADJACENT_MATCHED_VERTEX)); assertTrue(edge.isDirected()); }
@Test public void shouldSetAndGetIdentifiersWithMatchedSourceIsNull() { // Given final Edge edge = new Edge.Builder() .group("group") .source("source vertex") .dest("destination vertex") .directed(true) .matchedVertex(null) .build(); // When/Then assertEquals("source vertex", edge.getMatchedVertexValue()); assertEquals("source vertex", edge.getIdentifier(IdentifierType.MATCHED_VERTEX)); assertEquals("destination vertex", edge.getIdentifier(IdentifierType.ADJACENT_MATCHED_VERTEX)); assertEquals("destination vertex", edge.getIdentifier(IdentifierType.ADJACENT_MATCHED_VERTEX)); assertTrue(edge.isDirected()); }
@Test public void shouldBuildEdge() { // Given final String source = "source vertex"; final String destination = "dest vertex"; final boolean directed = true; final String propValue = "propValue"; // When final Edge edge = new Edge.Builder() .group(TestGroups.EDGE) .source(source) .dest(destination) .directed(directed) .property(TestPropertyNames.STRING, propValue) .build(); // Then assertEquals(TestGroups.EDGE, edge.getGroup()); assertEquals(source, edge.getSource()); assertEquals(destination, edge.getDestination()); assertTrue(edge.isDirected()); assertEquals(propValue, edge.getProperty(TestPropertyNames.STRING)); }
@Test public void shouldReturnFalseForEqualsWhenSourceIsDifferent() { // Given final Edge edge1 = new Edge.Builder() .group("group") .source("source vertex") .dest("dest vertex") .directed(true) .build(); final Edge edge2 = new Edge.Builder() .group(edge1.getGroup()) .source("different source") .dest(edge1.getDestination()) .directed(edge1.isDirected()) .build(); // When boolean isEqual = edge1.equals((Object) edge2); // Then assertFalse(isEqual); assertFalse(edge1.hashCode() == edge2.hashCode()); }
@Test public void shouldReturnFalseForEqualsWhenDestinationIsDifferent() { // Given final Edge edge1 = new Edge.Builder().group("group") .source("source vertex") .dest("dest vertex") .directed(true) .build(); final Edge edge2 = new Edge.Builder() .group(edge1.getGroup()) .source(edge1.getSource()) .dest("different destination") .directed(edge1.isDirected()) .build(); // When boolean isEqual = edge1.equals((Object) edge2); // Then assertFalse(isEqual); assertFalse(edge1.hashCode() == edge2.hashCode()); }