2010-04-27 14:37:49 +02:00
|
|
|
package com.osmand.osm;
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
2010-04-27 23:42:19 +02:00
|
|
|
import com.osmand.osm.OSMSettings.OSMTagKey;
|
|
|
|
|
2010-04-27 14:37:49 +02:00
|
|
|
public abstract class Entity {
|
|
|
|
// lazy initializing
|
|
|
|
private Map<String, String> tags = null;
|
|
|
|
private final long id;
|
|
|
|
|
|
|
|
public Entity(long id) {
|
|
|
|
this.id = id;
|
|
|
|
}
|
|
|
|
|
|
|
|
public long getId() {
|
|
|
|
return id;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String putTag(String key, String value){
|
|
|
|
if(tags == null){
|
|
|
|
tags = new LinkedHashMap<String, String>();
|
|
|
|
}
|
|
|
|
return tags.put(key, value);
|
|
|
|
}
|
|
|
|
|
2010-04-27 23:42:19 +02:00
|
|
|
public String getTag(OSMTagKey key){
|
|
|
|
return getTag(key.getValue());
|
|
|
|
}
|
|
|
|
|
2010-04-27 14:37:49 +02:00
|
|
|
public String getTag(String key){
|
|
|
|
if(tags == null){
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
return tags.get(key);
|
|
|
|
}
|
|
|
|
|
|
|
|
public Map<String, String> getTags() {
|
2010-04-27 22:37:40 +02:00
|
|
|
if(tags == null){
|
|
|
|
return Collections.emptyMap();
|
|
|
|
}
|
2010-04-27 14:37:49 +02:00
|
|
|
return Collections.unmodifiableMap(tags);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Collection<String> getTagKeySet(){
|
|
|
|
if(tags == null){
|
|
|
|
return Collections.emptyList();
|
|
|
|
}
|
|
|
|
return tags.keySet();
|
|
|
|
}
|
|
|
|
|
|
|
|
public abstract void initializeLinks(Map<Long, Entity> entities);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return middle point for entity
|
|
|
|
*/
|
|
|
|
public abstract LatLon getLatLon();
|
|
|
|
|
2010-05-16 09:22:09 +02:00
|
|
|
|
|
|
|
public boolean isVirtual(){
|
|
|
|
return id < 0;
|
|
|
|
}
|
2010-04-27 14:37:49 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public int hashCode() {
|
2010-05-16 09:22:09 +02:00
|
|
|
if (id < 0) {
|
|
|
|
return System.identityHashCode(this);
|
|
|
|
}
|
2010-04-27 14:37:49 +02:00
|
|
|
return (int) id;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean equals(Object obj) {
|
|
|
|
if (this == obj)
|
|
|
|
return true;
|
|
|
|
if (obj == null)
|
|
|
|
return false;
|
|
|
|
if (getClass() != obj.getClass())
|
|
|
|
return false;
|
|
|
|
Entity other = (Entity) obj;
|
|
|
|
if (id != other.id)
|
|
|
|
return false;
|
2010-05-16 09:22:09 +02:00
|
|
|
// virtual are not equal
|
|
|
|
if(id < 0){
|
|
|
|
return false;
|
|
|
|
}
|
2010-04-27 14:37:49 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|