package de.blau.android.osm;
import java.io.Serializable;
/**
* RelationMember stores the necessary information for a relation member, if the element field is null the element itself is not present
* (not downloaded typically) and only the osm id, type (needed to make the id unique) and role fields are stored.
* @author simon
*
*/
public class RelationMember implements Serializable {
private static final long serialVersionUID = 4L;
String type = null;
long ref = Long.MIN_VALUE;
String role = null;
private OsmElement element = null;
/**
* Constructor for members that have not been downloaded
*/
public RelationMember(final String t, final long id, final String r)
{
type = t;
ref = id;
role = r;
}
/**
* Constructor for members that have been downloaded
*/
public RelationMember(final String r, final OsmElement e)
{
role = r;
element = e;
}
/**
* Constructor for copying, assumes that only role changes
*/
public RelationMember(final RelationMember rm)
{
if (rm.element == null) {
type = rm.type;
ref = rm.ref;
role = new String(rm.role);
} else {
role = new String(rm.role);
element = rm.element;
}
}
public String getType() {
if (element != null)
{
return element.getName();
}
return type;
}
public long getRef() {
if (element != null)
{
return element.getOsmId();
}
return ref;
}
public String getRole() {
return role;
}
public void setRole(final String role) {
this.role = role;
}
/**
* @return the element if downloaded, null if it isn't
*/
public OsmElement getElement() {
return element;
}
/**
* set the element, used for post processing relations
* @param e
*/
public void setElement(final OsmElement e) {
element=e;
}
@Override
public String toString() {
return role + " " + type + " " + ref;
}
}