// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data.osm;
import java.util.ArrayList;
import java.util.List;
import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
/**
* Relation data.
* @since 2284
*/
public class RelationData extends PrimitiveData implements IRelation {
private static final long serialVersionUID = 1163664954890478565L;
private List<RelationMemberData> members = new ArrayList<>();
/**
* Constructs a new {@code RelationData}.
*/
public RelationData() {
// contents can be set later with setters
}
/**
* Constructs a new {@code RelationData}.
* @param data relation data to copy
*/
public RelationData(RelationData data) {
super(data);
members.addAll(data.members);
}
/**
* Returns relation members.
* @return relation members
*/
public List<RelationMemberData> getMembers() {
return members;
}
/**
* Sets relation members.
* @param memberData relation members
*/
public void setMembers(List<RelationMemberData> memberData) {
members = new ArrayList<>(memberData);
}
@Override
public int getMembersCount() {
return members.size();
}
@Override
public long getMemberId(int idx) {
return members.get(idx).getMemberId();
}
@Override
public String getRole(int idx) {
return members.get(idx).getRole();
}
@Override
public OsmPrimitiveType getMemberType(int idx) {
return members.get(idx).getMemberType();
}
@Override
public RelationData makeCopy() {
return new RelationData(this);
}
@Override
public String toString() {
return super.toString() + " REL " + members;
}
@Override
public OsmPrimitiveType getType() {
return OsmPrimitiveType.RELATION;
}
@Override
public void accept(PrimitiveVisitor visitor) {
visitor.visit(this);
}
}