API Refactoring (moving to interfaces)

This commit is contained in:
Victor Shcherb 2013-01-27 01:38:11 +01:00
parent cffec1c653
commit 824dc02459
5 changed files with 54 additions and 24 deletions

View file

@ -1,5 +1,7 @@
package net.osmand;
import java.text.Collator;
import org.apache.commons.logging.Log;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@ -158,4 +160,31 @@ public class LogUtil {
public static XmlPullParser newXMLPullParser() throws XmlPullParserException {
return XmlPullParserFactory.newInstance().newPullParser();
}
public static net.osmand.Collator primaryCollator(){
final Collator instance = Collator.getInstance();
instance.setStrength(Collator.PRIMARY);
return new net.osmand.Collator() {
@Override
public int compare(Object o1, Object o2) {
return instance.compare(o1, o2);
}
@Override
public boolean equals(Object obj) {
return instance.equals(obj);
}
@Override
public boolean equals(String source, String target) {
return instance.equals(source, target);
}
@Override
public int compare(String source, String target) {
return instance.compare(source, target);
}
};
}
}

View file

@ -2,15 +2,14 @@ package net.osmand.plus;
import java.io.IOException;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;
import net.osmand.Collator;
import net.osmand.CollatorStringMatcher;
import net.osmand.CollatorStringMatcher.StringMatcherMode;
import net.osmand.LogUtil;
@ -41,11 +40,8 @@ public class RegionAddressRepositoryBinary implements RegionAddressRepository {
public RegionAddressRepositoryBinary(BinaryMapIndexReader file, String name) {
this.file = file;
this.region = name;
this.collator = Collator.getInstance(Locale.US);
this.collator.setStrength(Collator.PRIMARY); //ignores also case
Collator sortcollator = Collator.getInstance();
sortcollator.setStrength(Collator.PRIMARY); //ignores also case
this.postCodes = new TreeMap<String, City>(sortcollator);
this.collator = LogUtil.primaryCollator();
this.postCodes = new TreeMap<String, City>(LogUtil.primaryCollator());
}
@Override
@ -140,9 +136,10 @@ public class RegionAddressRepositoryBinary implements RegionAddressRepository {
if (/*name.length() >= 2 && Algoritms.containsDigit(name) && */searchVillages) {
// also try to identify postcodes
String uName = name.toUpperCase();
for (City code : file.getCities(region, BinaryMapIndexReader.buildAddressRequest(resultMatcher),
new CollatorStringMatcher(collator, uName, StringMatcherMode.CHECK_CONTAINS), false,
BinaryMapAddressReaderAdapter.POSTCODES_TYPE)) {
List<City> foundCities = file.getCities(region, BinaryMapIndexReader.buildAddressRequest(resultMatcher),
new CollatorStringMatcher(uName, StringMatcherMode.CHECK_CONTAINS), false,
BinaryMapAddressReaderAdapter.POSTCODES_TYPE);
for (City code : foundCities) {
citiesToFill.add(code);
if (resultMatcher.isCancelled()) {
return citiesToFill;
@ -165,9 +162,10 @@ public class RegionAddressRepositoryBinary implements RegionAddressRepository {
int initialsize = citiesToFill.size();
if (/*name.length() >= 3 && */searchVillages) {
for (City c : file.getCities(region, BinaryMapIndexReader.buildAddressRequest(resultMatcher),
new CollatorStringMatcher(collator, name,StringMatcherMode.CHECK_STARTS_FROM_SPACE), useEnglishNames,
BinaryMapAddressReaderAdapter.VILLAGES_TYPE)) {
List<City> foundCities = file.getCities(region, BinaryMapIndexReader.buildAddressRequest(resultMatcher),
new CollatorStringMatcher(name,StringMatcherMode.CHECK_STARTS_FROM_SPACE), useEnglishNames,
BinaryMapAddressReaderAdapter.VILLAGES_TYPE);
for (City c : foundCities) {
citiesToFill.add(c);
if (resultMatcher.isCancelled()) {
return citiesToFill;

View file

@ -1,15 +1,15 @@
package net.osmand.plus.activities.search;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import net.osmand.Collator;
import net.osmand.CollatorStringMatcher;
import net.osmand.CollatorStringMatcher.StringMatcherMode;
import net.osmand.LogUtil;
@ -87,8 +87,7 @@ public abstract class SearchByNameAbstractActivity<T> extends OsmandListActivity
final NamesAdapter namesAdapter = new NamesAdapter(new ArrayList<T>(), createComparator()); //$NON-NLS-1$
setListAdapter(namesAdapter);
collator = Collator.getInstance(Locale.US);
collator.setStrength(Collator.PRIMARY); //ignores also case
collator = LogUtil.primaryCollator();
progress = (ProgressBar) findViewById(R.id.ProgressBar);

View file

@ -1,12 +1,12 @@
package net.osmand.plus.activities.search;
import java.text.Collator;
import java.util.Collection;
import java.util.Comparator;
import java.util.List;
import net.osmand.CollatorStringMatcher;
import net.osmand.CollatorStringMatcher.StringMatcherMode;
import net.osmand.LogUtil;
import net.osmand.ResultMatcher;
import net.osmand.data.City;
import net.osmand.data.City.CityType;
@ -54,10 +54,9 @@ public class SearchCityByNameActivity extends SearchByNameAbstractActivity<City>
@Override
protected Comparator<? super City> createComparator() {
final Collator cs = Collator.getInstance();
final boolean en = getMyApplication().getSettings().usingEnglishNames();
final StringMatcherMode startsWith = CollatorStringMatcher.StringMatcherMode.CHECK_ONLY_STARTS_WITH;
return new CityComparator(startsWith, cs, en);
return new CityComparator(startsWith, en);
}
@Override
@ -175,13 +174,13 @@ public class SearchCityByNameActivity extends SearchByNameAbstractActivity<City>
private final class CityComparator implements Comparator<City> {
private final StringMatcherMode startsWith;
private final Collator cs;
private final net.osmand.Collator cs;
private final boolean en;
private CityComparator(StringMatcherMode startsWith, Collator cs,
private CityComparator(StringMatcherMode startsWith,
boolean en) {
this.startsWith = startsWith;
this.cs = cs;
this.cs = LogUtil.primaryCollator();
this.en = en;
}

View file

@ -6,6 +6,7 @@ import net.osmand.NativeLibrary;
import net.osmand.plus.render.OsmandRenderer.RenderingContext;
import net.osmand.render.RenderingRuleSearchRequest;
import net.osmand.render.RenderingRulesStorage;
import net.osmand.router.RouteSegmentResult;
import org.apache.commons.logging.Log;
@ -32,6 +33,9 @@ public class NativeOsmandLibrary extends NativeLibrary {
System.loadLibrary("gnustl_shared");
log.debug("Loading native cpufeatures_proxy..."); //$NON-NLS-1$
System.loadLibrary("cpufeatures_proxy");
// log.debug("Loading load routing test..."); //$NON-NLS-1$
// System.loadLibrary("routing_test_jar");
// testRoutingPing();
if(android.os.Build.VERSION.SDK_INT >= 8) {
log.debug("Loading jnigraphics, since Android >= 2.2 ..."); //$NON-NLS-1$
System.loadLibrary("jnigraphics");
@ -100,4 +104,5 @@ public class NativeOsmandLibrary extends NativeLibrary {
public static native int getCpuCount();
public static native boolean cpuHasNeonSupport();
}