package de.blau.android.osm;
import de.blau.android.App;
/*
* RelationMemberDescritption is an extended version of RelationMember that holds a textual description of the element
* instead of the element itself
*/
public class RelationMemberDescription extends RelationMember {
private static final long serialVersionUID = 1104911642016294268L;
private String description = null;
private boolean downloaded = false;
public RelationMemberDescription(final RelationMember rm) {
super(rm.getElement() != null ? rm.getElement().getName() : rm.getType(), rm.getElement() != null ? rm.getElement().getOsmId() : rm.getRef(), rm.getRole());
OsmElement e = rm.getElement();
if (e != null) {
description = e.getDescription(false);
downloaded = true;
} else {
description = "#" + ref;
}
}
public RelationMemberDescription(final String t, final long id, final String r, final String d) {
super(t, id, r);
description = d;
}
public String getDescription() {
return description;
}
public boolean downloaded() {
return downloaded;
}
/**
* If an downloaded element is present update description and downloaded status
*/
public void update() {
OsmElement e = getElement();
if (e != null) {
description = e.getDescription(false);
downloaded = true;
}
}
/**
* This returns (if present), the element directly from storage
*/
@Override
public OsmElement getElement() {
return super.getElement()==null ? App.getDelegator().getOsmElement(getType(), getRef()):super.getElement();
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
return o instanceof RelationMemberDescription
&& ref == ((RelationMemberDescription) o).ref
&& type.equals(((RelationMemberDescription) o).type)
&& ((role == null && ((RelationMemberDescription) o).role == null) || (role != null && role.equals(((RelationMemberDescription) o).role)));
}
@Override
public int hashCode() {
int result = 17;
result = 37 * result + (int)(ref ^ (ref >>> 32));
result = 37 * result + (type == null ? 0 : type.hashCode());
result = 37 * result + (role == null ? 0 : role.hashCode());
return result;
}
}