Merge "Some code refactoring"

This commit is contained in:
Fabrice Di Meglio
2014-04-11 01:00:52 +00:00
committed by Android (Google) Code Review
2 changed files with 65 additions and 57 deletions

View File

@@ -530,7 +530,7 @@ public class Index {
private void indexOneResource(SQLiteDatabase database, String localeStr, private void indexOneResource(SQLiteDatabase database, String localeStr,
SearchIndexableResource sir) { SearchIndexableResource sir) {
if (sir.xmlResId > 0) { if (sir.xmlResId > SearchIndexableResources.NO_DATA_RES_ID) {
indexFromResource(sir.context, database, localeStr, indexFromResource(sir.context, database, localeStr,
sir.xmlResId, sir.className, sir.iconResId, sir.rank, sir.xmlResId, sir.className, sir.iconResId, sir.rank,
sir.intentAction, sir.intentTargetPackage, sir.intentTargetClass); sir.intentAction, sir.intentTargetPackage, sir.intentTargetClass);
@@ -646,14 +646,31 @@ public class Index {
raw.key); raw.key);
} }
private void indexFromLocalProvider(SQLiteDatabase database, String localeStr, private Indexable.SearchIndexProvider getSearchIndexProvider(String className) {
SearchIndexableResource sir) {
try { try {
final Class<?> clazz = Class.forName(sir.className); final Class<?> clazz = Class.forName(className);
if (Indexable.class.isAssignableFrom(clazz)) { if (Indexable.class.isAssignableFrom(clazz)) {
final Field f = clazz.getField(FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER); final Field f = clazz.getField(FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER);
final Indexable.SearchIndexProvider provider = return (Indexable.SearchIndexProvider) f.get(null);
(Indexable.SearchIndexProvider) f.get(null); }
} catch (ClassNotFoundException e) {
Log.e(LOG_TAG, "Cannot find class: " + className, e);
} catch (NoSuchFieldException e) {
Log.e(LOG_TAG, "Cannot find field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'", e);
} catch (IllegalAccessException e) {
Log.e(LOG_TAG,
"Illegal access to field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'", e);
}
return null;
}
private void indexFromLocalProvider(SQLiteDatabase database, String localeStr,
SearchIndexableResource sir) {
final Indexable.SearchIndexProvider provider = getSearchIndexProvider(sir.className);
if (provider == null) {
Log.w(LOG_TAG, "Cannot find provider: " + sir.className);
return;
}
final List<SearchIndexableRaw> rawList = final List<SearchIndexableRaw> rawList =
provider.getRawDataToIndex(sir.context, sir.enabled); provider.getRawDataToIndex(sir.context, sir.enabled);
@@ -704,15 +721,6 @@ public class Index {
} }
} }
} }
} catch (ClassNotFoundException e) {
Log.e(LOG_TAG, "Cannot find class: " + sir.className, e);
} catch (NoSuchFieldException e) {
Log.e(LOG_TAG, "Cannot find field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'", e);
} catch (IllegalAccessException e) {
Log.e(LOG_TAG,
"Illegal access to field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'", e);
}
}
private void updateOneRowWithFilteredData(SQLiteDatabase database, String locale, private void updateOneRowWithFilteredData(SQLiteDatabase database, String locale,
String title, String summaryOn, String summaryOff, String entries, String title, String summaryOn, String summaryOff, String entries,

View File

@@ -47,7 +47,7 @@ import java.util.HashMap;
public final class SearchIndexableResources { public final class SearchIndexableResources {
private static int NO_DATA_RES_ID = 0; public static int NO_DATA_RES_ID = 0;
private static final int RANK_WIFI = 1; private static final int RANK_WIFI = 1;
private static final int RANK_BT = 2; private static final int RANK_BT = 2;