// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.JunctionChecker.datastructure;
import java.util.ArrayList;
/**
* @author joerg
*/
public class OSMRelation extends OSMEntity {
private ArrayList<Member> members = new ArrayList<>();
public void setMembers(ArrayList<Member> members) {
this.members = members;
}
public ArrayList<Member> getMembers() {
return members;
}
/**
* gibt den Member mit der Rolle zurück, wenn vorhanden. Sonst null
*/
public OSMEntity getMember(String role) {
for (int i = 0; i < members.size(); i++) {
if (members.get(i).getRole().equals(role)) {
return members.get(i).getMember();
}
}
return null;
}
public void addMember(OSMEntity member, String role) {
members.add(new Member(member, role));
}
public String getRelationType(String key) {
return this.getValue(key);
}
@Override
public String toString() {
String s = ("Relation-ID: " + this.getId() + " Relation-Type: " + this.getRelationType("type") +"\n");
for (Member member : members) {
s += member.toString();
}
return s;
}
/**
* Klasse dient zum Verwalten eines Member-Objektes. Muß ein Objekt vom Typ OSMEntitysein.
* @author joerg
*/
static class Member {
private OSMEntity member;
private String role;
Member(OSMEntity member, String role) {
this.member = member;
this.setRole(role);
}
public Class<? extends OSMEntity> getType() {
return member.getClass();
}
public void setMember(OSMEntity member) {
this.member = member;
}
public OSMEntity getMember() {
return member;
}
public Long getId() {
return member.getId();
}
public void setRole(String role) {
this.role = role;
}
public String getRole() {
return role;
}
@Override
public String toString() {
return "Member: " + getRole() + ", ref:" + getId() + ", type:" + getType().getName();
}
}
}