001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.data.vector; 003 004import java.util.Optional; 005 006import org.openstreetmap.josm.data.osm.INode; 007import org.openstreetmap.josm.data.osm.IRelation; 008import org.openstreetmap.josm.data.osm.IRelationMember; 009import org.openstreetmap.josm.data.osm.IWay; 010import org.openstreetmap.josm.data.osm.OsmPrimitiveType; 011import org.openstreetmap.josm.tools.CheckParameterUtil; 012 013/** 014 * Relation members for a Vector Relation 015 */ 016public class VectorRelationMember implements IRelationMember<VectorPrimitive> { 017 private final String role; 018 private final VectorPrimitive member; 019 020 /** 021 * Create a new relation member 022 * @param role The role of the member 023 * @param member The member primitive 024 */ 025 public VectorRelationMember(String role, VectorPrimitive member) { 026 CheckParameterUtil.ensureParameterNotNull(member, "member"); 027 this.role = Optional.ofNullable(role).orElse("").intern(); 028 this.member = member; 029 } 030 031 @Override 032 public String getRole() { 033 return this.role; 034 } 035 036 @Override 037 public boolean isNode() { 038 return this.member instanceof INode; 039 } 040 041 @Override 042 public boolean isWay() { 043 return this.member instanceof IWay; 044 } 045 046 @Override 047 public boolean isRelation() { 048 return this.member instanceof IRelation; 049 } 050 051 @Override 052 public VectorPrimitive getMember() { 053 return this.member; 054 } 055 056 @Override 057 public long getUniqueId() { 058 return this.member.getId(); 059 } 060 061 @Override 062 public OsmPrimitiveType getType() { 063 return this.member.getType(); 064 } 065 066 @Override 067 public boolean isNew() { 068 return this.member.isNew(); 069 } 070}