Merge branch 'r3.7'
This commit is contained in:
commit
f54e7c8cb1
2 changed files with 258 additions and 197 deletions
|
@ -0,0 +1,111 @@
|
||||||
|
package net.osmand.search;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import net.osmand.OsmAndCollator;
|
||||||
|
import net.osmand.data.LatLon;
|
||||||
|
import net.osmand.search.SearchUICore.SearchResultCollection;
|
||||||
|
import net.osmand.search.core.SearchPhrase;
|
||||||
|
import net.osmand.search.core.SearchResult;
|
||||||
|
import net.osmand.search.core.SearchSettings;
|
||||||
|
import net.osmand.util.MapUtils;
|
||||||
|
|
||||||
|
public class SearchUICoreGenericTest {
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUp() {
|
||||||
|
SearchUICoreTest.defaultSetup();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDuplicates() throws IOException {
|
||||||
|
SearchSettings ss = new SearchSettings((SearchSettings)null);
|
||||||
|
ss = ss.setOriginalLocation(new LatLon(0, 0));
|
||||||
|
SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
|
||||||
|
SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
|
||||||
|
List<SearchResult> rs = new ArrayList<>();
|
||||||
|
SearchResult a1 = searchResult(rs, phrase, "a", 100);
|
||||||
|
SearchResult b2 = searchResult(rs, phrase, "b", 200);
|
||||||
|
SearchResult b1 = searchResult(rs, phrase, "b", 100);
|
||||||
|
/*SearchResult a3 = */ searchResult(rs, phrase, "a", 100);
|
||||||
|
cll.addSearchResults(rs, true, true);
|
||||||
|
Assert.assertEquals(3, cll.getCurrentSearchResults().size());
|
||||||
|
Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
|
||||||
|
Assert.assertSame(b1, cll.getCurrentSearchResults().get(1));
|
||||||
|
Assert.assertSame(b2, cll.getCurrentSearchResults().get(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoResort() throws IOException {
|
||||||
|
SearchSettings ss = new SearchSettings((SearchSettings)null);
|
||||||
|
ss = ss.setOriginalLocation(new LatLon(0, 0));
|
||||||
|
SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
|
||||||
|
SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
|
||||||
|
List<SearchResult> rs = new ArrayList<>();
|
||||||
|
SearchResult a1 = searchResult(rs, phrase, "a", 100);
|
||||||
|
cll.addSearchResults(rs, false, true);
|
||||||
|
rs.clear();
|
||||||
|
|
||||||
|
SearchResult b2 = searchResult(rs, phrase, "b", 200);
|
||||||
|
cll.addSearchResults(rs, false, true);
|
||||||
|
rs.clear();
|
||||||
|
|
||||||
|
SearchResult b1 = searchResult(rs, phrase, "b", 100);
|
||||||
|
cll.addSearchResults(rs, false, true);
|
||||||
|
rs.clear();
|
||||||
|
|
||||||
|
/*SearchResult a3 = */ searchResult(rs, phrase, "a", 100);
|
||||||
|
cll.addSearchResults(rs, false, true);
|
||||||
|
rs.clear();
|
||||||
|
|
||||||
|
Assert.assertEquals(3, cll.getCurrentSearchResults().size());
|
||||||
|
Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
|
||||||
|
Assert.assertSame(b2, cll.getCurrentSearchResults().get(1));
|
||||||
|
Assert.assertSame(b1, cll.getCurrentSearchResults().get(2));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNoResortDuplicate() throws IOException {
|
||||||
|
SearchSettings ss = new SearchSettings((SearchSettings)null);
|
||||||
|
ss = ss.setOriginalLocation(new LatLon(0, 0));
|
||||||
|
SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
|
||||||
|
SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
|
||||||
|
List<SearchResult> rs = new ArrayList<>();
|
||||||
|
SearchResult a1 = searchResult(rs, phrase, "a", 100);
|
||||||
|
SearchResult b2 = searchResult(rs, phrase, "b", 200);
|
||||||
|
SearchResult b1 = searchResult(rs, phrase, "b", 100);
|
||||||
|
cll.addSearchResults(rs, false, true);
|
||||||
|
rs.clear();
|
||||||
|
/*SearchResult a3 = */ searchResult(rs, phrase, "a", 100);
|
||||||
|
cll.addSearchResults(rs, false, true);
|
||||||
|
rs.clear();
|
||||||
|
|
||||||
|
Assert.assertEquals(3, cll.getCurrentSearchResults().size());
|
||||||
|
Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
|
||||||
|
Assert.assertSame(b1, cll.getCurrentSearchResults().get(1));
|
||||||
|
Assert.assertSame(b2, cll.getCurrentSearchResults().get(2));
|
||||||
|
}
|
||||||
|
|
||||||
|
private SearchResult searchResult(List<SearchResult> rs, SearchPhrase phrase, String text, int dist) {
|
||||||
|
SearchResult res = new SearchResult(phrase);
|
||||||
|
res.localeName = text;
|
||||||
|
double d1 = MapUtils.getDistance(0, 0, 0, 1);
|
||||||
|
res.location = new LatLon(0, dist / d1);
|
||||||
|
rs.add(res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,34 +1,10 @@
|
||||||
package net.osmand.search;
|
package net.osmand.search;
|
||||||
|
|
||||||
import net.osmand.OsmAndCollator;
|
|
||||||
import net.osmand.ResultMatcher;
|
|
||||||
import net.osmand.binary.BinaryMapIndexReader;
|
|
||||||
import net.osmand.data.Amenity;
|
|
||||||
import net.osmand.data.Building;
|
|
||||||
import net.osmand.data.City;
|
|
||||||
import net.osmand.data.LatLon;
|
|
||||||
import net.osmand.data.MapObject;
|
|
||||||
import net.osmand.data.Street;
|
|
||||||
import net.osmand.osm.AbstractPoiType;
|
|
||||||
import net.osmand.osm.MapPoiTypes;
|
|
||||||
import net.osmand.search.SearchUICore.SearchResultCollection;
|
|
||||||
import net.osmand.search.SearchUICore.SearchResultMatcher;
|
|
||||||
import net.osmand.search.core.SearchPhrase;
|
|
||||||
import net.osmand.search.core.SearchResult;
|
|
||||||
import net.osmand.search.core.SearchSettings;
|
|
||||||
import net.osmand.util.Algorithms;
|
|
||||||
import net.osmand.util.MapUtils;
|
|
||||||
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONException;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
import org.junit.Assert;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FilenameFilter;
|
import java.io.FilenameFilter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.Reader;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -36,16 +12,61 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
public class SearchCoreUITest {
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.Parameterized;
|
||||||
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
|
||||||
|
import net.osmand.OsmAndCollator;
|
||||||
|
import net.osmand.ResultMatcher;
|
||||||
|
import net.osmand.binary.BinaryMapIndexReader;
|
||||||
|
import net.osmand.data.Amenity;
|
||||||
|
import net.osmand.data.Building;
|
||||||
|
import net.osmand.data.City;
|
||||||
|
import net.osmand.data.MapObject;
|
||||||
|
import net.osmand.data.Street;
|
||||||
|
import net.osmand.osm.AbstractPoiType;
|
||||||
|
import net.osmand.osm.MapPoiTypes;
|
||||||
|
import net.osmand.router.RouteTestingTest;
|
||||||
|
import net.osmand.router.TestEntry;
|
||||||
|
import net.osmand.search.SearchUICore.SearchResultCollection;
|
||||||
|
import net.osmand.search.SearchUICore.SearchResultMatcher;
|
||||||
|
import net.osmand.search.core.SearchPhrase;
|
||||||
|
import net.osmand.search.core.SearchResult;
|
||||||
|
import net.osmand.search.core.SearchSettings;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
@RunWith(Parameterized.class)
|
||||||
|
public class SearchUICoreTest {
|
||||||
|
|
||||||
private static final String SEARCH_RESOURCES_PATH = "src/test/resources/search/";
|
private static final String SEARCH_RESOURCES_PATH = "src/test/resources/search/";
|
||||||
private static Map<String, String> enPhrases = new HashMap<>();
|
|
||||||
private static Map<String, String> phrases = new HashMap<>();
|
|
||||||
|
|
||||||
static {
|
private File testFile;
|
||||||
|
|
||||||
|
public SearchUICoreTest(String name, File file) {
|
||||||
|
this.testFile = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setUp() {
|
||||||
|
defaultSetup();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void defaultSetup() {
|
||||||
MapPoiTypes.setDefault(new MapPoiTypes("src/test/resources/poi_types.xml"));
|
MapPoiTypes.setDefault(new MapPoiTypes("src/test/resources/poi_types.xml"));
|
||||||
MapPoiTypes poiTypes = MapPoiTypes.getDefault();
|
MapPoiTypes poiTypes = MapPoiTypes.getDefault();
|
||||||
|
Map<String, String> enPhrases = new HashMap<>();
|
||||||
|
Map<String, String> phrases = new HashMap<>();
|
||||||
try {
|
try {
|
||||||
enPhrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/en/phrases.xml"));
|
enPhrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/en/phrases.xml"));
|
||||||
//phrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/ru/phrases.xml"));
|
//phrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/ru/phrases.xml"));
|
||||||
|
@ -56,178 +77,29 @@ public class SearchCoreUITest {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
poiTypes.setPoiTranslator(new MapPoiTypes.PoiTranslator() {
|
poiTypes.setPoiTranslator(new TestSearchTranslator(phrases, enPhrases));
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getTranslation(AbstractPoiType type) {
|
|
||||||
AbstractPoiType baseLangType = type.getBaseLangType();
|
|
||||||
if (baseLangType != null) {
|
|
||||||
return getTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")";
|
|
||||||
}
|
|
||||||
return getTranslation(type.getIconKeyName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getTranslation(String keyName) {
|
|
||||||
String val = phrases.get("poi_" + keyName);
|
|
||||||
if (val != null) {
|
|
||||||
int ind = val.indexOf(';');
|
|
||||||
if (ind > 0) {
|
|
||||||
return val.substring(0, ind);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getSynonyms(AbstractPoiType type) {
|
|
||||||
AbstractPoiType baseLangType = type.getBaseLangType();
|
|
||||||
if (baseLangType != null) {
|
|
||||||
return getSynonyms(baseLangType);
|
|
||||||
}
|
|
||||||
return getSynonyms(type.getIconKeyName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Parameterized.Parameters(name = "{index}: {0}")
|
||||||
public String getSynonyms(String keyName) {
|
public static Iterable<Object[]> data() throws IOException {
|
||||||
String val = phrases.get("poi_" + keyName);
|
final File[] files = new File(SEARCH_RESOURCES_PATH).listFiles();
|
||||||
if (val != null) {
|
ArrayList<Object[]> arrayList = new ArrayList<>();
|
||||||
int ind = val.indexOf(';');
|
|
||||||
if (ind > 0) {
|
|
||||||
return val.substring(ind + 1);
|
|
||||||
}
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getEnTranslation(AbstractPoiType type) {
|
|
||||||
AbstractPoiType baseLangType = type.getBaseLangType();
|
|
||||||
if (baseLangType != null) {
|
|
||||||
return getEnTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")";
|
|
||||||
}
|
|
||||||
return getEnTranslation(type.getIconKeyName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getEnTranslation(String keyName) {
|
|
||||||
if (enPhrases.isEmpty()) {
|
|
||||||
return Algorithms.capitalizeFirstLetter(keyName.replace('_', ' '));
|
|
||||||
}
|
|
||||||
String val = enPhrases.get("poi_" + keyName);
|
|
||||||
if (val != null) {
|
|
||||||
int ind = val.indexOf(';');
|
|
||||||
if (ind > 0) {
|
|
||||||
return val.substring(0, ind);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDuplicates() throws IOException {
|
|
||||||
SearchSettings ss = new SearchSettings((SearchSettings)null);
|
|
||||||
ss = ss.setOriginalLocation(new LatLon(0, 0));
|
|
||||||
SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
|
|
||||||
SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
|
|
||||||
List<SearchResult> rs = new ArrayList<>();
|
|
||||||
SearchResult a1 = searchResult(rs, phrase, "a", 100);
|
|
||||||
SearchResult b2 = searchResult(rs, phrase, "b", 200);
|
|
||||||
SearchResult b1 = searchResult(rs, phrase, "b", 100);
|
|
||||||
/*SearchResult a3 = */ searchResult(rs, phrase, "a", 100);
|
|
||||||
cll.addSearchResults(rs, true, true);
|
|
||||||
Assert.assertEquals(3, cll.getCurrentSearchResults().size());
|
|
||||||
Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
|
|
||||||
Assert.assertSame(b1, cll.getCurrentSearchResults().get(1));
|
|
||||||
Assert.assertSame(b2, cll.getCurrentSearchResults().get(2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testNoResort() throws IOException {
|
|
||||||
SearchSettings ss = new SearchSettings((SearchSettings)null);
|
|
||||||
ss = ss.setOriginalLocation(new LatLon(0, 0));
|
|
||||||
SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
|
|
||||||
SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
|
|
||||||
List<SearchResult> rs = new ArrayList<>();
|
|
||||||
SearchResult a1 = searchResult(rs, phrase, "a", 100);
|
|
||||||
cll.addSearchResults(rs, false, true);
|
|
||||||
rs.clear();
|
|
||||||
|
|
||||||
SearchResult b2 = searchResult(rs, phrase, "b", 200);
|
|
||||||
cll.addSearchResults(rs, false, true);
|
|
||||||
rs.clear();
|
|
||||||
|
|
||||||
SearchResult b1 = searchResult(rs, phrase, "b", 100);
|
|
||||||
cll.addSearchResults(rs, false, true);
|
|
||||||
rs.clear();
|
|
||||||
|
|
||||||
/*SearchResult a3 = */ searchResult(rs, phrase, "a", 100);
|
|
||||||
cll.addSearchResults(rs, false, true);
|
|
||||||
rs.clear();
|
|
||||||
|
|
||||||
Assert.assertEquals(3, cll.getCurrentSearchResults().size());
|
|
||||||
Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
|
|
||||||
Assert.assertSame(b2, cll.getCurrentSearchResults().get(1));
|
|
||||||
Assert.assertSame(b1, cll.getCurrentSearchResults().get(2));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testNoResortDuplicate() throws IOException {
|
|
||||||
SearchSettings ss = new SearchSettings((SearchSettings)null);
|
|
||||||
ss = ss.setOriginalLocation(new LatLon(0, 0));
|
|
||||||
SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator());
|
|
||||||
SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase);
|
|
||||||
List<SearchResult> rs = new ArrayList<>();
|
|
||||||
SearchResult a1 = searchResult(rs, phrase, "a", 100);
|
|
||||||
SearchResult b2 = searchResult(rs, phrase, "b", 200);
|
|
||||||
SearchResult b1 = searchResult(rs, phrase, "b", 100);
|
|
||||||
cll.addSearchResults(rs, false, true);
|
|
||||||
rs.clear();
|
|
||||||
/*SearchResult a3 = */ searchResult(rs, phrase, "a", 100);
|
|
||||||
cll.addSearchResults(rs, false, true);
|
|
||||||
rs.clear();
|
|
||||||
|
|
||||||
Assert.assertEquals(3, cll.getCurrentSearchResults().size());
|
|
||||||
Assert.assertSame(a1, cll.getCurrentSearchResults().get(0));
|
|
||||||
Assert.assertSame(b1, cll.getCurrentSearchResults().get(1));
|
|
||||||
Assert.assertSame(b2, cll.getCurrentSearchResults().get(2));
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private SearchResult searchResult(List<SearchResult> rs, SearchPhrase phrase, String text, int dist) {
|
|
||||||
SearchResult res = new SearchResult(phrase);
|
|
||||||
res.localeName = text;
|
|
||||||
double d1 = MapUtils.getDistance(0, 0, 0, 1);
|
|
||||||
res.location = new LatLon(0, dist / d1);
|
|
||||||
rs.add(res);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testSearchJsons() throws IOException {
|
|
||||||
final File[] files = new File(SEARCH_RESOURCES_PATH).listFiles(new FilenameFilter() {
|
|
||||||
@Override
|
|
||||||
public boolean accept(File dir, String filename) {
|
|
||||||
return filename.endsWith(".json");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (files != null) {
|
if (files != null) {
|
||||||
for (File f : files) {
|
for (File file : files) {
|
||||||
testSearchImpl(f);
|
String fileName = file.getName();
|
||||||
|
if(fileName.endsWith(".json")) {
|
||||||
|
String name = fileName.substring(0, fileName.length() - ".json".length());
|
||||||
|
arrayList.add(new Object[] {name, file});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return arrayList;
|
||||||
|
}
|
||||||
|
|
||||||
private void testSearchImpl(File jsonFile) throws IOException, JSONException {
|
@Test
|
||||||
|
public void testSearchImpl() throws IOException, JSONException {
|
||||||
|
File jsonFile = testFile;
|
||||||
String sourceJsonText = Algorithms.getFileAsString(jsonFile);
|
String sourceJsonText = Algorithms.getFileAsString(jsonFile);
|
||||||
Assert.assertNotNull(sourceJsonText);
|
Assert.assertNotNull(sourceJsonText);
|
||||||
Assert.assertTrue(sourceJsonText.length() > 0);
|
Assert.assertTrue(sourceJsonText.length() > 0);
|
||||||
|
@ -316,6 +188,84 @@ public class SearchCoreUITest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class TestSearchTranslator implements MapPoiTypes.PoiTranslator {
|
||||||
|
|
||||||
|
private Map<String, String> enPhrases;
|
||||||
|
private Map<String, String> phrases;
|
||||||
|
public TestSearchTranslator(Map<String, String> phrases, Map<String, String> enPhrases) {
|
||||||
|
this.phrases = phrases;
|
||||||
|
this.enPhrases = enPhrases;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTranslation(AbstractPoiType type) {
|
||||||
|
AbstractPoiType baseLangType = type.getBaseLangType();
|
||||||
|
if (baseLangType != null) {
|
||||||
|
return getTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")";
|
||||||
|
}
|
||||||
|
return getTranslation(type.getIconKeyName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTranslation(String keyName) {
|
||||||
|
String val = phrases.get("poi_" + keyName);
|
||||||
|
if (val != null) {
|
||||||
|
int ind = val.indexOf(';');
|
||||||
|
if (ind > 0) {
|
||||||
|
return val.substring(0, ind);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSynonyms(AbstractPoiType type) {
|
||||||
|
AbstractPoiType baseLangType = type.getBaseLangType();
|
||||||
|
if (baseLangType != null) {
|
||||||
|
return getSynonyms(baseLangType);
|
||||||
|
}
|
||||||
|
return getSynonyms(type.getIconKeyName());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getSynonyms(String keyName) {
|
||||||
|
String val = phrases.get("poi_" + keyName);
|
||||||
|
if (val != null) {
|
||||||
|
int ind = val.indexOf(';');
|
||||||
|
if (ind > 0) {
|
||||||
|
return val.substring(ind + 1);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEnTranslation(AbstractPoiType type) {
|
||||||
|
AbstractPoiType baseLangType = type.getBaseLangType();
|
||||||
|
if (baseLangType != null) {
|
||||||
|
return getEnTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")";
|
||||||
|
}
|
||||||
|
return getEnTranslation(type.getIconKeyName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEnTranslation(String keyName) {
|
||||||
|
if (enPhrases.isEmpty()) {
|
||||||
|
return Algorithms.capitalizeFirstLetter(keyName.replace('_', ' '));
|
||||||
|
}
|
||||||
|
String val = enPhrases.get("poi_" + keyName);
|
||||||
|
if (val != null) {
|
||||||
|
int ind = val.indexOf(';');
|
||||||
|
if (ind > 0) {
|
||||||
|
return val.substring(0, ind);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private static class BinaryMapIndexReaderTest extends BinaryMapIndexReader {
|
private static class BinaryMapIndexReaderTest extends BinaryMapIndexReader {
|
||||||
|
|
||||||
List<Amenity> amenities = Collections.emptyList();
|
List<Amenity> amenities = Collections.emptyList();
|
Loading…
Reference in a new issue