OsmAnd/OsmAnd-java/src/net/osmand/data/Street.java

99 lines
2.2 KiB
Java
Raw Normal View History

package net.osmand.data;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.osmand.util.Algorithms;
public class Street extends MapObject {
2016-06-06 12:16:23 +02:00
protected List<Building> buildings = new ArrayList<Building>();
protected List<Street> intersectedStreets = null;
protected final City city;
public Street(City city) {
this.city = city;
}
2016-06-06 12:16:23 +02:00
public void addBuilding(Building building) {
buildings.add(building);
}
2016-06-06 12:16:23 +02:00
public List<Street> getIntersectedStreets() {
2016-06-06 12:16:23 +02:00
if (intersectedStreets == null) {
return Collections.emptyList();
}
return intersectedStreets;
}
2016-06-06 12:16:23 +02:00
public void addIntersectedStreet(Street s) {
if (intersectedStreets == null) {
intersectedStreets = new ArrayList<Street>();
}
intersectedStreets.add(s);
}
2016-06-06 12:16:23 +02:00
public void addBuildingCheckById(Building building) {
for (Building b : buildings) {
2016-08-04 09:28:49 +02:00
if (b.equals(building)) {
return;
}
}
buildings.add(building);
}
2016-06-06 12:16:23 +02:00
public List<Building> getBuildings() {
return buildings;
}
2016-06-06 12:16:23 +02:00
public City getCity() {
return city;
}
2016-06-06 12:16:23 +02:00
public void sortBuildings() {
Collections.sort(buildings, new Comparator<Building>() {
@Override
public int compare(Building o1, Building o2) {
String s1 = o1.getName();
String s2 = o2.getName();
int i1 = Algorithms.extractFirstIntegerNumber(s1);
int i2 = Algorithms.extractFirstIntegerNumber(s2);
2016-06-06 12:16:23 +02:00
if (i1 == i2) {
String t1 = Algorithms.extractIntegerSuffix(s1);
String t2 = Algorithms.extractIntegerSuffix(s2);
return t1.compareTo(t2);
}
return i1 - i2;
}
});
}
2016-06-06 12:16:23 +02:00
2015-06-29 17:26:32 +02:00
/// GENERATION
2016-06-06 12:16:23 +02:00
public void mergeWith(Street street) {
buildings.addAll(street.getBuildings());
2015-06-29 17:26:32 +02:00
copyNames(street);
}
public String getNameWithoutCityPart(String lang, boolean transliterate) {
String nm = getName(lang, transliterate);
2015-06-29 17:26:32 +02:00
int t = nm.lastIndexOf('(');
if (t > 0) {
return nm.substring(0, t).trim();
2015-06-29 17:26:32 +02:00
}
return nm;
}
public boolean compareStreet(Street thatObj) {
boolean res = this.location.equals(thatObj.location);
if (res) {
res = this.getNameWithoutCityPart("en", true).equals(thatObj.getNameWithoutCityPart("en", true));
}
return res;
}
}