/** * Converts a RelationMember to a polygon if that member is an area. * * @param member * any RelationMember object * @return an polygon containing the geometry of member if it is an area, otherwise an empty * optional. */ private Optional<Polygon> toPolygon(final RelationMember member) { if (member.getEntity().getType().equals(ItemType.AREA)) { return Optional.of(((Area) member.getEntity()).asPolygon()); } return Optional.empty(); }
@Override public boolean equals(final Object other) { if (other instanceof TemporaryRelationMember) { final TemporaryRelationMember that = (TemporaryRelationMember) other; return this.getIdentifier() == that.getIdentifier() && this.getRole().equals(that.role) && this.getType().equals(that.getType()); } return false; }
/** * This check determines whether an entity is part of an associated street relation. * * @param object * An Atlas entity * @return True if the point is part of an associated street relation, false otherwise. */ private boolean hasAssociatedStreetRelation(final AtlasObject object) { final Point point = (Point) object; return point.relations().stream() .filter(relation -> Validators.isOfType(relation, RelationTypeTag.class, RelationTypeTag.ASSOCIATEDSTREET)) .anyMatch(relation -> relation.members().stream() .anyMatch(member -> member.getRole().equals(STREET_RELATION_ROLE) && member.getEntity().getType().equals(ItemType.EDGE))); } }
@Override public boolean equals(final Object other) { if (other instanceof TemporaryRelationMember) { final TemporaryRelationMember that = (TemporaryRelationMember) other; return this.getIdentifier() == that.getIdentifier() && this.getRole().equals(that.role) && this.getType().equals(that.getType()); } return false; }
@Override protected Optional<CheckFlag> flag(final AtlasObject object) { final Relation relation = (Relation) object; final RelationMemberList members = relation.members(); // If the number of members in the relation is 1 if (members.size() == 1) { if (members.get(0).getEntity().getType().equals(ItemType.RELATION)) { return Optional.of(createFlag(getRelationMembers((Relation) object), this.getLocalizedInstruction(2, relation.getOsmIdentifier(), members.get(0).getEntity().getOsmIdentifier()))); } // If the relation is a multi-polygon, if (relation.isMultiPolygon()) { return Optional.of(createFlag(getRelationMembers((Relation) object), this.getLocalizedInstruction(1, relation.getOsmIdentifier()))); } return Optional.of(createFlag(getRelationMembers((Relation) object), this.getLocalizedInstruction(0, relation.getOsmIdentifier()))); } return Optional.empty(); }